一、单项选择题(20题,每题2分,共40分)
1.一个C语言程序是由组成的。
A.主程序 B.子程序 C.函数 D.过程
2.判断char型变量c1是否为小写字母的最简单且正确的表达式为。
A. 'a'<=c1<='z'
B. (c1>=a)&& (c1<=z)
C. ('a'<=c1)||('z'>=c1)
D. (c1>='a')&&(c1<='z')
3.为了判断两个字符串s1和s2是否相等,应当使用。
A. if (s1==s2)
B. if (s1=s2)
C. if (strcpy(s1,s2))
D. if( strcmp(s1,s2) == 0 )
4. 设a,b都是int型变量,则表达式:(a=2,b=5,a>b? a++ : b++ ,a+b)的值为。
A. 7
B. 8
C.
9 D. 2
5. 设x、y和t均为int型变量,则以下语句:t=x; x=y; y=t;的功能是。
A. 把x和y按从大到小排列
B. 把x和y按从小到大排列
C. 无确定结果
D. 交换x和y中的值
6. 下面标识符中,合法的用户标识符为。
A. P#Ad
7. 循环语句while(!E);中的表达式!E等价于。
A. E!=0
B. E!=1
C. E==
0 D. E==1
8. 设有以下语句,则不是对a数组元素的正确引用,其中0≤i<10。
int a[10] = {0,1,2,3,4,5,6,7,8,9};
int *p = a;
供选择的答案是:
A. a[p-5]
B. *(&a[i])
C. p[i]
D. *(a+i)
9. 若用数组名作为函数调用的实参,传递给形参的是。
A.数组的首地址
B.数组第一个元素的值
C.数组中全部元素的值
D.数组元素的个数
10.下面四段程序中,不是死循环的程序段是。
──────—───┬───────────────
A.int i=100; k=0;
while (1) do {++k;
{ i=i%100+1;} while (k>=0);
if (i>100) ───────────────
break; s=3379;
} │ while (s);
──────────┤ s++;
( ;;);
──────────┴───────────────
11.在一个文件中定义的全局变量的作用域为。
A.本程序的全部范围;
B.本文件的全部范围;
C.函数内的全部范围;
D.从定义该变量的位置开始到文件结束。
12.下面的程序执行后,文件test.t中的内容是。
#include <>
#include
void fun(char *fname,char *st)
{ FILE *myf;
int i;
myf=fopen(fname,"w");
for(i=0;i fputc(st[i],myf); fclose(myf); } main() { fun("test.t","new world"); fun("test.t","hello,"); } A)hello, B)new worldhello, C)new world D)hello,world 13.若有以下定义和语句 int a=3,b=4, *q,*w,*p; p=&a; q=&b; w=q; q=NULL; 则以下选项中错误的语句是。 A *p=a; B w=p; C *q=0; D *p=*w; 14.以下语句中,指针s所指字符串的长度为。 char *s=”\\Hello\tWorld\n”; A.13 B.12 C.14 D.10 15.若调用一个函数,且此函数中没有return语句,则正确的说法是:该函数。A.没有返回值B.返回若干个系统默认值C.能返回一个用户所希望的函数值D.返回一个不确定的值 16.有以下程序 main() { int m[][3]={1,4,7,2,5,8,3,6,9}; int i,j,k=2; for(i=0;i<3;i++) printf(“%d”,m[k][i]); } 执行后输出结果是 A. 4 5 6 B. 2 5 8 C. 3 6 9 D. 7 8 9 17.下列程序的输出结果为。 #define SQR(x) x*x main() { int a=10, k=2, m=1; a/=SQR(k+m); printf(“%d\n”, a); } A. 1 B. 8 C. 2 D. 9 18. 设有以下程序段: char a[ ]=”study”,*p; p=a; printf(“%d”,*(p+5)); 执行后的结果为: A、111 B、0 C、104 D、不确定 19.设有下列程序段,则scanf函数调用语句中对结构体变量成员的不正确引用为。 struct student { char name[20]; int age; char sex; }stu[5], *p; p=stu; A. scanf("%s", stu[0].name); B. scanf("%d", p->age); C. scanf("%c", &(p->sex)); D. scanf("%d", &stu[0].age); 20.已知static int a[ ]={5,4,3,2,1},*p[ ]={a+3,a+2,a+1,a},**q=p;则表达式:*(p[0]+1) + **(q +2 ) 的值是。 A.5 B.4 C.6 D.7 二、程序填空题(每空2分,共20分) 1、求1 + 1/2 +1/4 + 1/6 + ··· + 1/100 的值。 #include “” main( ) { int i =2 ; float sum ; _______________; while ( i <=100) { sum = ____________ ; __________________ ; } printf ( “ sum = %f “ , sum); } 2、以下程序的功能是:从键盘输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。 main( ) { float x[1000], sum = , ave, a ; int n=0, i; printf(“Enter mark:\n”); scanf(“%f”,&a); while(a>= && n<1000) { sum =sum+a; x[n]=______; n++; scanf(" % f ",_______); } ave= ________ ; printf(“Output: \n”); printf(“ave=%f\n”,ave); for(i=0; i if(_________) printf("%f\n”,x[i]); } 4、将输入的百分制成绩转换成相应的等级。100—90分为A,89—80分为B …… 60分以下为E。main() { int score,temp; char grade; scanf("%d",&score); if(score ==100) temp=9; else temp= __________; switch( ______ ) { case 9:grade='A'; break; case 8:grade='B'; break; case 7:grade='C'; break; case 6:grade='D'; break; ______________ } printf ("Score=%d Grade=%c\n", score, grade); } 三、程序阅读题(每题4分,共20分) 1、以下程序运行后,输出结果是_______。#include "" main( ) { char ch='A'; int x=8; while (ch<='H') { printf("%c,",ch); ch+=2; } printf("\n"); do { x--; if (x%3==0) continue; printf("%d,",x); } while (x>0); } 2、以下程序运行后,输出结果是_______。int func(int a, int b) { static int m=0,i=2; i+=m+1; m=i+a+b; return(m); } main() { int k=4,m=1,n; n=func(k, m); printf(“%d,”, n); n=func(k, m); printf(“%d ”, n); } 3、下面程序的运行结果是:。 void swap(int *a,int *b) { int *t; t=a; a=b; b=t; } main() { int x=3,y=5,*p=&x,*q=&y; swap(p,q); printf(“%d,%d\n”,*p,*q); } 4、下面程序的运行结果是:。 #include "" main() { int i,j; char ch; for(i=1;i<5;i++) { for(j=1;j<20-i;j++) printf(" "); ch='A'; for(j=1;j<=2*i;j++) printf("%2c",ch++); printf("\n"); } } 5、以下程序运行后的输出结果是。int func(int a,int b) { return (a+b); } main() { int x=2,y=5,z=8,r; r=func(func(x,y),z); printf("%d\n",r); } 四、编程题(三题中任选两题,每题10分,共20分,) 1、用递归方法求n!。 2、从键盘输入十个数,按升序排列后输出排序的结果,请按以下要求完成, 要求:1)、必须用主、子函数调用完成程序。 2)、其中十个数的输入及排序后的结果输出在主函数中实现。 3)、排序功能在子函数中实现。 3、从键盘输入一串字符,对其中的的字母,数字及其他字符的数目进行统计,并输出统计结果,方法不限。 A卷参考答案 一.单项选择题(20题,每题2分,共40分) 1. C 2. D 3. D 4. B 5. D 6. D 7. C 8. A 9. A 10. C 12. A 13. C 14. A 15. D 16. C 18. D 19. B 20. A 二、程序填空题(每空2分,共20分) 1、sum=或sum=1; sum + / i , i = i + 2; 2、a、&a、sum/n、x[i] 3、(score-score%10)/10;或score/10 , temp , default: grade='E'; 三、程序阅读题(每空2分,共20分) 1、 A,C,E,G, 7,5,4,2,1, 2、8,17 3、3,5 4、 A B A B C D A B C D E F A B C D E F G H 5、15 四、编程题(20分,任选2题,每题10分) 1、main() 结构正确 1分{ int n,t; 变量及函数说明正确 2分 long fact(int); scanf("%d",&n); 输入正 确 1分 t=fact(n); 调用语句正确 1分printf("\n%d",t); } long fact(int n) 函数类型及形参正确 1分 { long s; if (n==1) s=1; 递归公式1正确 1分 else s=n*fact(n-1); 递归公式2正确2分return s; 返值正确 1分 } 2、main() 结构正确 1分 { int a[10], i ; 变量定义及函数说明正确 2分 void sort(int b[]); for(i=0;i<10;i++) 输入正确 1分 scanf(“%d”,&a[i]); sort(a); 函数调用及参数传递正确1分printf("\n"); for(i=0;i<10;i++) 输出正确 1分 printf("%d, ",a[i]); } void sort( int b[] ) 结构正确 1分 { int i,j for(i=0;i<9;i++) 排序正确 3分 for(j=9;j>i;j--)