{FILE *fpa,*fpb;
If((fpa=fopen(“t.c”,”r”))==NULL){ printf(“Can?t open file a.txt !\\n”); exit(0); }
If((fpb=fopen(“b.txt”,”w”))==NULL){ printf(“Can?t open file b.txt!\\n”); exit(0); }
while(!feof(fpa)) fputc(fgetc(fpa),fpb); fclose(fpa);fclose(fpb); }
四、程序填空题(每空2分,共40分)
6. 读入1个正实数eps,计算并输出1-1/3+1/5-1/7+??,直到最后一项的绝对值小于eps。
# include
# include
scanf(“%le”,&eps); sum=0;item=flag=temp=1; while(fabs(item)>eps){ sum=sum+item;
temp= (1) ; (2) ; item= (3) *flag/temp;
}
printf(\ }
2.输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。 #include
void main()
{int blan=0,digit=0,latter=0,other=0; char c;
c=getchar();
while( (4) ){ if( (5) )/* 判断英文字母 */ leter++;
else if( (6) )/* 判断数字字符 */ digit++;
else if( (7) )/* 判断空格 */ blank++; else
other++;
(8) ; }
printf(“letter=%d,blank+%d,digit=%d.other=%d\\n”,letter,blank,digit,other); }
3.a是一个3X3的矩阵,输入a的元素,如果a是下三角矩阵,输出\否则,输出\下 三角矩阵即主对角线以上的元素都为0,主对角线为从矩阵的左上角至右下角的连线)。
#include
for( (10) ;k<3;k++) if( (11) ){ (12) ; break;
}
if(flag)printf(“YES\\n”);
else printf(“NO\\n”); }
4. 定义函数f(numbe),它的功能是返回number的逆序数.’例如f(-123)的返回值是-321。 long f(long number) {int flag,digit; long res=0;
flag=number<0?-1:1;
if(number<0)number=-number; while(number!=0){
(13) ; number/=10;
}
(14) ; }
5. 编写一个函数delchar(s,c),该函数将字符串s中出现的所有c字符删除。 void delchar(char s[],char c) { int j=0,k=0;
while(s[j]!=?\\0?){
if(s[j]!=c){ s[k]=s[j];
(15) ; }
(16) ;
}
(17) ; }
6. 请仔细阅读函数f1,然后在函数f2中填入正确的内容,使函数f1和函数f2有相同的功能。
void f1(char s[],char t[])
{int j=0,k=0;
while(s[j]!=?\\0?)j++;
while((s[j++]=t[k++])!=?\\0?) ; }
void f2(char *s,char *t) {while( (18) ) (19) ++; while( (20) ) ; }
2004试卷答案 一.单项选择题(每题1分,共10分)
1.C 2.B 3.A 4.C 5.C 6.A 7.C 8.D 9.D 10.B
二、填空题(每题2分,共20分)
33. s*(s-a)*(s-b)*(s-c) 34. 0 35. 1 36. 3 37. 36 38. 6 39. 3,2 40. WO,T
41. 0 3
42. typedef int *PA;
三、程序阅读题(每题5分,共30分)
10. Pass 2. 7#-21#10#0# 3. 101 4. 120 5. you? 6. 把t.c文件复制成b.txt文件
四、程序(段)填空题(每空2分,共40分)
(1) temp+2 (2) flag=-flag
(3) 1.0 (4) c!=?\\n?
(5) c>=?a?&&c<=?z?||c>=?A?&&c<=?Z? (6) c>=?0?&&c<=?9? (7) c==? ? (8) c=getchar()
(9) flag=1 (10) k=i+1 (11) a[i][k]!=0 (12) flag=0
(13) res=res*10+number (14) return flag*res (15) k++ (16) j++ (17) s[k]='\\0' (18) *s!='\\0' (19) s (20) *s++=*t++
2002~2003学年“C程序设计基础”试卷
考试时间: 2003年6月20日上午8:30-10:30
姓名___________________ 学号___________________ 成绩____________________
一.单项选择题(每题1分,共10分)
6. 下列运算符中,优先级最低是______。
A.<<
B.!=
C.&& C.10 C.!x>0||!y>0 C.!EOF
D.+= D.1.0
D.!(x>0)||!(y>0) D.NULL D.2 D.a,b D.a++
2. 以下选项中不正确的整型常量是______。
A.0xa B.010L 3. 表达式!(x>0||y>0)等价于______。 A.!(x>0)&&!(y>0) B.!x>0&&!y>0 4. 表达式______的值不是0。
A.1/2 B.!?\\0?
5. 若x是浮点型变量,表达式(x=10/4)的值是______。 A.2.5 B.2.0 C. 3
6. 若变量已正确定义并赋值,表达式_____不正确。
A.a&b A.a[9]
B.a^b B.p[5]
C.&&x C.*p++
7. 对于变量定义int a[10],*p=a;,表达式_______是不正确的。
8. 不正确的赋值或赋初值的方式是______。 A.char str[10];str=\;
C.char *p=\; #include
int z;
vioid main()
{int a,b; fun(a) …} A.x,y A.p=a
B.x,y,z B.p[0]=a
C.a,b,y,z C.*(a+1)=p
D.a,b,x,y,z D.a[0]=2
B.char str[]=\; D.char *p;p=\;
9. 设程序中不再定义新的变量,写出在函数fun中可以使用的所有的变量_______ 。
10. 对于变量定义int p[5],*a[5];,表达式_______是正确的。 二、填空题(每题2分,共30分)
1.数组定义为int a[2][3][4],则数组a中有__________个数组元素。 2.计算下列分段函数的条件表达式是_________________。
1 x>0
y= 0 x=0 -1 x<0
3.表达式1<10<5 的值是_______________________。