C语言复习题及参考答案(处理) (1)

申明敬告: 本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

文档介绍

C语言复习题及参考答案(处理) (1)

C语言复习题一、单项选择1、以下叙述正确的是:__B__。A)C语言的源程序不必通过编译就可以直接运行。B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令。C)C语言源程序经编译形成的二进制代码可以直接运行。D)C语言中的函数不可以单独进行编译。2、以下4个用户定义标识符中,全部合法的一组是__A__。A)_mainencludesin B)if–maxturbo C)txtREAL3COM D)intk_2_0013、以下不能定义为用户标识符的是_D__。A)scanf  B)Void  C)_3com  D)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.5  B)3.14159E  C).5E-3  D)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(“%dn”,(x,y));则以下叙述正确的是__D__。nA)输出语句中格式说明的个数少于输出项的个数,不能正确输出。B)运行时产生出错信息。C)输出值为2002。D)输出值为2003。13、要求以下程序功能是计算:main(){intn;floats;s=1.0;for(n=10;n>1;n--)s=s+1/n;printf(“%6.4fn”,s);}程序运行后输出结果错误,导致错误结果的程序行是__C__。A)s=1.0;  B)for(n=10;n>1;n--)  C)s=s+1/n;  D)printf(“%6.4fn”,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,%dn”,i--,++j);}执行后输出结果是__B_。A)9,2B)10,2  C)9,1  D)10,117、、一个C语言的源程序中,___A__。A)必须有一个主函数      B)可能有多个主函数C)必须有除主函数外其它函数  D)可以没有主函数18、C语言程序总是从_C__开始执行。A)第一条语句   B)第一个函数  C)主函数  D)子程序19、在C语言中,不正确的shortint类型常数是__A__。A)32768  B)0  C)037  D)0xAF20、C语言中运算对象必须是整形的运算符是__A__。A)%=B)/C)=D)*=21、设有intx=11;,则表达式(x++*1/3)的值是__A__。A)3  B)4  C)11  D)1222、若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是_C__。A)1  B)2  C)2.0  D)1223、若变量已正确定义并赋值,下面符合C语言语法的表达式是_B___。A)a:=b+1  B)a=b=c+2  C)int18.5%3  D)a=a+7=c+b24、假定有以下变量定义:intk=7,x=12;,则值为3的表达式是_D__。A)x%=(k%=5)  B)x%=(k-k%5)  C)x%=k-k%5  D)(x%=k)-(k%=5)25、设x和y均为int型变量,则下列语句:x+=y;y=x-y;x-=y;的功能是__D__。A)把x和y按从大到小排列  B)把x和y按从小到大排列nC)无确定结果        D)交换x和y中的值26、设x、y、z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为_C_。A)4  B)16  C)32  D)5227、有以下程序:main(){intx=102,y=012;printf(“%2d,%2dn”,x,y);}执行后输出结果是__C__。A)10,01  B)02,12  C)102,10  D)02,1028、有定义语句:intx,y;,若要通过语句scanf(“%d,%d”,&x,&y);使变量x得到数值11,变量y得到数值12,下面四组输入形式中,正确的是__C__。A)11 12<回车>  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==1  B)++i  C)a=a++=5  D)a=int(i)31、有如下程序:main(){inty=3,x=3,z=1;printf(“%d%dn”,(++x,y++),z+2);}运行该程序的输出结果是__D__。A)3 4  B)4 2  C)4 3  D)3 332、以下程序的输出结果是__D__。main(){intk=17;printf(“%d,%o,%xn”,k,k,k);}A)17,21,0x11  B)17,17,17C)17,0x11,021  D)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=a>b?(b>c?1:0):0;功能等价的是__A__。A)if((a>b&&(b>c))k=1;elsek=0; B)if((a>b)||(b>c))k=1;elsek=0;C)if(a<=b)k=0;elseif(b<=c)k=1;  D)if(a>b)k=1;elseif(b>c)k=1;elsek=0;35、有以下程序:此题应注意短路逻辑main(){inta=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=ad)x=1;elseif(ad)x=2;elsex=3;elsex=6;elsex=7;A)1  B)2  C)3  D)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<=0  B)a>=0|a<=10  C)a>=10&&a<=0  D)a>=10||a<=040、设有如下定义:inta=1,b=2,c=3,d=4,m=2,n=2;,则执行表达式:(m=a>b)&&(n=c>d)后,n的值为_B__。注意短路逻辑A)1   B)2   C)3   D)041、语句:printf(“%d”,(a=2&&(b=-2));的输出结果是_D__。A)无输出  B)结果不确定   C)-1  D)142、设intx=1,y=1;,表达式(!x||y--)的值是__B__。A)0   B)1   C)2   D)-143、有以下程序:main(){inti,s=0;for(i=1;i<10;i+=2)s+=i+1;printf(“%dn”,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)-1   B)-3  C)-5  D)045、以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。#defineN10voidarrin(intx[N]){inti=0;while(i6){n--;printf(“%d”,n);}}该程序段的输出结果是_B__。A)987  B)876  C)8765  D)987648、以下程序的输出结果是_D__。main(){intx=10,y=10,i;for(i=0;x>8;y=++i)printf(“%d%d”,x--,y);}nA)10192  B)9876  C)10990  D)10109149、以下程序的输出结果是_A__。main(){intn=4;while(n--)printf(“%d”,--n);}A)20   B)31   C)321   D)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)3   B)4   C)5   D)不定52、有如下程序段:inta=14,b=15,x;charc=’A’;x=(a&&b)&&(c<’B’);执行该段程序后,x的值为__D__。A)true   B)false  C)0   D)153、若程序中定义了以下函数:doublemyadd(doublea,doubleb){return(a+b);}将其放在调用语句之后,则在调用之前应该对函数进行说明,以下选项中错误的说明是____。 AA)doublemyadd(doublea,b)  B)doublemyadd(double,double)C)doublemyadd(doubleb,doublea)  D)doublemyadd(doublex,doubley)54、有以下函数定义:voidfun(intn,doublex){……}若以下选项中的变量都已经正确定义并赋值,则对函数fun的正确调用语句是_C__。A)fun(inty,doublem);  B)k=fun(10,12.5);C)fun(x,n); D)voidfun(n,x);55、设有定义:intn=0,*p=&n,**q=&p;下列选项中,正确的赋值语句是_D_。A)p=1B)*q=2C)q=pD)*p=556、有以下程序:#includemain(){printf(“%dn”,NULL);}程序运行后的输出结果是__A_。A)0B)1C)-1D)NULL没定义,出错57、已经定义以下函数:fun(int*p){return*p;}该函数的返回值是_C__。A)不确定值B)形参p中存放的值C)形参p所指存储单元中的值D)形参p的地址值58、有以下程序段:main(){inta=5,*b,**c;c=&b;b=&a;…}程序在执行了c=&b;b=&a;语句后,表达式**c的值是__C_。A)变量a的地址B)变量b中的值C)变量a中的值D)变量b的地址59、有如下程序段 int*p,a=10,b=1;p=&a;a=*p+b;执行该程序段后,a的值为_B__。nA)12B)11C)10D)编译出错60、下列程序的输出结果是_A__。voidfunc(int*a,intb[]){b[0]=*a+6;}main(){inta,b[5];a=0;b[0]=3;func(&a,b);printf(“%dn”,b[0]);}A)6B)7C)8D)961、有以下程序:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[5];b中的值是_D__。A)5B)6C)8D)962、以下不能正确定义二维数组的选项是_D__。A)inta[2][2]={{1},{2}}B)inta[][2]={1,2,3,4}C)inta[2][2]={{1},2,3}D)inta[2][]={{1,2},{3,4}}63、有以下程序:main(){intm[][3]={1,4,7,2,5,8,3,6,9};inti,j,k=2;for(i=0;i<3;i++)printf(“%d”,m[k][i]);}程序运行后的输出结果是_C__。A)456B)258C)369D)789二、填空题1、以下sum函数的功能是计算下列级数之和。,请给函数中的各变量正确赋初值。doublesum(doublex,intn){inti;doublea,b,s;_________s=1.0;a=1;b=1;for(i=1;i<=n;i++){a=a*x;b=b*i;s=s+a/b;}returns;}2、若有语句:inti=-19,j=i%4;printf(“%dn”,j);则输出结果是__-3___。(注:%运算结果的符号与%前面数据的符号相同)3、若有定义:inta=10,b=9,c=8;接着顺序执行下列语句后,变量b中的值是__3__。c=(a-=(b-5));c=(a%11)+(b=3);4、设有以下变量定义,并已赋确定的值,charw;intx;floaty;doublez;则表达式:w*x+z-y年求得的数据类型为__double或双精度型。5、有以下语句段:intn1=10,n2=20;printf(“_____”,n1,n2);nn1=%dnn2=%d要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。n1=10n2=206、若有以下程序:main(){inti,j;scanf(“i=%d,j=%d”,&i,&j);printf(“i=%d,j=%dn”,i,j);}要求给i赋值10,给j赋值20,则应该从键盘输入_i=10,j=20<回车>____。n7、若想通过以下输入语句使得a=5.0,b=4,c=3,则输入数据的形式应该是_5.0,4,c=3<回车>或5,4,c=3<回车>_。…….intb,c;floata;scanf(“%f,%d,c=%d”,&a,&b,&c);……..8、有4条语句:x++;、++x;、x=x+1;、x=1+x;,执行后都使变量x中的值增1,写出一条同一功能的赋值语句(不得与列举的相同)__x+=1;__。9、以下程序的输出的结果是_261__。main(){inta=177;printf(“%on”,a);}10、以下程序的输出结果是_2,1___。main(){inta=1,b=2;a=a+b;b=a-b;a=a-b;printf(“%d,%dn”,a,b);}11、有以下程序:main(){intn=0,m=1,x=2;if(!n)x-=1;if(m)x-=2;if(x)x-=3;printf(“%dn”,x);}执行后输出结果是_-4___。12、以下程序运行后的输出结果是__3__。main(){intp=30;printf(“%dn”,(p/3>0?p/10:p%3));}13、以下程序运行后的输出结果是__yes__。main(){inta=1,b=3,c=5;if(c=a+b)printf(“yesn”);elseprintf(“non”);14、有以下程序:main(){intp,a=5;if(p=a!=0)printf(“%d”,p);elseprintf(“%dn”,p+2);}执行后输出结果是_1___。15、下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请将程序补充完整,使之能完成需要的功能。i<10或i<=9j%3!=0或j%3或j/3*3!=jmain(){inti,j;for(i=0;_____;i++){j=i*10+6;if(___)continue;printf(“%d”,j);}}16、下面的if语句与y=(x>=10)?3*x-11:(x<1)?x:2*x-1;的功能相同,请补充程序,使之能完成要求的功能。1、x<102、x>=1if(_1_)if(_2__)y=2*x-1;elsey=x;elsey=3*x-11;17、若x为int类型,请以最简单的形式写出与逻辑表达式!x等价的C语言关系表达式__。nx==018、表示“整数x的绝对值大于5”时值为“真”的C语言表达式是___。x>5||x<-519、有以下程序:main(){intt=1,i=5;for(;i>=0;i--)t*=i;printf(“%dn”,t);}执行后输出的结果是___。0注意此题的技巧20、执行以下程序后,输出’#’号的个数是___。6#includemain(){inti,j;for(i=1;i<5;i++)for(j=2;j<=i;j++)putchar(‘#’);}21、要使以下程序段输出10个整数,请填入一个整数。for(i=0;i<=_____;printf(“%dn”,i+=2));18或1922、函数pi的功能是根据以下公式求π的近似值。(π*π)/6=1+1/(2*2)+1/(3*3)+1/(n*n)请在下面的函数中填空,完成求π的功能。#includedoublepi(longn){doubles=0.0;longi;for(i=1;i<=n;i++)s=s+____;1.0/(i*i)return(sqrt(6*s));}23、若输入字符串:abcde<回车>,则以下while循环执行__0__次。while((ch=getchar())==’e’)printf(“*”);24、下面程序的功能是:计算1~10之间奇数之和及偶数之和,请填空。main(){inta,b,c,i;a=c=0;for(i=0;i<=10;i+=2){a+=i;______;}c=c+i+1;printf(“偶数之和=%dn”,a);printf(“奇数之和=%dn”,c);}25、已知字符’A’的ASCII码值是65,以下语句的输出结果是____。B66charch=’B’;printf(“%c%dn”,ch,ch);26、有以下程序:#includemain(){charch1,ch2;intn1,n2;ch1=getchar();ch2=getchar();n1=ch1-‘0’;n2=n1*10+(ch2-‘0’);printf(“%dn”,n2);}程序运行时输入:12<回车>,执行后输出结果是____。1227、以下程序运行后的输出结果是____。bmain(){charm;m=’B’+32;printf(“%cn”,m);}28、有以下程序:main(){chara;a=’H’-‘A’+’0’;printf(“%cn”,a);}729、已知大写字母A的ASCII码值是65,小写字母a的ASCII码值是97,则用八进制表示的字符常量’101’是____。A30、函数fun的功能是计算xn。doublefun(doublex,intn){inti;doubley=1;for(i=1;i<=n;i++)y=y*x;returny;}主函数已正确定义m、a、b变量并赋值,并调用fun函数计算:m=a4+b4-(a+b)3。实现这一计算的函数调用语句为______。m=fun(a,4)+fun(b,4)-fun(a+b,3);31、以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。nintfun(intn){intm=0,f=1,i;for(i=1;i<=n;i++){m+=i*f;f=______;}returnm;}f=(-1)*fmain(){printf(“%dn”,_____);}fun(10)32、下面的sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指内存空间中,形成一个新字符串s。请补全程序。voidsstrcpy(char*s,char*t){while(*s++=____);}*t++main(){charstr1[100],str2[]=”abcdefgh”;sstrycpy(str1,str2);printf(“%sn”,str1);}三、阅读程序,写出运行结果1、以下程序的运行结果是___。efgh#includechar*ss(char*s){returns+strlen(s)/2;}main(){char*p,*str=”abcdefgh”;p=ss(str);printf(“%sn”,p);}2、有以下程序:main(){inta[4][4]={{1,2,-3,4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};inti,j,s=0;for(i=0;i<4;i++){for(j=0;j<4;j++){if(a[i][j]<0)continue;if(a[i][j]==0)break;s+=a[i][j];}}printf(“%dn”,s);}执行后输出的结果是___。1+2+4+23+32=623、以下主程序运行后的输出结果是_132___。main(){inti,m=0,n=0,k=0;for(i=9;i<=11;i++)switch(i%10){case0:m++;n++;break;case10:n++;break;default:k++;n++;}printf(“%d%d%dn”,m,n,k);}4、若有以下程序:此题要注意main(){inta=4,b=3,c=5,t=0;if(a=i)m=1;n++;printf(“%dn”,n);}7、有以下程序:charfun(charx,chary){if(xy)f(x,y);elseif(y>z)f(y,z);elsef(x,z);printf("%d,%d,%dn",x,y,z);}执行后输出结果是1,3,29、有以下程序  main(){inti,n=0;for(i=2;i<5;i++){do{if(i%3)continue;nn++;}while(!i);n++;}printf("n=%dn",n);}程序执行后的输出结果是n=410、有以下程序#includemain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf("a=%d,b=%dn",a,b);}程序的运行结果是a=2,b=111、有以下程序#includemain(){intx=8;for(;x>0;x--){if(x%3){printf("%d,",x--);continue;}printf("%d,",--x);}}程序的运行结果是8,5,4,2n12、有以下程序:voidsum(int*a){a[0]=a[1];}main(){intaa[10]=(1,2,3,4,5,6,7,8,9,10),i;for(i=2;i>=0;i--)sum(&aa[i]);printf(“%dn”,aa[0]);}程序运行后的输出结果是__4__。13、有以下程序:int*f(int*x,int*y){if(*x<*y)returnx;elsereturny;}main(){inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf(“%d,%d,%dn”,*p,*q,*r);}程序运行后的输出结果是_7,8,7___。14、有以下程序:fun(inta,intb){if(a>b)return(a);elsereturn(b);}main(){intx=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf(“%dn”,r);}程序运行后的输出结果是__12__。15、下列程序执行后的输出结果是_6__。intb=2;intfunc(int*a){b+=*a;return(b);}main(){inta=2,res=2;res+=func(&a);printf(“%dn”,res);}四、编程1、用选择法和冒泡法对输入的数据排序p1152、字符串处理函数编程,指针法和数组法,包括字符串复制,字符串连接,求字符串长度。3、输入一个字符串,过滤此串,只保留串中的字母字符,并统计新生成的串中饭包含的字母个数。P1414、用迭代法、数组法、递归法输出fibonacci数列1,1,2,3,5,8,13……的前42项,要求每行输出6项。5、编写程序计算a+aa+aaa+aa……a(n个a)之和。要求定义并调用函数fn(a,n),它的功能是返回aa……a(n个a)。例如,fn(3,2)的返回值是33。P1146、在屏幕上按每行10个的格式输出100-200间的全部素数P887、用递归的方法计算n!的值,n从键盘输入。P1078、将一个磁盘文件中的信息复制到另一个磁盘文件中p220
查看更多

相关文章

您可能关注的文档