《C语言知识点考试复习题库.docx》由会员分享,可在线阅读,更多相关《C语言知识点考试复习题库.docx(111页珍藏版)》请在课桌文档上搜索。
1、IC语言规定:简单变量作为实参时,它和对应形参之间的数据传递方式是(B)oA.地址传递B.单向值传递C.由实参传给形参,再由形参传回给实参D.由用户指定的传递方式2以下程序的输出结果是Ao#includevoidmain()intk=4,m=l,p;p=func(k,m);printf(%d,p);p=func(k,m);printf(%dn,p);)inta,b;func(a,b)staticintm=0,i=2;i+=m+l;m=i+a+b;return(m);)A)8,17B)8,16C)8,20D)8,83下列程序执行后输出的结果是D#includef(inta)intb=0;stat
2、icc=3:a=c+,b+;return(a);voidmain()inta=2,i,k;for(i=0;ik=f(a+);printf(,%dn,k);A)3B)0C)5D)44若有以下定义:Dchara;intb;floatc;doubled;则表达式a*b+d-c值的类型为A)floatB)intC)charD)double5以下程序的输出结果是Dmain()inta=-l,b=4,k;k=(+a0)&!(b-=0);printf(%d%d%dn,k,a,b);A)104B)103C)003D)0046D若有定义:intx,yjchara,b,c;并有以下输入数据(此处“CR”代表换行符
3、,/u代表空格):lu2AuBuC则能给X赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是A) scanf(x=%dy+%d,&x,&y);a=getchar();b=getchar();c=getchar();B) scanf(%d%d”,&x,&y);a=getchar();b=getchar();c=getchar();C) scanf(%d%d%c%c%c,&x,&y,&a,&b,&c);D) scanf(%d%d%c%c%c%c%c%c,&x,&y,&a,&a,&b,&b,&c,&c);7有以下程序Bmain()i11ti=10,j=l;pritf(%d
4、,%dn,i-,+j);)执行后输出的结果是A)9,2B)10,2C)9,1D)10,18有以下程序Cmain()intm=0256,n=256;printf(l%o%on”,m,n);以八进制输出无符号整数程序运行后的输出结果是。A)02560400B)0256256C)256400D)4004009下面程序的输出是(八)#includestdio.hvoidmain()(intx=100,a=10,b=20,okl=5,ok2=0;if(a)if(b!=15)if(!okl)x=1;elseif(ok2)x=10;x=-l;printf(%dn,x);)A)-1B)0C)1D)不确定的值1
5、0以下程序的输出为Bomain()inta=20,b=30,c=40;b=c;c=a;printf(a=%d,b=%d,c=%d,a,b,c);)A)a=20,b=30,c=20B)a=20,b=40,c=20C)a=30,b=40,c=20D)a=30,b=40,c=30H阅读下面的程序:A#includestdio.hvoidmain()/Iintk=-3;if(kx)y=0.0;elseif(10.0x)y=1.0x;elsey=l.O;printf(%fn,y);该程序的输出结果是A. 0.000000B. 0.250000C. 0.500000D. 1.00000015循环语句Bfo
6、r(x=0,y=0;(y!=l)(x4);x+)循环体;的循环体执行次数是OA)无限次B)不确定次C)4次D)3次16下面程序段的执行结果是C_a=2;b=l;c=2;while(abs2)S;B.if(strcmp(sl,s2)S;C.if(strcmp(s2,sl)0)S;D.if(strcmp(sl,s2)0)S;22下列选项中正确的语句组是DA.chars8;s=,Beijing;B.char*s;s=,Beijing;C.chars8;s=,Beijing,;D.char*s;s=Beijing;23以下程序完成3行3列矩阵的转置,请填空aij=aji#includevoidmain
7、()(i11ta33=l,2,3,4,5,6,7,8,9;inti,j,k;for(i=0;i3;i+)for(j=O;j5)break;while(a);printf(%d,1,y);25分析如下程序,此程序运行时输出结果是:20#includevoidtest(int*x,int*y);voidmain()/Iinta=10,b=20;test(&a,&b);printf(%d,1,a);)voidtest(int*x,int*y)intt;t=*x;*x=*y;*y=t;26分析如下程序,此程序运行时输出结果是:zhang#includeinta;floatb;char*c;UN;voi
8、dmain()(staticUNx=19,83.5,zhang;UN*px;px=&x;printf(r%s,px-c);27以下程序运行后的输出结果是NOoincludevoidmain()(inta=l,b=3,c=5;if(c=a+b)printf(,Yesn);elseprintf(Non);)28生注意:先将源程序文件705.c复制到D盘中操作,操作完成后,将此文件复制回来(覆盖)!要求:补充程序使得程序运行时完成以下功能:用函数调用完成求一个数组1。,0,2,4,5,8,10,12,2,40中的最大元素值要求:通过函数调用实现(计算方法在子函数中,通过主函数调用实现)29考生注意:
9、先将源程序文件IoLC复制到D盘中操作,操作完成后,将此文件复制回来(覆盖)!要求:补充程序使得程序运行时完成以下功能:编写一个程序,向屏幕输出以下信息:Hello!Verygood!30考生注意:先将源程序文件209.c复制到D盘中操作,操作完成后,将此文件复制回来(覆盖)!要求:补充程序使得程序运行时完成以下功能:计算公式:x+lx0y=x*x+20=x2要求:D从键盘输入X的值,根据X的值求y的值2)输出y的值31考生注意:先将源程序文件510.c复制到D盘中操作,操作完成后,将此文件复制回来(覆盖)!要求:补充程序使得程序运行时完成以下功能:编写程序打印如下图形:要求:1)5行的等腰三
10、角形2)每个字符占两列的宽度。答案题号:1分值:2得分:O答案:B试卷:D题号:2分值:2得分:2答案:A试卷:A题号:3分值:2得分:O答案:D试卷:B题号:4分值:2得分:O答案:D试卷:C题号:5分值:2得分:2答案:D试卷:D题号:6分值:2得分:O答案:D试卷:A题号:7分值:2得分:2答案:B试卷:B题号:8分值:2得分:2答案:C试卷:C题号:9分值:2得分:2答案:A试卷:A题号:10分值:2得分:2答案:B试卷:B题号:11分值:2得分:2答案:A试卷:A题号:12分值:2得分:2答案:B试卷:B题号:13分值:2得分:0答案:C试卷:D题号:14分值:2得分:0答案:C试卷
11、:A题号:15分值:2得分:0答案:B试卷:C题号:16分值:2得分:2答案:C试卷:C题号:17分值:2得分:0答案:B试卷:D题号:18分值:2得分:2答案:B试卷:B题号:19分值:2得分:2答案:B试卷:B题号:20分值:2得分:0答案:D试卷:A题号:21分值:2得分:0答案:D试卷:C题号:22分值:2得分:0答案:D试卷:题号:23分值:2得分:0答案:aij=aji试卷:题号:24分值:2得分:2答案:6试卷:6题号:25分值:2得分:2答案:20试卷:20题号:26分值:2得分:2答案:Zhang试卷:zhang题号:27分值:2得分:2答案:No试卷:No1在函数调用过程中
12、,如果函数funA调用了函数fmB,函数funB又调用了函数fu11A,则(B)A)称为函数的直接递归调用B)称为函数的间接递归调用C)称为函数的循环调用D)C语言中不允许这样的递归调2C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是BoA)voidB)intC)floatD)double3有如下函数调用语句如n(reel,rec2+rec3,rec4*rec5),该语句中含有的实参个数是AA)3B)4C)5D)有语法错误4有以下程序Bmain()charal=,M,a2=m;printf(%cn,(al,a2);以下叙述中正确的是A)程序输出大写字母MB)程序输出小写字母mC)格式
13、说明符不足,编译出错D)程序运行时产生出错信息5若变量a、il已正确定义,且i已正确赋值,合法的语句是BA)a=lB)+i;C)a=a+=5;D)a=int(i);6如这程序所示,如果运行时,输入18,18,那么b的值为多少?Dvoidmain()/inta,b;scanf(%d,%o,&a,&b);b+=a;printf(%d,b);i/A.36B.34C.输入错误,b的值不确定D.197以下叙述中正确的是DA)输入项可以是一个实型常量,如:scanf(%f,3.5);B)只有格式控制,没有输入项,也能正确输入数据到内存,例如:scanf(a=%d,b=%d);C)当输入一个实型数据时,格式
14、控制部分可以规定小数点后的位数,例如:scanf(M%4.2f,&f);D)当输入数据时,必须指明变量地址,例如:scanf(%f,&f);8若运行时给变量X输入12,则以下程序的运行结果是Amain()intx,y;SCanf(%d,&x);y=x12?x+10:x-12;Printf(dn,y);)A)OB)3C)2D)19阅读以下程序:Bmain()intx;scanf(%d,&x);if(x-100)PrirItf(%dn”,a100);elseprintf(u%dn,a6)printf(%d,n);n-;)该程序的输出结果是A. 987B. 876C. 8765D.9876152.语
15、句WhiIe(!E):中的表达式!E等价于A。A)E=OB)E!=1C)E!=OD)E=116有以下程序#includevoidmain()intx=0,y=3,z=l;while(z-O&+x4)y=y-1;printf(%d,%d,%dn,x,y,z);程序执行后的输出结果是BoA)l,2,0B)l,2,-1C)4,3,-lD)3,-2,-l17以下叙述中正确的是CA. C语言比其他语言高级B. C语言可以不用编译就能被计算机识别执行C. C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D. C语言出现的最晚,具有其他语言的一切优点18以下述叙不正确的是DA.一个C源程序可以由一
16、个或多个函数组成B.一个C源程序必须包含一个main函数C.C程序的基本组成单位是函数D.在C程序中注释说明只能位于一条语句的后面19D在设计程序时,应采纳的原则之一是A.不限制goto语句的使用B.减少或取消注解行C.程序越短越好D.程序结构应有助于读者理解20以下叙述中错误的是CoA.对于double类型数组,不可以直接用数组名对数组进行整体输入或输出B.数组名代表的是数组所占存储区的首地址,其值不可改变C.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息D.可以通过赋初值的方式确定数组元素的个数21给出以下定义:Ccharx=,abcdefg;char
17、y=7bc7d7ef7gt;则正确的叙述为A.数组X和数组Y等价B.数组X和数组Y的长度相同C.数组X的长度大于数组Y的长度D.数组X的长度小于数组Y的长度22考生已知:intc34;则对数组元素引用正确的是CA. c33B. c0.50C. c1-10D.以上表达都错误23下面程序运行结果是(15)includevoidmain()inta5=2,4,5,6,8;inti,s=O;for(i=0;i5;i+)if(i%2=0)s=s+ai;printf(%d,s);)24下列程序段的输出是_5,2intk,s;for(k=0,s=0;k6)printf(%d,n);n-;该程序的输出结果是A
18、. 987B. 876C. 8765D.98769设inta=5,b=6,表达式(b-=6)?+a:b的值是BA. 5B. 6C. 7D. 410设以下变量均为int类型,则值等于12的表达式是DA. (x=y=6,x+l,5+x)B. (x=y=6,y+l,5+y)C. (y=6,y+l,x=y,x+l)D. (x=6,x+l,y=6,x+y)11以下二维数组c的定义形式是CA. intc3B. floatc3,4C. doublec34D. floatc(3)(4)12以下能正确定义字符串的语句是DA. charstr=064z;B. charstr=,kx43;C. charstr=;D
19、. charstr=0;13所有C函数的结构都包括的三部分是CA.语句、花括号和函数体B.函数名、语句和函数体C.函数名、形式参数和函数体D.形式参数、语句和函数体14下列选项中不是结构化程序基本结构的是BA.顺序结构B.跳转分支结构C.选择结构D.循环结构15以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是CA. chars10=abcdefgw;B.chart=wabcdefgw,*s=t;C.chars10;s=abcdefgw;D.chars10;strcpy(s,wabcdefgw);16下列关于二维数组的说明语句正确是_BoA.二维数组在初始化时必须给出全部的值B.如果对
20、二维数组的全部元素赋初值,则第一维的长度可以省略C.二维数组不可以分行进行赋值D.二维数组在引用时可以省略行下标或列下标17)已有定义:a=fx7yz,charb=rxyz,;,以下叙述中正确的是BoA.数组a和b的长度相同B. a数组长度小于b数组长度C. a数组长度大于b数组长度D.上述说法都不对18有以下程序main()intp7=ll,13,14,15,16,17,18,i=0,k=0;while(i7&pi%2)k=k+pi;i+;printf(%dn,k);)执行后输出的结果是_D。A. 58B. 56C. 45D. 2419以下说法正确的是CA.C语言程序总是从第一个的函数开始执
21、行B.在C语言程序中,要调用函数必须在main()函数中定义C. C语言程序总是从main()函数开始执行D. C语言程序中的main()函数必须放在程序的开始部分20若i,j和k都是int型变量,则表达式(i=4,j=16,k=32,i=j)的值为BA. 4B. 16C. 32D. 521假定a和b为int型变量,则执行以下语句后b的值为Da=l;b=10;dob-=a;a+;while(b0);A)9B)-2C)-1D)82以下函数调用语句中,含有的实参个数是Cfun-sum(a,a+1,(a+2,a+3);A2B5C3D有语法错误3有如下程序B#includelongfib(intn)i
22、f(n2)return(fib(n-l)+fib(n-2);elsereturn(2);Ifvoidmain()Printf(%dn,fib(3);该程序的输出结果是A)2B)4C)6D)84若有以下定义:Dchara;intb;floatc;doubled;则表达式a*b+d-c值的类型为A)floatB)intC)charD)double5下面的变量说明中正确的是DoA.Inta,b,c;B.INTa,b,c;C.inta,b,cD.inta,b,c;6若有说明语句:inta;floatb;,以下输入语句正确的是CoA) scanf(,%f%f,&a,&b);B) scanf(%f%d,&
23、a,&b);C) scanf(%d,%f,&a,&b);D) scanf(%6.2f%6.2f,&a,&b);7执行下面程序段,给x、y赋值时,不能作为数据分隔符的是Dointx,y;scanf(%d%d,&x,&y);A)空格B)Tab键C)回车D)逗号8以下程序段的输出结果是_A#includestdio.hvoidmain()unsignedinti=65535;printf(%dn,i);)A)65535B)0C)有语法错误,无输出结果D)-19与y=(xO?l:x的功能相同的if语句是AA)if(xO)y=l;B)if(x)elseif(xO)y=l;elsey=0;elseif(x
24、=0)if(xO)y=l;if(xO)y=l;elseif(x=O)y=0;elsey=-l;elsey=-l;10下面关于switch语句和break语句的结论中,正确的是(B)A)break语句是switch语句的一部分。B)在SWitCh语句中,可以根据需要确定使用或不使用break语句。C)在switch语句中,必须使用break语句。D)break语句只能用在switch语句中。11以下4个选项中,不能看作一条语句的是(D)A);B)a=0,b=0,c=0;C)if(a0);D)if(b=O)m=l;n=2;12设y是int型,请写出y为奇数的关系表达式可以表示为_A_。A. (y%
25、2)=lB. (y%2)=0C. (y2)=lD. (y2)=013若已知a=10,则表达式!a的值是_A_A. 0B. 10C. 1D.-1014有如下程序Bmain()inta=2,b=-l,c=2;if(a)if(0b)c=0;c+;printf(,%dn,c);)该程序的输出结果是A. 0B. 1C. 2D. 315下面程序段的运行结果是_Dointa=l;b=2;c=2;while(ab)t=a;a=b;b=t;c;printf(,%d,%d,%d,a,b,c);A)l,2,0B)2,l,0C)l,2,lD)2,l,l16若X是int型变量,以下程序段的输出结果是Dfor(x=3;x
26、6;x+)Printf(X%2)?(*%d”):(#%dn),x);A)*3B)#3C)#3D)*3#4#4*4*4#5*5*5#517下面标识符中,不合法的标识符是BA.AbB.a#bC.x_y_2D.x218以下选项中不合法的用户标识符是BA_123BprintfCA#DDlm19在设计程序时,应采纳的原则之一是DA.不限制goto语句的使用B.减少或取消注解行C.程序越短越好D.程序结构应有助于读者理解20以下正确的定义语句是DoA) intalj4j=1,2,3,4,5);B) floatx3=l,2,3);C) longb23=l,l,2,l,2,3;D) doubley3=0;21
27、有以下定义chara10,*b=a;不能给数组a输入字符串的语句是_BA)gets(a)B)gets(a0)C)gets(&a0);D)gets(b);22若有说明:inta34=0;则下面正确的叙述是DA)只有元素a00可得到初值0;B)此说明语句不正确;。数组a中各元素都可得到初值,但其值不一定为0;D)数组a中每个元素均可得到初值0;23以下程序运行后的输出结果是abcbcc_ocharCh=abc,x4;inti;for(i=0;i3;i+)strcpy(xi,ch);for(i=0;i3;i+)printf(M%sM,xii);24分析如下程序,此程序运行时输出结果是:15#incl
28、udevoidmain()(inti,m=0;ints10=15,2,-45,21,58,100,255,3,999,-100;for(i=l;i10;i+)(m=s0;if(msi)m=si;)printf(%dn,m);25分析如下程序,若此程序运行时输入:10,15,9则输出结果是15:#includeintmax(inta,intb);voidmain()(intx,y,z,t,m;scanf(H%d,%d,%d,&x,&y,&z);t=max(x,y);m=max(t,z);printf(%d,m);)intmax(inta,intb)(if(ab)return(a);elseret
29、urn(b);)26分析如下程序,此程序运行时输出结果是:zhang#includetypedefstructinta;floatb;char*c;UN;voidmain()staticUNx=19,83.5,zhang,;UN*px;px=&x;printf(%s,px-c);27如果想输出字符,则应该在“格式控制”字符串中用一连续两个表示。1.若变量已正确定义并赋值,以下符合C语言语法的表达式是BA. a:=b+lB. a=b=c+2C. int18.5%3D. a=a+72.下列程序的输出结果是Amain()doubled=3.0;intx,y;x=1.25;y=x5;printf(dn
30、,d*y);A. OB. 0.75C. 3.0D. 1.253 .一个C语言程序是由BA.一个主程序和若干子程序组成B.函数组成C.若干过程组成D.若干子程序组成4 .阅读下列程序,则在执行后,程序的运行结果为Dmain()chara30=nicetomeetyou!;strcpy(a+strlen(a)2,you);printf(%sn,a);A. nicetomeetyouyouB. nicetoC. meetyouyouD. nicetoyou5 .设y是int型,请写出y为偶数的关系表达式可以表示为A.(y%2)=lC. (y2)=lD. (y2)=06 .下面四个选项中,均是不合法的
31、用户标识符的选项是CA. AP_0doB. floatIaO_AC. b-agotointD. _123tempint7 .以下叙述中正确的是_A。A.C程序中注释部分可以出现在程序中任意合适的地方8 .花括号和“产只能作为函数体的定界符C.构成C程序的基本单位是函数,所有函数名都可以由用户命名D.分号是C语句之间的分隔符,不是语句的一部分8 .设inta=5,b=6,表达式(+a=b-)?+a:-b的值是C_A. 5B. 6C. 7D. 49 .在下列选项中,没有构成死循环的是_DA.inti=100;while(1)i=i+l;if(i=100)break;C. intk=10000;do
32、k+;while(k10000);D. ints=36;while(s)s;10 .设有数组定义:chararray=,China;则数组array所占的空间为CA. 4个字节B. 5个字节C. 6个字节D. 7个字节11 .执行下面的程序段后,变量k中的值为Aintk=3,s2;s0=k;k=s1*10;A.不定值B. 33C. 30D. 1012 .有如下程序Bmain()inta=2,b=-l,c=2;if(a)if(0b)c=0;c+;printf(%dn,c);)该程序的输出结果是A. 0B. 1C. 2D. 313 .下面说明不正确的是DA. chara10=china;B. ch
33、ara10,*p=a;p=nchinanC. char*a;a=china;D.chara10Jp;P=a=ChirIa”14 .已知intk;floatm=-3;执行语句k=m%2;后,变量k的值是DA. -1B. 0C.1D.语句有错误15 .以下不能正确进行字符串赋初值的语句为OAA. charstr5=good!B. charstr=good!C. char*str=good!D. charstr5=g,o,o,d16 .以下程序的输出结果是Bmain()inti,k,a10,p3:K=5;for(i=O;i10;i+)ai=i;for(i=O;i3ji)pi=ai*(i+l);for
34、(i=O;i3ji+)k+=pi*2;printf(,%dn,k);IfA. 20B. 21C. 22D. 2317 .C语言程序由组成。CA.子程序B.主程序和子程序C.函数D.过程18 .以下描述中正确的是CA.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句8. do-while循环由do开始,用while结束,在while(表达式)后面不能写分号C.在do-while循环体中,是先执行一次循环,再进行判断D.do-while循环中,根据情况可以省略while19.有如下程序Dmain()(intn5=0,0,0;inti,k=2;for(i=0;i
35、k;i+)11i=11i+1;printf(%dn,nk);)该程序的输出结果是OA.不确定的值B. 2C. 1D. 020.下列关于一维数组的应用叙述正确的是A.数组元素可以先引用后定义B.C语言规定只能逐个引用数组中的元素,而不能一次引用整个数组C.数组元素可以被赋值,但不可以参与组成表达式D.如果给全部元素赋值,则在数组说明中必须给出数组元素的个数21 .分析如下程序,此程序运行时输出结果是:999includevoidmain()Iinti,m=O;ints10=15,2,-45,21,58,100,255,3,999,-100;m=sO;for(i=l;i10;i+)(if(msi)m=si;)printf(%dn,m);)22 .分析如下程序,此程序运行时输出结果是:6includevoidmain()inti,j,n=O;for(i=0;i2;i+)(n+;for(j=0;j=3;j+)(if(j%2)continue;n+;)printf(%d,1,n);)23 .分析如下程序,若此程序运行输出结果是:35#includevoidfun(int*x)(printf(%dn,*x+10);