12009-2010上学期C语言复习题1一、选择题1.C语言提供的合法的数据类型关键字是(B)。(A)Double(B)short(C)integer(D)Char2.在C语言中,合法的长整型常数是(A)。(A)0L(B)4962710(C)0.054838743(D)2.1869e103.表达式:10!=9的值是(D)。(A)true(B)非零值(C)0(D)14.若有说明和语句:inta=5;a++;此处表达式a++的值是(C)。(A)7(B)6(C)5(D)45.C语言中最简单的数据类型包括(B)。(A)整型、实型、逻辑型(B)整型、实型、字符型(C)整型、字符型、逻辑型(D)整型、实型、逻辑型、字符型6.为表示关系x大于等于y大于等于z,应使用C语言表达式(A)。(A)(x=y)&&(y=z)(B)(x=y)AND(y=z)(C)(x=y=z)(D)(x=y)&(y=z)7.下列对C语言字符数组的描述中错误的是(C)。(A)字符数组可以存放字符串(B)字符数组中的字符串可以整体输入、输出(C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值(D)不可以用关系运算符对字符数组中的字符串进行比较8.以下说法中正确的是(C)。(A)C语言程序总是从第一个定义的函数开始执行(B)在C语言程序中,要调用的函数必须在main()函数中定义(C)C语言程序总是从main()函数开始执行(D)C语言程序中的main()函数必须放在程序的开始部分9.在下列选项中,不正确的赋值语句是(D)。(A)++t;(B)n1=(n2=(n3=0));(C)k=i==j;(D)a=b+c=1;10.若有说明:inti,j=7,*p=&i;,则与i=j;等价的语句是(B)。(A)i=*p;(B)*p=*&j;(C)i=&j;(D)i=**p;11.不能把字符串:Hello!赋给数组b的语句是(B)。(A)charb[10]={'H','e','l','l','o','!'};(B)charb[10];b=Hello!;(C)charb[10];strcpy(b,Hello!);(D)charb[10]=Hello!;12.若有以下说明:inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};charc='a',d,g;则数值为4的表达式是(D)。(A)a[g-c](B)a[4](C)a['d'-'c'](D)a['d'-c]13.若有以下说明:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为6的表达式是(C)。(A)*p+6(B)*(p+6)(C)*p+=5(D)p+514.若有以下定义和语句:char*s1=12345,*s2=1234;printf(%d\n,strlen(strcpy(s1,s2)));2则输出结果是(A)。(A)4(B)5(C)9(D)1015.若程序中有下面的说明和定义16.能正确表示a≥10或a≤0的关系表达式是(D)。(A)a=10ora=0(B)a=10│a=0(C)a≥10││a≤0(D)a=10││a=017.t为int类型,进入下面的循环之前,t的值为0while(t=l){……}则以下叙述中正确的是(B)(A)循环控制表达式的值为0(B)循环控制表达式的值为1(C)循环控制表达式不合法(D)以上说法都不对18.有以下程序main(){inti,s=0;for(i=1;i10;i+=2)s+=i+1;printf(“%d\n”,s);}程序执行后的输出结果是(D)。(A)自然数1~9的累加和(B)自然数1~10的累加和(C)自然数1~9中的奇数之和(D)自然数1~10中的偶数之和19.有以下程序#includestdio.hmain(){printf(%d\n,NULL);}程序运行后的输出结果是(A)。(A)0(B)1(C)-1(D)NULL没定义,出错20.以下程序的输出结果是(D)intf(){staticinti=0;ints=1;s+=i;i++;returns;}main(){inti,a=0;for(i=0;i5;i++)a+=f();printf(%d\n,a);}(A)20(B)24(C)25(D)1521.inta,b;scanf(a=%b,b=%d,&a,&b);以下程序的输入结果是(A)。main(){inti=010,j=10,k=0x10;printf(%d,%d,%d\n,i,j,k);}a)8,10,16(B)8,10,10(C)10,10,10(D)10,10,16322.以下程序段的输出结果是(C)。intx=3;do{printf(%3d,x-=2);}while(!(--x));(A)1(B)30(C)1-2(D)死循环23.有以下程序#includestdio.h#defineF(X,Y)(X)*(Y)main(){inta=3,b=4;printf(%d\n,F(a++,b++));}程序运行后的输出结果是(A)。(A)12(B)15(C)16(D)2024.有以下程序#defineN20fun(inta[],intn,intm){inti,j;for(i=m;i=n;i--)a[i+1]=a[i];}main(){inti,a[N]={1,2,3,4,5,6,7,8,9,10};fun(a,2,9);for(i=0;i5;i++)printf(%d,a[i]);}程序运行后的输出结果是(C)。(A)10234(B)12344(C)12334(D)1223425.若有以下程序#includestdio.hvoidf(intn);main(){voidf(intn);f(5);}voidf(intn){printf(%d\n,n);}则以下叙述中不正确的是(C)(A)若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f(B)若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f(C)对于以上程序,编译时系统会提示出错信息:提示对对f函数重复说明(D)函数f无返回值,所以可用void将其类型定义为无值型26.以下程序的输出结果是(B)(A)20(B)21(C)22(D)23main(){inti,k,a[10],p[3];k=5;for(i=0;i10;i++)a[i]=i;for(i=0;i3;i++)p[i]=a[i*(i+1)];4for(i=0;i3;i++)k+=p[i]*2;printf(%d\n,k);27.下列语句中符合C语言语法的赋值语句是(D)。(A)a=7+b+c=a+7(B)a=7+b++=a+7(C)a=7+b,b++,a+7(D)a=7+b,c=a+728.在C语言中,要求运算数必须是整型的运算符是(A)。(A)%(B)/(C)(D)!29.以下有4个用户标识符,其中合法的一个是(C)。(A)for(B)4d(C)f2_G3(D)short30.在C语言中,形参的缺省存储类是(A)。(A)auto(B)register(C)static(D)extern31.以下不能正确进行字符串赋初值的语句是(A)。(A)charstr[5]=good!;(B)charstr[]=good!;(C)char*str=good!;(D)charstr[5]={‘g',‘o',‘o',‘d'};32.若定义:inta=511,*b=&a;,则printf(%d\n,*b);的输出结果为(D)。(A)无确定值(B)a的地址(C)512(D)51133.以下程序中,while循环的循环次数是(D)。main(){inti=0;while(i10){if(i1)continue;if(i==5)break;i++;}......}(A)1(B)10(C)6(D)死循环,不能确定次数34.假定x和y为double型,则表达式x=2,y=x+3/2的值是(D)。(A)3.500000(B)3(C)2.000000(D)3.00000035.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是(B)。(A)地址传递(B)单向值传递(C)由实参传给形参,再由形参传回实参(D)传递方式由用户指定36.已知字母A的ASCⅡ码为十进制的65,下面程序的输出是(A)。(A)67,D(B)B,C(C)C,D(D)不确定的值main(){charch1,ch2;ch1='A'+'5'-'3';ch2='A'+'6'-'3';printf(%d,%c\n,ch1,ch2);}37.下面程序的输出是(C)。(A)0(B)1(C)3(D)不确定的值main(){intx=10,y=3;printf(%d\n,y=x/y);}38.若变量c为char类型,能正确判断出c为小写字母的表达式是(D)。(A)'a'=c='z'(B)(c='a')||(c='z')(C)('a'=c)and('z'=c)(D)(c='a')&&(c='z')39.下面程序的输出是(A)。(A)3(B)4(C)1(D)25main(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf(%d\n,*(p+2));}40.执行下面程序中输出语句后,a的值是(C)。(A)65(B)20(C)15(D)10main(){inta;printf(%d\n,(a=3*5,a*4,a+5));}41.若有说明:intn=2,*p=&n,*q=p;,则以下非法的赋值语句是(D)。(A)p=q;(B)*p=*q;(C)n=*q;(D)p=n;42.下面程序的输出是(C)。(A)003(B)012(C)103(D)112main(){inta=-1,b=4,k;k=(a++=0)&&(!(b--=0));printf(%d%d%d%\n,k,a,b);}43.下列函数的功能是(A)。(A)求字符串的长度(B)比较两个字符串的大小(C)将字符串x复制到字符串y(D)将字符串x连接到字符串y后面intfun1(char*x){char*y=x;while(*y++);return(y-x-1);}44.以下程序的输出结果是(D)。(A)1,5,9(B)1,4,7(C)3,5,7(D)3,6,9main(){inti,x[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i3;i++)printf(%d,,x[i][2-i]);45.若fp是指向某文件的指针,且已读到该文件的末尾,则C语言函数feof(fp)的返回是(C)。(A)EOF(B)-1(C)非零值(D)NULL46.下列关于C语言数据文件的叙述中正确的是(CD)。(A)文件由ASCII码字符序列组成,C语言只能读写文本文件(B)文件由二进制数据序列组成,C语言只能读写二进制文件(C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件(D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件47.有如下程序段inta=14,b=15,x;charc=’A’;x=(a&&b)&&(c’B’);执行该程序段后,x的值为(D)。(A)true(B)false(C)0(D)148.下面程序的输出是(B)。(A)741(B)852(C)963(D)875421main(){inty=9;for(;y0;y--){if(y%3==0){printf(%d,--y);continue;}}6}49.有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是(B)。(A)*p+9(B)*(p+8)(C)*p+=9(D)p+850.下面程序运行的结果是(B)。(A)2ba56(B)6521(C)6(D)62main(){charch[7]={“65ab21“};inti,s=0