C语言复习题及参考答案一、单项选择1、以下叙述正确的是:__B__。A)C语言的源程序不必通过编译就可以直接运行。B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令。C)C语言源程序经编译形成的二进制代码可以直接运行。D)C语言中的函数不可以单独进行编译。2、以下4个用户定义标识符中,全部合法的一组是__A__。A)_mainencludesinB)if–maxturboC)txtREAL3COMD)intk_2_0013、以下不能定义为用户标识符的是_D__。A)scanfB)VoidC)_3comD)int4、C语言中用于结构化程序设计的3种基本结构是__A__。A)顺序结构、选择结构、循环结构B)if、switch、breakC)for、while、do-whileD)if、for、continue5、为解决某一特定问题而设计的指令序列称为__C__。A)文档B)语言C)程序D)系统6、用高级程序设计语言编写的程序称为__C__。A)目标程序B)可执行程序C)源程序D)伪代码7、能将高级语言编写的源程序转换成目标程序的是__B__。A)编辑程序B)编译程序C)驱动程序D)链接程序8、下列叙述中,正确一条是__C__。A)计算机语言中,只有机器语言属于低级语言。B)高级语言源程序可以被计算机直接执行。C)C语言属于高级语言。D)机器语言是所用机器无关的。9、以下符合C语言语法的实型常量是__C__。A)1.2E0.5B)3.14159EC).5E-3D)E1510、下面叙述正确的是__A___。A)C程序中注释部分可以出现在程序中任何合适的地方。B)花括号“{”和“}”只能作为函数体的定界符。C)构成C程序的基本单位是函数,所有函数名都可以由用户命名。D)分号是C语句之间的分隔符,不是语句的一部分。11、设有以下定义:inta=0;doubleb=1.25;charc=’A’;#defined2则下面语句中,错误是__D__。A)a++;B)b++;C)c++;D)d++;12、设有如下程序段:intx=2002,y=2003;printf(“%d\n”,(x,y));则以下叙述正确的是__D__。A)输出语句中格式说明的个数少于输出项的个数,不能正确输出。B)运行时产生出错信息。C)输出值为2002。D)输出值为2003。13、要求以下程序功能是计算:101...31211smain(){intn;floats;s=1.0;for(n=10;n1;n--)s=s+1/n;printf(“%6.4f\n”,s);}程序运行后输出结果错误,导致错误结果的程序行是__C__。A)s=1.0;B)for(n=10;n1;n--)C)s=s+1/n;D)printf(“%6.4f\n”,s);14、在一个C程序中__B__。A)main函数必须出现在所有函数之前。B)main函数可以在任何地方出现。C)main函数必须出现在所有函数之后。D)main函数必须出现在固定位置。15、下列关于C语言用户标识符的叙述中正确的是__B__。A)用户标识中可以出现下划线和中划线(减号)。B)用户标识符中不可以出现中划线,但可以出现下划线。C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头。D)用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头。16、有以下程序:main(){inti=10,j=1;printf(“%d,%d\n”,i--,++j);}执行后输出结果是__B_。A)9,2B)10,2C)9,1D)10,117、、一个C语言的源程序中,___A__。A)必须有一个主函数B)可能有多个主函数C)必须有除主函数外其它函数D)可以没有主函数18、C语言程序总是从_C__开始执行。A)第一条语句B)第一个函数C)主函数D)子程序19、在C语言中,不正确的shortint类型常数是__A__。A)32768B)0C)037D)0xAF20、C语言中运算对象必须是整形的运算符是__A__。A)%=B)/C)=D)*=21、设有intx=11;,则表达式(x++*1/3)的值是__A__。A)3B)4C)11D)1222、若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是_C__。A)1B)2C)2.0D)1223、若变量已正确定义并赋值,下面符合C语言语法的表达式是_B___。A)a:=b+1B)a=b=c+2C)int18.5%3D)a=a+7=c+b24、假定有以下变量定义:intk=7,x=12;,则值为3的表达式是_D__。A)x%=(k%=5)B)x%=(k-k%5)C)x%=k-k%5D)(x%=k)-(k%=5)25、设x和y均为int型变量,则下列语句:x+=y;y=x-y;x-=y;的功能是__D__。A)把x和y按从大到小排列B)把x和y按从小到大排列C)无确定结果D)交换x和y中的值26、设x、y、z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为_C_。A)4B)16C)32D)5227、有以下程序:main(){intx=102,y=012;printf(“%2d,%2d\n”,x,y);}执行后输出结果是__C__。A)10,01B)02,12C)102,10D)02,1028、有定义语句:intx,y;,若要通过语句scanf(“%d,%d”,&x,&y);使变量x得到数值11,变量y得到数值12,下面四组输入形式中,正确的是__C__。A)1112回车B)11,12回车C)11,12回车D)11,回车12回车29、设有定义:inta,*pa=&a;,以下scanf语句中能正确为变量a读入数据的是_A___。A)scanf(“%d”,pa);B)scanf(“%d”,a);C)scanf(“%d”,&pa);D)scanf(“%d”,*pa);30、若有变量a,i已正确定义,且i已正确赋值,合法的语句是_B___。A)a==1B)++iC)a=a++=5D)a=int(i)31、有如下程序:main(){inty=3,x=3,z=1;printf(“%d%d\n”,(++x,y++),z+2);}运行该程序的输出结果是__D__。A)34B)42C)43D)3332、以下程序的输出结果是__D__。main(){intk=17;printf(“%d,%o,%x\n”,k,k,k);}A)17,21,0x11B)17,17,17C)17,0x11,021D)17,21,1133、以下叙述正确是__D__。A)输入项可以是一个实型常量,如:scanf(“%d”,3.5)。B)只有格式控制,没有输入项,能正确输入数据到内存,如:scanf(“a=%d,b=%d);。C)当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:scanf(“%4.2f”,&f)。D)当输入数据时,必须指明变量的地址,例如:scanf(“%f”,&f);34、以下程序段中与语句k=ab?(bc?1:0):0;功能等价的是__A__。A)if((ab&&(bc))k=1;elsek=0;B)if((ab)||(bc))k=1;elsek=0;C)if(a=b)k=0;elseif(b=c)k=1;D)if(ab)k=1;elseif(bc)k=1;elsek=0;35、有以下程序:此题应注意短路逻辑main(){inta=1,b=2,m=0,n=0,k;k=(n=ba)||(m=ab);printf(“%d,%d\n”,k,m);}程序运行后的输出结果是__C__。A)0,0B)0,1C)1,0D)1,136、程序中对fun函数有如下说明Cvoid*fun();A)fun函数无返回值B)fun函数的返回值可以是任意的数据类型C)fun函数的返回值是无值型的指针类型D)指针fun指向一个函数,该函数无返回值37、当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值的为_A_。if(ab)if(cd)x=1;elseif(ac)if(bd)x=2;elsex=3;elsex=6;elsex=7;A)1B)2C)3D)438、当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是_C__。A)c=b=a;B)(a=c)||(b=c);C)(a=c)&&(b=c);D)a=c=b;39、能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是__D_。A)a=10ora=0B)a=0|a=10C)a=10&&a=0D)a=10||a=040、设有如下定义:inta=1,b=2,c=3,d=4,m=2,n=2;,则执行表达式:(m=ab)&&(n=cd)后,n的值为_B__。注意短路逻辑A)1B)2C)3D)041、语句:printf(“%d”,(a=2&&(b=-2));的输出结果是_D__。A)无输出B)结果不确定C)-1D)142、设intx=1,y=1;,表达式(!x||y--)的值是__B__。A)0B)1C)2D)-143、有以下程序:main(){inti,s=0;for(i=1;i10;i+=2)s+=i+1;printf(“%d\n”,s);}程序执行后的输出结果是__D__。A)自然数1~9的累加和A)自然数1~10的累加和C)自然数1~9中奇数之和D)自然数1~10中偶数之和44、有如下程序:main(){ints=0,a=1,n;scanf(“%d”,&n);do{s+=1;a=a-2;}while(a!=n);printf(“%d”,s);}若要使程序输出值为2,则应该从键盘输入的值是_B__。A)-1B)-3C)-5D)045、以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。#defineN10voidarrin(intx[N]){inti=0;while(iN)scanf(“%d”,___);}在下划线处应填写的是_C__。注意x为数组,它是地址A)x+iB)&x[i+1]C)x+(i++)D)&x[++i]46、有如下程序:main(){inti,sum;for(i=1;i=3;sum++)sum+=i;printf(“%d\n”,sum);}该程序的执行结果是_C__。A)6B)3C)死循环D)047、有如下程序:main(){intn=9;while(n6){n--;printf(“%d”,n);}}该程序段的输出结果是_B__。A)987B)876C)8765D)987648、以下程序的输出结果是_D__。main(){intx=10,y=10,i;for(i=0;x8;y=++i)printf(“%d%d”,x--,y);}A)10192B)9876C)10990D)10109149、以下程序的输出结果是_A__。main(){intn=4;while(n--)printf(“%d”,--n);}A)20B)31C)321D)21050、当执行以下程序段时,__A__。x=-1;do{x=x*x;}while(!x);A)循环体将执行1次B)循环体将执行2次C)循环体将执行无限次D)系统提示有语法错误51、执行语句:for(i=1;i++4;);后变量i的值是__C__。A)3B)4C)5D)不定52、有如下程序段:inta=14,b=15,x;charc=’A’;x=(a&&b)&&(c’B’);执行该段程序后,x的值为__D__。A)trueB)falseC)0D)153、若程序中定义了以下函数:doublemyadd(doublea,doubleb){return(a+b);}将其放在调用语句之后,则在调用之前应该对函数进行说明,以下选项中错误的说明是____。AA)doublemyadd(doublea,b)B)doublemyadd(double,double)