int *p,a=5; p=&a;
下列表达式中代表地址的是__________。
A. a, p, *&a B. &* a, &a, *p C. *p, *&p, &a D. &a, &*p, p 16.有说明“int n=2,*p=&n,*q=p”,则以下非法的赋值语句是__________。 A. p=n; B.*p=*q; C. n=*q; D.p=q; 17.运行以下程序段时编译出错,其原因是_____________。 char c1=?a?,c2=?123?;
printf(“%c,%d\\n”,c1,c2); A.字符串要用“123”表示 B.?123?只能赋值给字符数组
C. c2是字符变量,不能用 %d格式输出 D. ‘123’不是正确的字符常量,不能赋值给字符变量c2
18.以下程序段运行的结果是__________。
enum wd {a=1,b,c,d,e } wk=e; printf(“%d \\n”,wk)); A. 4 B. 5 C.-1 D.e 19.设整型变量a为5,使b不为2的表达式是__________。 A.b=a/2 B.b=6-(--a) C.b=a%2 D.b=a>3?2:1
20.对于定义int a[3][5],下列描述中正确的数组元素引用语句是__________ A. a[2][3] B. a[3,2] C. a[1+2][2] D. a(3)(2) 第二部分简单程序(10项,每项3分,共30分) 21.下列程序执行后输出的结果是_____________。 main() { int x=6,y=10,z=15,m; z++; m=x*y+z; printf(“%d\\n”, m); } A.75 B.76 C.31 D.32 22. 在执行下列程序时输出的结果是_____________。 main()
{ int x=4,y=7; x-=y; y+=x; printf(“%d %d”,x,y) ; } A. 4 7 B.-3 -3 C. -3 11 D.-3 4 23. 下列程序输出的结果是_____________。 main()
{ int n=1,sum=0; do
26
{ sum=sum+n; n=n+4; }while(n<1); printf(“%d\\n”,sum); } A.0 B.1 C.5 D.4 24. 下列程序执行后输出结果是____________。 main() { int m=3; printf(“f(%d)=%d”,m,(m>=0?1:0)); }
A. f(3)=1 B. f(3)=0 C. f(3)=3 25. 下列程序执行后输出结果是_____________。 main()
{ int x=1,y=2,a=0,b=0; switch(x) { case 1: switch(y) { case 0:a++; case 1: b++; } break; case 2:a++;b++;break; } printf(“a=%d,b=%d\\n”,a,b); }
A. a=0,b=0 B. a=1,b=0 C. a=0,b=1 26. 下列程序执行后输出结果是_____________。 main()
{ int i,n=1; for(i=3;i<5;i++) n++; printf(“%d”,n); } A.2 B.3 C. 4 27下列程序执行后输出结果是_____________。 main( )
{ int i,a [3]={0}; for(i=1;i<3;i++) { a [i]= a [i-1]*2+1; printf(“%d ”, a [i]); }
}
27
D. f(1)=3
D. a=1,b=1
D. 5
A.0 1 B.0 2 C.1 2 D.1 3 28.以下程序执行后输出的结果是_____________。 main()
{ char s[]=”abcdefg”; s[5]=?\\0?; printf(“%s\\n”, s); }
A. abcd B. abcde C. abcdef D. abcdefg 29.以下程序执行后输出的结果是_____________。 main()
{ int a,b,x=45; a=b=0; if(!a) x--; if(b) x=30; else x=40; printf(“x=%d\\n”,x); }
A. x=0 B. x=30 C. x=40 D. x=44 30.以下程序执行后输出的结果是_____________。 main()
{ int a,m; for(m=10;m<25;m++) { a=m; if(a= =5 && m%3= =0) { printf(“%d”, m); }
} } A.5 B.10 C.15 D.25
第二卷 (本卷10项,每项3分,共30分) 第二卷均为填空题,在阅读和原题程序的基础上,在第二卷答题卡上编号对应的栏目中填入适当的字符,语句,以构成一个正确的C语言程序。
1.以下程序输出的结果是 1 23 int fund (int i)
{ printf(“%d”, i); return ++i; }
main() { int i=2; printf(“%d”, fund ( i));
28
}
2. 以下程序输出的结果是 2 9 main()
{ int x=5; while(x<10) { x++; if (x%4!=1) continue; else printf(“ %d \\t”,x); }
}
3. 以下程序输出的结果是: 3 abcd int isnumber(char c){ return((c>='0'&&c<='9')?1:0); } main()
{ char a[]=\
int k=0;
while(*p!='\\0')
{ if (isnumber(*p)==0)
a[k++]=*p; p++; }
a[k]='\\0';
printf(\}
4.以下程序是计算S=1-2+3-4...+99-100并输出结果,填空完成程序。 int fun (int n) { int s=0,f=1,i;
for(i=1;i<=n;i++)
{ 4 s+=f*i;
f=-f; }
return 5 ; s }
main ()
{ int fun (int n);
printf(\ 6 ); fun(100) }
5.以下程序的功能是输入一个字符串S,将所有空格删除后再输出。请填空完成程序。 main ()
{ char s[80];
int x,y;
printf(\gets(s);
for(x=0,y=0; 7 ;x++) s[x]!='\\0'
29
{
if (s[x]!=' ') {
8 ; s[y]=s[x] y++; }
}
s[y]= 9 ; '\\0' printf( 10 ); \}
全国高校计算机联合考试(广西)二级C语言试题卷
2009年6月 第一卷
本卷共70分,其中第1~26题每题2分,第27~32题每题3分。
第一部分:基础知识
1.对于声明int a[10],*p;,下面选项中合的赋值语句是 __________。
A.p=100; B.p=a[6]; C.p=a[3]+3; D.p=a+2 2. 以下叙述正确的是___________。
A.C语言程序中,main函数必须位于程序的最前面 B.C语言程序中大、小写字母是有区别的 C.C语言程序的每行只能写一条语句
D.编译C程序时,可以发现注释行中的错误
3. 若x、i、j和k都是int型变量,则执行下列语句后,x的值为____________。 x=(i=4,j=16,k=32);
A.4 B.16 C.32 D.52
4. 对于程序段int *p,a=5;p=&a; ,下列各选项中全部表示地址的是___________。
A.a,p,*&a B.*p,*p,&a C.&*a,&a,*p D.&a,&*p,p
5. 对于定义:int a[3][5],能正确引用数组元素的语句是_________。
A.a[3,2] B.a[2][3] C.a(3)(2) D.a[1+2][2]
6. 判断char型变量ch是否为大写字母的正确表达式是___________。
A.?A?<=ch<=?Z? B.(ch>=?A?)OR(ch<=?Z?) C. (ch>=‘A’)&&(ch<=‘Z’) D.(?A?<=ch) AND(?Z?>=ch) 7. 对于声明int i,j=2,*p=&j;,能完成i=j功能的语句是_________。
A.i=**p; B.i=*p; C.i=&j; D.*p=*&j;
8. 若希望当int a;a的值为奇数时,表达式的值为“真”,a的值为偶数时,表达式的值为“假”.则以下不能满足要求的表达式是__________。
A.a % 2 = = 1 B.!(a % 2 = = 0) C.a%2 D.!(a % 2)
9. 对于下面的定义:struct str {int x;float y;char z[6];} sample;下面的各项中,正确的赋值语句是___________。
A.sample.z=abcd; B.z=“abcd”;
30