计算机专业指南试题
学号 姓名
一、填空题:10%
1. 本专业中统设必修课和部分统设课的多种媒体教学资源包
括 、 、 、 或 。
2. 本专业最低毕业学分为鉴定符合要求,可获得国家承认的高等教育专科学历毕业证书, 给予毕业证书电子注册。
3. 计算机信息管理专业在教学计划进程表中安排了
4.学习支持服务体系包括:教学平台、教学服务、、面授辅导、 、师资培训。
二、个人专业学习计划(要适合自己,25%)
三、对所听或上网学习的技术讲座的心得体会(要有结合个人工作和兴趣的认识,35%)
四、小组讨论报告(小组活动,讨论的情况,对问题的认识和想法。30%)
答案:
一、填空题:
1. 文字教材、CAI课件、IP课件、网络课程。
2. 76、教育部
3. 必修课、选修课。
4. 远程辅导、网络答疑
二、三、四
根据个人情况回答。
第二篇:C语言全国各届信息技术大赛试题(值得计算机专业学习)
5 有n 个人围成一圈,顺序排号,从第一个人开始报数(从1到3报数),凡是数到3的人退出圈子,问最后留下的是原来的几号的那个人。
#include <stdio.h>
void main() {
int n, i, k, m; int array[50], *p;
printf("please input the number of persons: n = \n");
scanf("%d", &n); p = array;
for (i = 0; i < n; i++) *(p+i) = i+1;
i = 0; // i 为每次循环计数变量
k = 0; // k 为按1,2,3报数时的计数变量
m = 0; // m为退出人数计数变量
while(m < n-1) //当退出人数比n-1少时执行循环体
{
if( *(p+i) != 0 ) k++;
if(k == 3) // 对退出的人编号置为0
{
*(p+i) = 0; k = 0; m++; } i++; if(i == n) i = 0; }
while(*p == 0) p++;
printf("The last one is No. %d\n", *p); }
1
6 编写一个函数求字符串的长度。并在main函数中输入字符串,并输出其长度。 #include <stdio.h>
void main() {
int strLen(char *str); int len;
char string[20];
printf("please input a string: \n"); scanf("%s", string); len = strLen(string);
printf("The length of the string is: %2d\n", len); }
int strLen(char *str) {
char *p;
int count = 0; p = str; while(*p) {
p++; count++; }
return (count); }
7有一个字符串,包含n个字符。编写一个函数,将此字符串中从第m个字符开始的全部字符复制到另一个字符串。 #include <stdio.h> #include <string.h>
void main() {
void copystr(char *, char *, int); unsigned int m;
char str1[20], str2[20];
printf("please input a string: "); gets(str1);
printf("which character that begin to copy?");
scanf("%d", &m);
if( m > strlen(str1))
printf("input error!"); else {
copystr(str2, str1, m);
printf("result: %s\n", str2); } }
void copystr(char *dest, char *source, int m) {
source = source + m-1; while(*source) {
*dest = *source; dest++; source++; }
*dest = '\0'; }
一、单选题(共60小题,每题1分,共60分)
1. 执行下列程序中的输出语句后,x的值
是______。(知识点3.10) main() {int x ;
printf(“%d\n”,(x=5*6,x*2,x+20));} A)30 B)60 C)50 D)80
2
2. 下列程序的输出结果是_______。(知识
点3.8) main()
{int x=1,y=0,z; z=(x<=0)&&(y- ->=0); printf(“%d %d% d%\n”,z,x,y) ;} A)0 -1 -1 B)0 -1 0 C)0 1 0 D)0 1 -1
3. 在C语言中,下列选项属于合法的长整
型常数的是_______。(知识点3.3) A)0L B)1234567 C)0.0234567 D)3.14159e3
4. 下列选项中属于不正确的赋值语句的
是_____。 (知识点3.6)
A)t++; B)n1=(n2=(n3=0)); C)k=i= =j; D)a=b,c=1;
5. 若有定义:int a,b;char x,y;并有以
下输入数据: 14 22 XxYy (回车) 则能给a赋整数14,给b赋整数22,给x赋字符x,给y赋字符y的正确程序段是________。 (知识点4.2) A) scanf(“%d %d”,&a,&b); x=getchar();y=getchar(); B) scanf(“%d%d %c %c”, &a, &b,&x,&x,&y,&y); C)
scanf(“%d %d %c%c%c %c”, &a,&b,&x,&x,&y,&y);
D) scanf(“%d%d %c %c”, &a, &b,&x,&y);
6. 下列转义字符不正确的是_______。(知
识点3. 5)
A)?\\? B)?\? C)?\053? D)?\0?
7. 下列选项可作为C语言赋值语句的是
_______。(知识点4.2)
18
11. 有以下程序: main()
{ int a=111,b=222; printf(“%d\n”,a,b); }
A)x=3,y=5 B)a=b=6 C)i- -; 该程序运行后的输出结果是_______。(知识D)y=int(x);
8. 当c的值不为0时,下列选项中能正确
将c的值赋给变量a、b的是_______。(知识点5.2)
A)c=b=a; B)(a=c)‖(b=c); C)(a=c)&&(b=c); D)a=c=b; 9. 有以下程序: main() { unsigned int a ; int b=-1; a=b;
printf(“%u”,a);}
该程序运行后的输出结果是_______。(知识点4.5)
点4.5)
A)错误信息 B)111 C)222 D)111,222
12. 以下程序的输出结果是_______。(知识
点4.5) main() { int a=2,c=5;
printf(“a=%%%d,b=%%%d\n”,a,c);} A) a=%2,b=%5 B) a=2,b=5 C) a=%%%d,b=%%%d D) a=%%d,b=%%d 13. 对于浮点型变量f,能实现对f中的值
在小数点后第三位进行四舍五入的表达式是_______。(知识点3.8) A)f=(f*100+0.5)/100.0 B)
A)-1 B)65535 C)32767 f= ( f*100+0.5)/100 D)-32768
10. 若x、b、m、n均为int型变量,执行
下面语句后b的值为_______。(知识点3.10) m=20;n=6;
x=(- -m= =n++)?- -m:++n; b=m++;
A)11 B)6 C)19 D)
3
C)f=(int)(f*100+0.5)/100.0 D)f=(f/100+0.5)*100
14. 设 a=5, b=6, c=7, d=8, m=2, n=2, 执行
(m=a>b)&&(n=c>d) 后m,n的值为______。(知识点5.2)
A) 2,2 B) 2,0 C) 0,2 D) 0,0
15. 语句printf(“%d\n”,strlen
(“asd\n\x12\1\\”));的输出结果是______。(知识点7.3)
A) 9 B) 11 C) 7 D) 8 16. 有以下程序: main( ) {
int y=1234;
printf(“y=%6d”,y); printf(“y=%+06d\n”,y); }
该程序的运行结果是______。(知识点4.5) A) y= 1234y=001234 B) y= 1234y=+01234
C) y=1234y=+01234 D) y= 1234y=1234
17. 语句:printf(“%d”, !9);的输出结果
是______。(知识点5.2)
A) 0 B) 1 C) 有语法错误 ,不能执行 D) -9
18. 已有定义语句:int x=6,y=4,z=5;执
行以下语句后,能正确表示x、y、z值的选项是______。(知识点5.3) if(x<y)z=x;x=y ;y=z;
A) x=4,y=5,z=6 B) x=4,y=6,z=6
C) x=4,y=5,z=5 D) x=5,y=6,z=4
19. 下列选项中属于正确的switch语句的
是______。(知识点5.4)
B)swicth(1)
{ case 1.0 :printf(“A\n”); { case 1 :printf(“A\n”);
case 2.0 :printf(“B\n”); } case 2 :printf(“B\n”);}
C)switch((int)(1.0+2.5)) D)switch(“a”);
{ case 1 :printf(“A\n”); { case “a” :printf(“A\n”);
case 1+2 :printf(“B\n”);} case “b” :printf(“B\n”);}
20. 若k为int型变量,以下语句段执行后
的输出结果是______。(知识点5.3) k=-3;
if(k<=0) printf(“####”) else printf(“****”);
A) #### B) **** C) ####**** D) 有语法错误 ,不能执行
21. 当a=2,b=3,c=4,d=5时, 执行下面
一段程序后x的值为_____。(知识点5.3) if(a>b)
if(c<d)x=1 ; else if(a<c)
if(b>d)x=2 ;
else x=3 ; else x=4 ; else x=5 ;
A)switch(1.0) A ) 2 B)3 C)4 D)5
4
22. 下列程序的运行结果是________。(知
识点6.3) main() { int y=10;
do { y- - ;} while(- -y); printf(“%d\n”,y- -);}
A)-1 B)1 C)8 D)0
23. 下列程序的运行结果是________。(知
识点6.5) # include <stdio.h> main() { int i ;
for(i=1;i<=5;i++) { if(i %2)printf(“*”); else continue ; printf(“#”); }
printf(“$\n”); }
A)*#*#$ B)#*#*#*$ C)*#*#*#$ D)***#$
24. 若x是int型变量,且有下面的程序片
段: (知识点6.5) for(x=5;x<8;x++)
printf((x%2)?(“**%d”):(“##%d\n”),x);
该程序片段的输出结果是 _______。
A)**5##6 B)##5 C)##5**6##7 D)**5##6**7 **7 **6##7 25. 有以下程序: main() {int a=1,b=0; switch(a)
{ case 1:switch(b)
{ case 0:printf(“****”);break ;
case 1:printf(“####”);break ; }
case 2: printf(“$$$$”);break ; } 该程序的输出结果是________。(知识点5.4)
A)**** B)****$$$$ C)****####$$$$ D) ####$$$$ 26. 下列程序段的输出结果是_______。(知
识点6.4) int x=3;
do {printf(“%3d”,x-=2);} while(!(--x));
A)1 B)3 0 C)1 -2 D)死循环 27. 有以下程序,其中x、y为整型变量; for(x=0,y=0;(x<=1)&&(y= 1);x++,y--);
printf(“x=%d,y=%d”,x,y); 该程序的输出结果是_____。(知识点6.5) A)x=2,y=0 B) x=1,y=0 C) x=1,y=1 D) x=0,y=0
5
28. 有以下程序段: int n=0,p;
do { scanf(“%d”,&p);n++;} while(p!=12345&&n<3);
此处do-while循环的结束条件是_____。(知识点6.4)
A)p的值不等于12345并且n的值大于3 B)p的值等于12345并且n的值大于等于3 C)p的值不等于12345或者n的值小于3 D)p的值等于12345或n的值大于等于3 29. 在下述程序中,if (i>j) 语句共执行的次
数是_____。(知识点6.5) main()
{ int i=0,j=10,k=2,s=0; for(;;) { i+= k ;
if(i>j)
{ printf(“%d”,s); break ; } s+=i ; } }
A)4 B)7 C)5 D)6
30. 以下程序的功能是:按顺序读入10名
学生和4门课程的成绩,计算出每位学生的平均分进行输出,但运行结果不正确。 main()
6
{ int n,k;float score,ave; ave=0.0;
for(n=1;n<=10;n++) { for(k=1;k<=4;k++) { scanf(“%f”,&score); ave+=score/4 ;}
printf(“NO%d:%f\n”,n,ave);} }
造成程序计算结果错误的语句行是_____。(知识点6.6)
A)ave=0.0; B)for(n=1;n<=10;n++)
C)ave+=score/4 ; D)printf(“NO%d:%f\n”,n,ave); 31. 若有以下定义:char
s[10]={?a?,?b?,?c?,?0?,?\0?,?2?,?\x32?,?\0?};执行语句printf(“%d”,strlen(s));的结果是_____。(知识点7.3) A)3 B)4 C)8 D)10
32. 设有数组定义:char array[ ]=“abcdef”;
则数组array所占的空间为_____。(知识点7.3)
A)4个字节 B)5个字节 C)6个字节 D)7个字节 33. 有以下程序: main()
{ char str[ ][10]={“China”,“Beijing”},*p=str;
printf(“%s\n”,p+10);}
该程序运行后的输出结果是_____。(知识点10.4)
A)China B)Beijing C)ng D)ing
34. 阅读下面程序,该程序段的功能是
_____。(知识点7.1) #include <stdio.h> main()
{ int c[ ]={23,1,56,234,7,0,34},i,j,t;
for(i=1;i<7;i++) { t=c[i];j=i-1;
while(j>=0&&t>c[j]) { c[j+1]=c[j];j- - ;} c[j+1]=t;}
for(i=0;i<7;i++)printf(“%d ”,c[i] ); putchar(?\n?); }
A)对数组元素的升序排列 B)对数组元素的降序排列
C)对数组元素的倒序排列 D)对数组元素的随机排列
35. 下列程序的输出结果是_____。(知识点
7.2) main()
{ int n[3][3],i,j; for(i=0;i<3;i++)
for(j=0;j<3;j++)n[i][j]=i+j; for(i=0;i<2;i++)
for(j=0;j<2;j++)n[i+1][j+1]+= n[i][j]; printf(“%d \n”,n[i][j]);
7
}
A)14 B)0 C)6 D)值不确定
36. 下列函数调用语句中含有______个参
数。(知识点8.3)
func((f1,f2),(f2,f3,f4),f5) A)3 B)4 C)5 D)6 37. 下列程序的运行结果是_______。(知识
点7.3) #include <string.h> main()
{ char *p1,*p2,ch[20]=“ABCDEFabcdef”; p1=“1234”;p2=“abcd”;
strcpy(ch+1,p2+1);strcpy(ch+3,p1+3); pintf(“%s\n”,ch);}
A)Abc4EFabcde B)Abc4EF C)AbcdEF D)Abc4 38. 下列程序的运行结果是_______。(知识
点8.6) # include <stdio.h> int f(int a) { switch (a) { case 0:return 0; case 1:case 2:return 1; }
return(f(a-2)+f(a-3)); } main() { int b; b=f(10);
printf(“b=%d\n”,b); }
A) 12 B)10 C)9 D)8 39. 有以下程序: fun(int n)
{ if(n= =1|| n= =2)return 2; return s=n-fun(n-2);} main()
{printf(“%d\n”,fun(7));}
该程序运行后的输出结果是_____。(知识点8.6)
A) 1 B)2 C)3 D)4 40. 下列程序中函数sort的功能是对a数组
中的数据进行由大到小的排序: void sort(int a[ ],int n) { int i,j,t;
for(i=0;i<n-1;i++) for(j=i+1;j<n;j++)
if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;} } main()
{ int aa[10]={1,2,3,4,5,6,7,8,9,10 },i;
sort(&aa[3],5);
for(i=0;i<10;i++)printf(“%d,”,aa[i]); printf(“\n”); }
该程序运行后的输出结果是_____。(知识点8.4)
A)1,2,3,4,5,6,7,8,9,10, B)
8
10,9,8,7,6,5,4,3,2,1, C)1,2,3,8,7,6,5,4,9,10, D)1,2,10,9,8,7,6,5,4,3, 41. 下列程序的运行结果是_____。(知识点
8.3) main() { int a=3,y; y=fn(a,a++); printf(“%d”,y);} int fn(x,c) { int b; if(x<c)b=1; else if(x= =c)b=0; else b=-1 ; return(b); }
A)3 B)-1 C)1 D)0
42. 下列程序的运行结果是_____。(知识点
7.3) main() { char arr[2][4];
strcpy(arr,“you”);strcpy(arr[1],“me”); printf(“%s\n” ,arr);}
A)you me B)you C)me D)arr
43. 下列程序的输出结果是_____。(知识点
8.8) int f() { static int i=0;
int s=1; s+=i;i++; return s;} main() { int i , a=0;
for(i=0;i<5;i++)a+=f(); printf(“%d\n”,a);}
A)20 B)24 C)25 D)15
44. 程序中对fun函数有如下说明: void *fun();
此说明的含义是_____。(知识点10.6) A) fun函数无返回值
B) fun函数的返回值可以是任意的数据类
型
C) fun函数的返回值是无值型的指针类型 D) 指针fun指向一个函数,该函数无返回
值
45. 设有下列定义:static int x,*p=&x,*q;
scanf(“%d,%d”,p,
q);
若输入3,4,则x的值为_____。(知识点8.8)
A)3 B)4 C)0 D)无法确定
46. 设有以下程序: int fun(char *s) { int n=0;
while(*s){ n++;s++ ;} return n ;}
9
main()
{char y[ ]=“this_is_an_example。”; printf(“%d\n”,fun(&y[6])); }
该程序的输出结果是_____。(知识点:10.4) A)12 B)13 C)14 D)16
47. 下列程序的功能是_____。(知识点:
10.4) int fun(char *a) { char *b=a; while(*b)b++; {return b-a ;} }
A) 比较两个字符串的大小 B)字符串的复制
C) 计算字符串的长度 D) 字符串的连接
48. 下列程序的输出结果是_______。(知识
点10.2) main() {
int k=3,m=5,n=7; int *pk=&k,*pm=&m,*p; *(p=&n)=*pk*(*pm); printf("%d\n",n); }
A)5 B)7 C)15 D)21
49. 下列程序的执行结果是_______。(知识
点10.3) main()
{ char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5; printf(“%d”,*--p);}
A)非法 B)a[4]的地址 C)5 D)4
50. 以下函数返回a所指的数组中最小值所
在的下标值: fun(int *a, int n) { int i , j=0 , p ; p=j ;
for(i=j;i<n;i++) if(a[i]<a[p]) _______ ; return(p);}
在下划线处应填入_______。(知识点10.2)
#define f(x)x*x main() { int i ;
i=f(4+4)/(2+2); printf(“%d\n”,i);}
该程序执行后的输出结果是_______。(知识点9.1)
A)28 B)21 C)16 D)4 53. 下列程序的输出结果是_______。(知识
点11.4) struct tt;
{ int n1;char n2;float n3;
union uu{int u1[2];char u2[2];}su; }; main()
A)i=p B)a[p]=a[i] C)p=j {printf (“%d\n”,sizeof(struct tt));} D)p=i
51. 下列程序的运行结果是_______。(知识
点10.2)
void fun(int *a,int *b) { int *k;
k=a;a=b;b=k;} main()
{ int a=3,b=6,*x=&a,*y=&b; fun(x,y);
printf(“%d %d”,a,b); }
A)11 B)12 C)7 D)9
54. 下列程序的输出结果是_______。(知识
点11.6) struct LH
{ int n;struct LH *m;}p[4]; main() { int i;
for(i=0;i<3;i++) {p[i].n=i;p[i].m=&p[i+1];} p[i].m=p;
A)6 3 B)3 6 C)编译出错 printf(“%d,%d\n”(,p[1].m)->n,p[3].m->n); D)0 0
52. 有如下程序:
10
}
A)1,2 B)1,3 C)2,0
D)程序出错
55. 下列程序的输出结果是_______。(知识
点11.6) struct st
{ int x;int *y;}*p; int dt[4]={10,20,30,40};
struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]}; main() { p=aa;
printf(“%d ”,++p->x); printf(“%d ”,(++p)->x); printf(“%d ”,++(*p->y));}
A)10 20 20 B)50 60 21 C)51 60 21 D)60 70 31
56. 字符0的ASCII码的十进制数为48,
且数组的第0个元素在低位,则以下程序的执行结果是_______。(知识点11.8) #include <stdio.h> main() { union { int i[4];
long k; char c[6]; }a,*s=&a ; s->i[0]=0x39; s->i[1]=0x38;
printf(“%c\n”,s->c[0]); }
11
A)5 B)3 C)6 D)9
57. 下列程序的运行结果是_______。(知识
点12.2) main()
{ unsigned c1=0xff,c2=0x00; c1=c2|c1>>2;c2=c1^0236; printf(“%x,%x\n”,c1,c2); }
A)0x3f,0XA1 B)3f,A1 C)ffff,61 D)3f,a1
58. 若有运算符<<,sizeof,^,&=,则它
们按优先级由高至低的排列次序正确的是_______。(知识点3.8)
A)sizeof,&= , <<, ^ B)sizeof,<<, ^,&=
C)^,<<,sizeof, &= D)<<,^,&=,sizeof 59. 有以下程序: #include <stdio.h>
void fun(char *fname,char *st) { FILE *myf;int i; myf=fopen(fname,“w”);
for(i=0;i<strlen(st);i++)fputc(st[i],myf); fclose(myf); } main()
{ fun(“test.t”,“new world”);fun(“test.t”,“hello,”);}
执行该程序后,文件test.t中的内容是_______。(知识点13.4)
(k%2)!=0 D)!k%2= =0 3. 已有定义 int a=-2;和输出语句printf
(“%8lx”,a);下列叙述不正确的有_______。(知今识点4.5) A) 整型变量的输出形式只有%d一种 B) %x是格式符的一种,它可以适用于任
何一种类型的数据
C) %x是格式符的一种,其变量的值按十
六进制输出,但%8lx是错误的 D) %8lx不是错误的格式符,其中数字81
规定了输出字段的宽度
4. 下列选项中,没有构成死循环的程序段
有_____。(知识点6.7)
A)int i=100; B)for( ; ; ) while(1) { i=i%100+1; if(i>=100)break;}
A)hello, B)new worldhello, C)new world D)hello,rld 60. 有以下程序: #include <stdio.h> main()
{ FILE *fp;int i=20,j=30,k,n; fp=fopen(“d1.dat”,“w”);
fprintf(fp,“%d\n”,i);fprintf(fp,“%d\n”,j);
fclose(fp);
fp=fopen(“d1.dat”,“r”);
fscanf(fp,“%d%d”,&k,&n);printf(“%d %d\n”,k,n); fclose(fp);}
该程序运行后的输出结果是_______。(知识点13.4)
A)20 30 B)20 50 C)30 50 C)int k=0; D)30 20
二、多选题(共20小题,每题2分,共40分)
1. 下列符号串中,不属于C语言合法标识
符的有_____。(知识点3.2)
D)int s=36;
do { ++k;} while(k>=0); while(s);--s;
5. t为int类型,进入下面的循环之前,t
的值为0:
A)_1_2_3 B)a-b-c C)int while (t=1) D)9cd
2. 当把下列四个表达式用作if语句的控制
表达式时,含义相同的选项有_______。(假设k>0)(知识点5.3) A)k%2 B)k%2= =1 C)
12
{ ……….}
则下列叙述不正确的有________。(知识点6.3)
A)循环控制表达式的值为0 B)循环控制表达式的值为1
C)循环控制表达式不合法 while(i<=5); D)循环有可能是个无限循环
6. 下列判断正确的是_______。(知识点
10.3)
A) char *a=“china”;等价于 char *a;*a=
“china”;
B) char str[6]={“china”};等价于char str[ ]=
{“china”};
C) char *s=“china”;等价于char *s;s=
“china”;
D) char c[4]=“abc”,d[4]=“abc”;等价于
char c[4]=d[4]=“abc”;
7. 若变量已正确定义,以下能正确计算
1+2+3+4+5的程序段有_____。(知识点:6.7)
A)i=1;s=1; B)i=0;s=0;
8. 下面程序把数组元素中的最小值放入
a[0]中,则在if语句中条件表达式可以是______。(知识点10.2) main()
{ int a[10]={5,2,9,6,7,1,12,8,23,0},*p=a,i; for(i=0;i<10;i++,p++) if(______) *a=*p ; printf(“%d”,*a); }
A)p>a B)*p<a[0] C)*p<*a[0] D)*p<*a 9. 设有如下定义:
char *s[2]={“abcd”,“ABCD”}; 则下列说法正确的有_____。(知识点:10.3) A) s数组元素的值分别是“abcd”和
“ABCD”两个字符串的首地址
do B) s是指针数组名,它含有两个元素分别do
指向字符型一维数组
{ s=s+i;i++; C ) s数组的两个元素分别存放的是含有四{ i++; s=s+i;
个字符的一维字符数组中的元素
while(i<5); D ) s数组的两个元素中分别存放了字符?a?while(i<5);
C)i=1;s=0; D)i=0;s=0;
和?A?的地址
10. 以下有关字符串赋值、赋初值的语句错
误的有_______。(知识点10.4)
do A)char sz[2][40];sz[1]=“string1”; do
B)char *sz[2];sz[1]=“string2”;
{ s=s+i;i++; C )char sz[][40]=“string3”; { s=s+i; i++;
D)char *sz[ ]=“string4”;
while(i<6); 11. 若有以下说明:int a[5][9];则下列选项
13
中对数组元素a[i][j]的引用错误的有_______。(0<=i<4,0<=j<9)(知识点10.3)
A)*(&a[0][0]+9*i+j) B)*(a+i)(j) C)*(*(a+i)+j) D)*(a[i]+j) 12. 若有定义:char *st=“how are you!”;下
面程序段正确的有_____。(知识点:7.3) A) char a[11],*p;strcpy(p=a+1,&st[4]); B) char a[11];strcpy(++a,st); C) char a[11];strcpy(a,st);
D) char a[ ],*p;strcpy(p=&a[1],st+2); 13. 设有以下说明语句: Struct stu { int a ; float b ; }stutype ;
则下列叙述正确的有_______。(知识点11.2)
A) struct是结构体类型的关键字 B) struct stu是用户定义的结构体类型 C) stutype是用户定义的结构体类型名 D) a和b都是结构体成员名 14. 若已建立如图所示的单向链表:
infolink
infolinkas
infolink_______。(知识点11.7)
A)s->link=a->link->link ;a->link->link=s; B)a=a->link ; a->link=s ;s->link=NULL; C)s->link=NULL ;a=(*a).link ;(*a) .link =s;
D)a=a->link ; s->link=a->link;a->link=s->link;
15. 设有定义语句: int x[6]={2,4,6,8,5,7},
*p=x,i;
要求依次输出x数组6个元素中的值,下列选项中能完成次操作的语句有_______。(知识点10.3)
A)for(i=0;i<6;i++)printf(“%2d”,*(p++));
B)for(i=0;i<6;i++)printf(“%2d”,*(p+i));
C)for(i=0;i<6;i++)printf(“%2d”,*p++); D)for(i=0;i<6;i++)printf(“%2d”,(*p)++);
16. 下列叙述正确的有_____。(知识点8.5) A) 函数可以嵌套定义,但不能嵌套调用 B) 函数可以嵌套调用,也可以嵌套定义 C) 函数不可以嵌套定义,但可以递归调用 D) 函数可以嵌套调用,但不能嵌套定义 17. 下列叙述不正确的有_____。(知识点
8.8)
A)全局变量可以为本文件中其他函数所调
用,编译时分配在静态存储区
B)局部变量只在本函数范围内有效,形式参数属于局部变量
14
则下列选项中能将s所指的结点插入到链表尾部,构成新的单项链表的语句组有
C)局部变量如没有被说明为静态的存储类别,则会被分配动态存储空间,存储在动态存储区中
D)局部静态变量在函数调用结束后依然存在,但其他函数不能引用它
18. 若变量已正确定义,要求程序段完成求
5!的计算,下列选项中不能完成此操作的程序段有____(知识点6.7)
A)for(i=1,p=1;i<=5;i++)p*=i;
B)for(i=1;i<=5;i++){p=1;p*=i;}
C)i=1;p=1;while(i<=5) p*=i;i++;
D)i=1;p=1;do { p*=i;i++;} while(i<=5);
19. 若有以下说明,则对strcpy库函数的调
用不正确的有_______。(知识点10.4) char *str1=“copy”,str2[10],*str3=“abcde”,*str4,*str5=“hijk”
A)strcpy(str2,str1); B)strcpy(str3,str1);
C)strcpy(str4,str1); D)strcpy(str5 ,str1);
20. 下列选项中可以将变量n清零的表达式
有_______。(知识点12..2)
A)n=n&~n B)n=n&0 C)n=n^n
D)n=n|n
15
C语言程序设计预赛题答案
一、 二、 多选题 单选题
16
一、单选题(共计60题)
(1) 在下述程序中,if (i>j) 语句共执行
的次数是( )。C main()
{ int i=0,j=14,k=2,s=0; for(;;) { i+= k ; if(i>j) { printf(“%d”,s); break ; } s+=i ; } }
A、6 B、9 C、7 D、12
(2) 若要用fopen函数打开一个二进制文
件,该文件要既能读也能写,当文件不存在时新建文件,则文件打开方式应是( )。C A、"ab+" B、"rb+" C、"wb+" D、"ab"
(3) 下列程序的输出结果是( )。C struct student { int a, b, c; }; main()
{ struct student stu[2]={{2,3,4},{5,6,7}}; int t; t=stu[0].a+stu[1].b%stu[0].c; printf("%d \n",t); } A、0 B、1 C、4
D、5
(4) 对于浮点型变量f,能实现对f中的值
在小数点后第四位进行四舍五入的表达式是( )。C
A、f=(f*1000+0.5)/1000.0 B、f=(f*1000+0.5)/1000 C、f=(int)(f*1000+0.5)/1000.0 D、f=(f/1000+0.5)*1000
(5) 现已定义整型变量int i=1; 执行循环语
句“while(i++<5);”后,i的值为( )。C A、1 B、5 C、6
D、以上三个答案均不正确
(6) 下列程序的输出结果是( )。C struct LH
{ int n;struct LH *m;}p[4]; main() { int i;
for(i=0;i<2;i++)
{p[i].n=i;p[i].m=&p[i+1];} p[i].m=p; printf(“%d,%d\n”(,p[1].m)->n,p[2].m->n); }
A、0,1 B、0,2 C、0,0
D、程序出错
(7) 下列程序的运行结果是( )。B #include "stdio.h" int f(int a) { switch (a)
{ case 0:return 0;
case 1:case 2:return 1; }
return(f(a-2)+f(a-3)); }
main() { int b;
17
b=f(9); printf(“%d\n”,b); }
A、10 B、7 C、8 D、9
(8) 以下程序的输出结果是( )。A int f(int b[],int m,int n) {int i,s=1;
for(i=m;i<n;i++) {b[i]=b[i-1]+b[i+1]; s+=b[i]; } return s; } main()
{int x,a[]={1,2,3,4,5,6,7,8,9,10}; x=f(a,3,5);
printf("%d\n",x); } A、23 B、26 C、42 D、35
(9) 以下程序运行后,输出结果是( )。C main()
{ char ch[3][4]={"123","456","78"},*p[3];int i;
for(i=0;i<3;i++) p[i]=ch[i];
for(i=0;i<3;i++) printf("%s",p[i]); }
A、123456780 B、123 456 780 C、12345678 D、147
(10) 桌上有白球和黑球共5个,a、b、c、d、
e分别表示这5个球的颜色,取值为0、1分别代表白球、黑球。则以下能表示a是黑球,其余至少有两个白球的表达式是( )。C
A、!a&&(b+c+d+e)==2 B、a&&(b+c+d+e)>2 C、a&&(b+c+d+e)<=2
D、!a&&(b+c+d+e)==3
(11) 下列程序的输出结果是( )。B #include "stdio.h" int f(int n) { static int k, s; n--;
for(k=n; k>0; k--) s += k; return s; }
void main( ) { int k;
k=f(2);
printf("(%d, %d)", k, f(k)); } A、(3, 3) B、(1, 1) C、(3, 6) D、(6, 12)
(12) 若有定义:int a,b;char x,y;并有以下
输入数据: 12 13 AaBb(回车) 则能给a赋整数12,给b赋整数13,给x赋字符a,给y赋字符b的正确程序段是( )。D
A、scanf(“%d”,&a); scanf(“%d”,&b);
x=getchar();y=getchar(); B、scanf(“%d%d %c %c”, &a, &b,&x,&y); C、scanf(“%d %d %c %c”, &a,&b,&x,&x,&y,&y); D、scanf(“%d %d %c%c%c%c”,&a,&b,&x,&x,&y,&y);
(13) 以下对结构体成员的运算结果是( )。
D
#include <stdio.h> main(){ struct st {int x; int y;
18
}cnum[2]={1,3,2,7}; printf
("%d\n",cnum[0].y/cnum[0].x*cnum[1].x); }
A、0 B、1 C、3 D、6
(14) 函数f定义如下,执行语句“m=f(5);”
后,m的值应为( )。B
int f(int k) { if(k==0||k==1) return 1; else return f(k-1)+f(k-2); } A、3 B、8 C、5 D、13
(15) 若有以下定义:char s[10]={’a’,’b’,’
c’,’0’, ’2’,’\x32’ ,’\0’,’\123’};执行语句printf(“%d”,strlen(s));的结果是( )。B A、3 B、6 C、8 D、9
(16) 若i为整型变量,则以下循环执行的次
数是( )。C for(i=0;i<=5;i++) printf("%d",i++); A、5次 B、2次 C、3次 D、6次
(17) 执行以下程序段后的输出结果是( )。
C
int x = 3; int m, n;
n = (++x) + (++x);
m = (x--) + (x--);
printf("%d %d\n", m, n); A、10 6 B、9 9 C、10 10 D、10 8
(18) 设有定义:int a[2][2]={1,2,3,4},(*p)
[2];,则在语句p=a;p++;后,**p的值为( )。B A、2 B、3 C、4
D、以上都不对
(19) 以下关于循环的程序的输出结果是
( )。C #include "stdio.h" void main() {
int k=4,n=0; for(;n<k;) {
n++;
if(n%3!=0) continue; k--; }
printf("%d %d",k,n); }
A、1 1 B、2 2 C、3 3 D、4 4
(20) 下列关于字符串操作的输出结果是
( )。D #include "stdio.h" #include "string.h" void main() {
char p1[20]="abcd",p2[20]="ABCD"; char str[50]="xyz";
strcpy(str+2,strcat(p1+2,p2+1)); printf("%s\n",str); }
19
A、xyabcAB B、abcABz C、Ababcz D、xycdBCD
(21) 下列选项中属于正确的switch语句的
是( )。C A、swicth(’a’) { case ‘a’:printf(“A\n”); case ‘b’:printf(“B\n”); } B、switch(1.0) { case 1.0 :printf(“A\n”); case 2.0 :printf(“B\n”);} C、switch((int)(x+2.5)) { case 1 :printf(“A\n”); case 1+2 :printf(“B\n”);} D、switch(“a”);
{ case “a” :printf(“A\n”); case “b” :printf(“B\n”);}
(22) 以下程序的运行结果为( )。A #include "stdio.h" void main(){ int y=2,a=1;
while(y--!=-1){ do{
a*=y;a++;
}while(y--);}
printf("%d,%d\n",a,y);} A、1,-2 B、2,1 C、1,0 D、2,-1
(23) C语言的输入与输出操作是由( )完
成的。C A、输入语句 B、输出语句
C、输入与输出函数 D、输入与输出语句
(24) 若有以下程序段 ? …
int a[ ]={4,0,2,3,1},i,j,t;
for(i=1;i<5;i++) {t=a[i];j=i-1;
while(j>=0&&t>a[j]) {a[j+1]=a[j];j--;} a[j+1]=t;} ? …
则该程序段的功能是( )。B
A、对数组a进行插入排序(升序) B、对数组a进行插入排序(降序) C、对数组a进行选择排序(升序) D、对数组a进行选择排序(降序)
(25) 执行下列程序中的输出语句后,x的值
是( )。A main() {int x ; printf(“%d\n”,(x=4*5,x*2,x+20));} A、20 B、40 C、60 D、80
(26) 下列程序段的输出结果是( )。B int c[ ]={1, 7, 12}; int *k=c+1;
printf("%d",*k++); A、2 B、7 C、8 D、12
(27) 下列程序的运行结果是( )。D main() {int a=4,y;
y=fn(a,++a); printf(“%d”,y);} int fn(x,c) {int b;
if(x<c)b=1;
else if(x==c)b=0; else b=-1 ; return(b); }
A、4 B、-1 C、1 D、0
(28) 有如下程序:int x=-20; printf
("%d\n",~x);,其输出结果将是( )。A A、19 B、20 C、21 D、-1
(29) 对于类型相同的指针变量,不能进行的
运算是( )。A A、+ B、- C、= D、==
(30) 已知: union u_type { int i; char ch; float a; }temp;
现在windows环境下,执行"temp.i=266;printf("%d",temp.ch)"的结果是( )。C A、266 B、256 C、10 D、1
(31) 以下程序的运行结果是( )。B #include "stdio.h" main() {
int a[]={1,2,3,4,5,6,7,8,9,10,11,12}; int *p=a+5,*q=NULL; q=p+5;
printf("%d %d\n",*p,*q); }
A、运行后报错 B、6 11
20
C、6 12 D、5 5
(32) 以下程序的输出结果是( )。C main()
{int a=0,b=1,c=0,d=20; if (a) d=d-10; else if (!b) if (!c) d=15; else d=25;
printf("d=%d\n",d); }
A、d=10 B、d=15 C、d=20 D、d=25
(33) 下面四组字符串中,都可以用作C语言
程序标识符的是( )。A A、 print _maf mx_2d aMb6 B、 I\am scanf mx_ MB C、 sign 3mf a.f A&B D、 if ty_pe x1# 5XY
(34) 下列程序的输出结果是( )。A int f()
{ static int i=0; int s=1; s+=i;i++; return s;} main() { int i , a=0;
21
for(i=0;i<6;i++)a+=f(); printf(“%d\n”,a);} A、21 B、24 C、25 D、15
(35) 设有定义:#define STR "12345";,则以下
叙述正确的是( )。C
A、宏名STR代替的是数值常量12345 B、宏定义以分号结束,编译时会产生错误信息
C、宏名STR代替的是字符串"12345" D、宏名STR代替的是字符串常量"12345"
(36) 以下程序运行后,如果从键盘上输入
ABCDE<回车>,则输出结果为( )。D #include "stdio.h" #include "string.h" func (char str [ ]) { int num =0;
while (*(str +num )!=’\0’)num ++;
return(num ); }
main()
{ char str [10],*p=str ;
gets(p); printf("%d\n",func(p)); } A、8 B、7 C、6 D、5
(37) 下列程序的输出结果是( )。C struct st
{ int x;int *y;}*p;
int dt[4]={10,20,30,40}; struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
main() { p=aa; printf(“%d ”,++(*p->y));
printf(“%d ”,(++p)->x); printf(“%d ”,++p->x);} A、20 20 10 B、21 60 50 C、11 60 61 D、31 70 60
(38) 以下函数的功能是( )。C char *fun(char *str1,char*str2) {
while((*str1)&&(*str2++=*str1++)); return str2; }
A、求字符串的长度
B、比较两个字符串的大小
C、将字符串str1复制到字符串str2中 D、将字符串str1接续到字符串str2中
(39) 以下程序的输出结果是( )。B #include <stdio.h>
void func(char **m) {
++*m;
printf("%s\n",*m); }
void main() {
static char *a[]={"first","second","three"}; char **n; n=a;
func(n); }
A、first B、irst C、second D、其他
(40) 以下语句的输出结果为( )。 B for(k=0;k<5;++k)
{ if(k==3) continue; printf("%d",k); } A、012 B、0124 C、01234
D、没有输出结果
(41) 下面的程序对输入的每一个数字出现
的次数进行计数,下划线处应填入的正确语句为( )。A #include "stdio.h" main()
{int i,ch, n[10];
for(i=0;i<10;++i) n[i]=0; while((ch=getchar())!=‘\n’) if(ch>=‘0’ && ch<=‘9’) ________;
for(i=0;i<10;++i)
printf("数字%d出现的次数是:%d\n",i,n[i]); }
A、n[ch-‘0’]++ B、n[ch]++ C、i++ D、n[i]++
(42) 以下程序的输出结果是( )。D #include "stdio.h" int *fun() {
int a[4],k;
for(k=0;k<4;k++)a[k]=k; return(a); }
void main() {
int *p,j; p=NULL; p=fun(); for(j=0;j<4;j++){printf("%d\n",*p);p++;} }
A、0000 B、0123 C、1111
D、输出不确定值
(43) 若有如下结构体定义,下列scanf用法
不正确的是( )。D
22
struct pupil {
char name[20]; int age; int sex; }pup[5],*p; p=pup;
A、scanf("%s",pup[0].name); B、scanf("%d",&pup[0].age); C、scanf("%d",&(p->sex)); D、scanf("%d",p->age);
(44) 与 y=(x>0?1:x<0?-1:0);的功能相同的
if语句是( )。A A、if (x>0)y=1; else if(x<0)y=-1; else y=0; B、if(x)
if(x>0)y=1; else if(x<0)y=-1; C、y=-1 if(x)
if(x>0)y=1;
else if(x==0)y=0; else y=-1; D、y=0;
if(x>=0) if(x>0)y=1; else y=-1;
(45) 下列描述中不正确的是( )。D A、字符型数组中可能存放字符串
B、可以对字符型数组进行整体输入、输出
C、可以对整型数组进行整体输入、输出 D、不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值
(46) 下面程序运行后,关于a、b、c的值应
输出为( )。A #include "stdio.h" main() {
int a=1, b=2, c=2,t;
23
while (a<b<c){t=a;a=b;b=t;c--;} printf("%d,%d,%d",a,b,c); }
A、1,2,0 B、2,1,0 C、1,2,1 D、2,1,1
(47) 在16位 PC机环境下,下列程序的输
出结果是( )。C struct tt
{ int n1;char n2;float n3;
union uu{int u1[3];char u2[3];}su; };
main() {printf(“%d\n”,sizeof(struct tt));} A、11 B、12 C、13 D、9
(48) 若有如下程序: void s(char *m,int n) {
*m=*m+3;n=n+3;
printf("%c,%c,",*m,n); }
void main() {
char p=?b?,q=?B?; s(&q,p);
printf("%c,%c\n",p,q); }
则程序运行后的输出结果是( )。A A、E,e,b,E B、e,E,b,F C、E,e,e,E D、e,E,b,E
(49) 以下程序的输出结果是( )。A #include <stdio.h> int main() {
char str[100]="ABCDEFG", *p=str;
int i;
for(i = 0; *p != ’\0’; p++,i++); printf("%d\n",i); return 0; }
A、7 B、8 C、99 D、100
(50) 某C编译系统规定,int型数组占2个
字节,则定义以下语句后,sizeof(aa)=( )。D struct {long num; char name[20]; union {float x; short y; }xy; }aa;
A、32 B、26 C、30 D、28
(51) 语句:printf(“%d”,!0);的输出结果
是( )。A A、1 B、0
C、有语法错误 ,不能执行 D、!0
(52) 函数f定义如下,执行语句“sum=f(4)
+f(2);”后,sum的值应为( )。C int f(int m) { static int i=0; int s=0; for(;i<=m;i++) s+=i; return s; } A、13 B、16 C、10 D、8
(53) fwrite函数的一般调用格式是( )。D A、fwrite(buffer,count,size,fp); B、fwrite(fp,count,size,buffer); C、fwrite(fp,size,count,buffer); D、fwrite(buffer,size,count,fp);
(54) 有以下程序段 main()
{ int i=1,sum=0,n;
scanf("%d",&n); do
{ i+=2; sum+=i ;
}while(i!=n); printf("%d",sum); }
若使程序的输出值为15,则应该从键盘输入的n的值是( )。D A、1 B、3 C、5 D、7
(55) 下列选项可作为C语言赋值语句的是
( )。A A、a=1;b=2; B、a=b=6 C、i--
D、y=int(x);
(56) 已知有以下的说明,
int a[]={8,1,2,5,0,4,7,6,3,9}; 那么a[*(a+a[3])]的值为( )。B A、5 B、0 C、4 D、7
(57) 已知 enum
name{zhao=1,qian,sun,li}man;执行下述程序段后的输出结果是( )。A man=0;
switch(man)
{ case 0: printf("People\n");break; case 1: printf("Man\n");break; case 2: printf("Woman\n");break;
24
default: printf("Error\n");break;
} 二、
A、People
B、Man (1) 以下叙述中正确的有( )。BC
C、Woman A、在程序的一行上可以出现多个有效的
D、Error 预处理命令行
B、宏定义不是C语句,不必在行末加分
(58) 以下能正确计算1×2×3×??×10的号
程序段是( )。C C、宏替换不占用运行时间,只占用编译
A、do {i = 1;s = 1; 时间
s = s * i; D、在以下定义中C R是称为“宏名” i + +; 的标识符
#define C R 045 } while (i <= 10);
B、do {i = 1;s = 0;
s = s * i; (2) 要求函数的功能是在一维数组a中查找 i + +; x值。若找到,则返回所在的下标值; } while (i <= 10); 否则,返回0。设数据放在数组元素的
C、i = 1;s = 1; a[1]到a[n]中。在以下给出的函数中, do {s = s * i; 不能正确执行此功能的有( )。ABD i + +; A 、 funa(int *a, int n, int x)
{ } while (i <= 10);
*a = x; D、i = 1;s = 0;
do {s = s * i; while(a[n] != x) n--; i + +; return n;
} } while (i <= 10);
B、funb(int *a, int n, int x)
{ (59) 以下程序的运行结果是( )。A
int k; void main()
{ for(k = 1; k <= n; k++) int a=4; char ch=?a?; if(a[k] == x) return k;
return 0; printf( "%d\n",(a&2)&&(ch>’A’));
} }
A、0 C、func(int a[], int n, int x)
{ B、1
int *k; C、2
a[0] = x; k = a+n; D、3
while(*k != x) k--;
return k - n; (60) 若指针p已正确定义,要使p指向两个
} 连续的整型动态存储单元,下列语句正
确的是( )。B D、fund(int a[], int n, int x)
{ A、p=2*(int*)malloc(sizeof(int));
int k = 0; B、p=(int*)malloc(2*sizeof(int));
do C、p=(int*)malloc(2*2);
{k++; D、p=(int*)malloc(2,sizeof(int));
25
}while((k < n+1)&&(a[k]!=x)); if((k < n+1)&&a[k] == x)) return k;
else return 0; }
(3) 下面说法正确的有( )。ABCD
A、共用体变量的地址和它各成员的地址都是同一地址
B、共用体内的成员可以是结构变量,反之亦然
C、在任一时刻,共用体变量的各成员只有一个有效
D、函数不可以返回一个共用体变量
(4) 如有两个字符数组a、b,则以下输入语
句正确的有( )。BCD A、gets(a,b);
B、scanf("%s%s",a,b); C、for(i=0;(a[i]=getchar())!=’\n’;i++); for(i=0;(b[i]=getchar())!=’\n’;i++); D、gets(a);gets(b);
(5) 当把下列四个表达式用作if语句的控
制表达式时,含义相同的选项有( )。(假设k>0)ACD A、k%2 B、k%2==0 C、(k%2)!=0 D、k%2==1
(6) 设有以下语句 struct st{ int n;
struct st *next; }; static struct st a[3]={5,&a[1],6,&a[2],7,},*p=&a[0];
若要使printf("%d\n",____)输出值为6,则下划线处表达式可以为( )。BCD A、p->n++ B、++p->n C、(++p)->n D、p->next->n
(7) 下列说法不正确的有( )。BCD
A、带参数的宏定义中的参数是没有类型的
B、宏展开将占用程序的运行时间
C、宏定义命令是C语言中的一种特殊语句
D、使用#include命令包含的头文件必须以".h"为后缀
(8) 下列有关函数调用的说法正确的有
( )。BCD
A、若用值传递方式,则形式参数不予分配内存
B、实际参数和形式参数不可以同名 C、主调函数和被调用函数可以不在同一个文件中
D、函数间传送数据可以使用外部全局变量
(9) 若变量已正确定义,以下能正确计算
1*2*3*4*5的程序段有( )。CD
A、i=1;s=1;
do { s=s*i;i++;} while(i<5); B、i=0;s=0; do
{ i++; s=s*i;} while(i<5);
C、i=1;s=1;
do { s=s*i;i++;} while(i<6); D、i=0;s=1; do
{ i++; s=s*i;} while(i<5);
(10) 设有定义语句: int x[6]={2,4,6,8,5,7},
*p=x,i;
要求依次输出x数组中6个元素中的值,下列选项中能完成此操作的语句有( )。ABC A、for(i=0;i<6;i++)printf(“%2d”,*(p++));
26
B、for(i=0;i<6;i++)printf(“%2d”,*(p+i)); C、for(i=0;i<6;i++)printf(“%2d”,*p++); D、for(i=0;i<6;i++)printf(“%2d”,(*p)++);
(11) 整型变量x=1,y=3,经下列( )计算后,
x的值等于6。ABD A、x=(x=1+2,x*2) B、x=y>2?6:5
C、x=9-(y--)-(y--) D、x=y*4.8/2-1
(12) 下列关于指针定义的描述正确的有
( )。ABCD
A、指针变量是一种变量,该变量是用来存放某个变量的地址值的
B、指针变量的类型与它所指向的变量类型一致
C、指针变量的命名规则与标识符相同 D、在定义指针时,”*”号表示指针变量的指向
(13) 以下对结构体变量stu1中成员age的引
用正确的有( )。ACD struct student {int age; int num; }stu1,*p; p=&stu1; A、stu1.age B、student.age C、p->age D、(*p).age
(14) 设有结构体类型: typedef struct str{ int no; char name[20]; }STR;
另有变量定义:STR a[20], x;
如希望实现向与文件指针变量fp关联的文件输出一个结构信息,则以下语句正确的有( )。ABC
A、fwrite(a, sizeof(STR), 1, fp); B、fwrite(&a[2], sizeof(STR), 1, fp); C、fwrite(&x, sizeof(STR), 1, fp); D、fwrite(x, sizeof(STR), 1, fp);
(15) t为int类型,进入下面循环之前,t的
值为0: for(;t=1;) { ……….}
则下列叙述不正确的有( )。AC A、循环控制表达式的值为0 B、循环控制表达式的值为1 C、循环控制表达式不合法 D、循环有可能是个无限循环
(16) 下列叙述不正确的有( )。AB
A、函数可以嵌套定义,但不能嵌套调用 B、函数可以嵌套调用,也可以嵌套定义 C、函数不可以嵌套定义,但可以递归调用
D、函数可以嵌套调用,但不能嵌套定义
(17) 关于数组与字符串,下列选项中属于不
合法的定义有( )。ABC A、char s="string";
B、int a[5]={0,1,2,3,4,5}; C、char s[5]="string"; D、char a[]={0,1,2,3,4,5};
(18) 若有定义: char
*str[]={"one","two","three"},**p=str; 则下列选项中可以表示出字符’t’的表达有( )。AD A、*str[2] B、*str+2 C、*(p+1) D、**++p
(19) 若有以下调用语句,则正确的fun函数
的首部包括( )。ABC main() { …
int a[50],n; …
fun(n, &a[9]);
27
…
}
A、void fun(int m, int x[])
B、void fun(int s, int h[41])
C、void fun(int p, int *s)
D、void fun(int n, int a)
(20) 已知有定义:
struct{
int no;
char name[20];
}a,b,*c;
则以下语句合法的有( )。CD
A、a=b;
B、a=&b;
C、c=&b;
D、*c=b
28