C语言复习题及答案_第1页
C语言复习题及答案_第2页
C语言复习题及答案_第3页
免费预览已结束,剩余37页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、c语言复习题及答案复习a:一、单项选择题1、如果要把常量327存入变量a中,a不能定义的类型是哪一个? ( )a) in b) cr c) on d) flat 2、若x 为usignin 型变量,则执行下列语句后x值为( ) =5535; printf(“%dn”,x);)65535 )1 )无定值 d)13、有以下程序main()ita=,=2,=0,n=,k;k=(n=ba)|(m=a);prit(%d,%dn,k,);程序运行后的输出结果是( ) a)0,0 b),1 c)1,0 d)1,14、在语言中,如果下面的变量都是n类型,则输出的结果是( )。 su=pad5; pam + +

2、 ,a +, + + ad; printf(%dn,pa); a)7 b) 6 c)5 )45、以下程序的输出结果是()。mi() int a=4,b5,c=,;d=!&!b|!c;rint(%d,d); )1)0c)非的数d)-1、当执行以下程序段时()。x=-1;dox=x*;whil(!x);a)循环体将执行一次b)循环体将执行两次c)循环体将执行无限次)系统将提示有语法错误、全局变量的存储类型可以定义为( )。a)auo或stti b) extern或regir c) auto或xtern d) xern或satic8、定义全局变量时,若变量的的存储类别缺省,则默认的存储类型是( )。

3、)ato )egie c)extern d) staic、已知:int a, x; 则正确的赋值语句是( )。 a) =(a+a2)/2;b)*a+1; c) a=(x, x+,x+2);d) a=go;10、已知:nt a, *p=&a; 则下列函数调用中错误的是( )。 a) scan(d,&a);b) caf(%d, p); ) pritf(d, a);d) int(%, );1、下述程序的输出结果是( )。#nud stdi.hvo man() stuccomplex int ; n y; cnum21,3,2,; pritf(“d”,cum0cnum0.x*cn1.x) ; ) 0

4、)1 c)3 ) 1、下述程序的输出结果是( )。 #ncude vidmin( ) unon ungned ; nsine in 4; z ; .i=0x39; z.i0x6; pritf(“%c”,zc); a) 6 ) c)0 d) 313、下述关于c语言文件操作的结论中,()是正确的。a)对文件操作必须先关闭文件b)对文件操作必须先打开文件c)对文件操作顺序无要求)对文件操作前必须先测试文件是否存在,然后再打开文件14、以下程序的输出结果是( )。 main()ha c4=23,4,78,*p3; ti;for (=0;3;i+) pihi;or (=0;i;+) prtf(%s,p)

5、; a)234670 )123 456 780 c)1234678 d) 1471、对于所定义的二维数组a23,元素是数组的第( )个元素。)3 b) )5 )6 二、判断题1、 赋值运算符的优先级低于关系运算符( )。2、 条件运算符的结合方向是“自左向右” ( )。3、 c语句的循环语句中循环体如果包含一个以上的语句,必须以复合语句形式出现( )。4、 c程序中的函数不能嵌套调用,但可嵌套定义( )。5、 若自定义函数要求函数名返回一个值,则该函数体中必须要有return语句( )。6、 当形式参数为指针变量名时,实际参数可为指针变量名、数组名或其它类型变量的首地址( )。7、 若有说明:

6、sttic in 4;,则数组a中各数组元素可在程序的编译阶段得到初值0( )。8、 若用数组名作为函数调用时的实参,则实际上传递给形参数组的是数组的第一个元素的值( )。9、 利用指针和结构体类型可以构成表、树等复杂的数据结构( )。、共用体变量的地址和它的各成员的地址都是同一地址( )。1、pint函数中的“%”格式参数表示用来输出unigned型数据( )。1、在一个c程序中,所有要使用的变量和要调用的函数都必须在mai( )函数中定义( )。13、赋值运算符的结合性是“自右至左”( )。14、一个c程序可以由多个源程序文件组成( )。15、do-whe语句构成的循环,当hile语句中的

7、表达式的值为零时结束循环( )。三、写出下面各程序的运行结果1、 #inuein ( )int i=0, j0, k=0, m;fr (m=0; 4; m+)switch (m)as 0:i=m+; ase1: =+;cas 2: km+; as :m+;pritf(“n%d,%, %, %”,i, , k,);2、 #inluma ()int i=1;w (=15)if (+i !=2)ontinue;elsepintf(“%”, i);3、#incle d1(in a , intn) int; for(i =0;in;i+) ai+;main()static intarray=,1,2,,

8、4,5,6,8,9;int j;dd1(aray,10);r(j=0;10;+)rint(“%d”,rrayj);、uin data og w; fot x; in y; char z;bet;mi() beta.=12345;bta.y=8;ea.x=3.4;beta.z=;prntf(“c”,beta.); 、# incude typdfstruct student charname10; ong sno; oat sore; tu;mn( ) stu =zhngan,2001,95,=shangxia,202,90,c=aha,200,95,d,*p=d; =a; if(strcmp(a

9、.name,b.me)0) d=; i(strcmp(c.nae,.name) c; printf(%ld%sn,d.so,-name);四、程序填空1、以下程序是从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入,请将缺省语句填上。ain ( )float , max, min;scan (“%”, &);a=x; nx;whil ( )i ( ) max =x;f()mn x;scanf (“f”, &x);pintf(“ama=%, amn=%fn”, ama, min);2、下面的程序是用指针来交换两个数据,请将缺省语句填上。vdxchnge( n *p

10、,int *) nt; t*p; *p=; q=;an()in a,b,*x,*y; 10;b20; x=&;rinf(“%d dn”,*x, *y);五、程序设计题 有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求打印出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、门课的成绩、平均分数。 、用自定义函数和数组求n个数的平均值,并用主函数调用参考答案:一、单项选择题、 、d 3、c 、c 、a 、a 7、d 、 9、c 1、d、d 1、b 、b 1、 5、 d二、判断题( )2、()3、( )、( ) 5、( )6、 ) 7、( ) 8、(

11、) 9、( )1、( )11、( )12、( )13、( ) 4、( ) 5、( )三、写出程序的运行结果、 答案是:0,1,,52、 答案是:2 5 11 43、答案是:2457814、答案是:x5、答案是:200shangxian四、程序填空1、答案是:x=0 xaax xamn、答案:y=&b; exchange(x,y);五、程序设计题、参考答案: definen10suct studnt char nm;cha ame;in coe4;foa e;stu;main() i i,j,max,ax,sum;loat veage; 输入*/f ( i=; n;i+) rinf(“nnpt

12、soes of dent d,n”,i+);pri(“n:”);canf(“s”,sui.u);rint(“nam:”);caf(“%s”,si.nme);for(j;j;j+) print(“sore %d:”,); scanf(“%d”,&stui.orej); /*计算average=0;a=;mxi=0;o(=;in; i+)sum=0; for(j=0; ma) maxum; ai=i; verage/=n;*打印*/pintf(“n nam scre1 scre sore3 vergn”);fr(i0; in; i+) printf(“%s10”, tui.n , stui.nam

13、e); for(=0; j3; j+) prinf(“%9d”,tu.scoe); pntf(“%.2n”,stui.av); pri(“avre%6fn”,aerge);prin(“e ihesscoreis : %s,core toal: %d”, stumxi.me,max);2、参考答案: loataverage( flat , n)fo er0; intj; or(j=0;j;j+) ave=ave+j; avr=aver/n; retr aver;ain()float x1,y; int ; o(0;0;j+) canf(“%”,&xj); =avge(,10); printf(“

14、aver2fn”,y); 复习b:一、单项选择题、逗号表达式2,6,8的值为( )。 a )2 b)4 c)6 )82、以下选项中非法的表达式是( ) a)0x&x10 )ij =0 c)(char)(5+3) d)x+1=x+13、若定义float;现要从键盘输入的数据,其整数位为3位,小数位为2位,则选用( )。a)scanf(“%”,&a); ) scanf(“%5.2f”,a);) canf(“%6.2f”,); d) sanf(“%f”,a);4、下列程序的运行结果是( )main()it =3,b=,c=1,k=4; prntf(%dn, ka? k : c?c: );a)4) )

15、 2) 15、以下程序中,while循环的循环次数是()。ma() it i0;while(0)if(i1) cotinue;if(i=5) ak;i+;a)1b)10c))死循环,不能确定次数、执行语句:for(i=1;i+;)后;变量的值是()。a)3b)4c)5d)不定7、有关函数参数,下列说法不正确的是( )。) 实参可以将数据传给形参; b) 实参和形参是不同的变量; ) 形参可以将数据传给实参; d) 实参和形参必须个数相等,类型一致。8、c语言中,变量和函数具有两个属性是( )。a)作用域和生存期 b)类型和存储类别c)作用域和类型 d)作用域和存储类别9、说明语句“in (p)

16、():”的含义是( )。)是一个指向一维数组的指针变量)p是指针变量,指向一个整型数据c)p是一个指向函数的指针,该函数的返回值是一个整型d)以上都不对0、说明语句int(*p);的含义是( )。a)p是一个指向nt 型数组的指针b)p是指针变量,它构成了指针数组)是一个指向函数的指针,该函数的返回值是一个整型d)p是一个指向函数的指针,该函数的返回值是一个指向整型的指针11、下述程序的执行结果是( )。#icluunion un t i; car c; ;odmain( ) uni un x; x.c1; x.11; printf(“d”,x.i);a) 26 b)11 c)265 d)18

17、 2、若程序中有如下的说明和定义:srut e nt x, y ; tct ex x, ; 则会发生的情况是 ( )。) 编译时错 b)程序能顺利编译、连接、执行c) 能顺利编译和连接,但不能执行 d)能通过编译,但连接出错13、c语言可以处理的文件类型是( ) 。 a) 文本文件和数据文件 b) 文本文件和二进制文件 c) 数据文件和二进制文件 )数据代码文件14、下面的fr语句( )。for (x0, y=; (y!=12)& (x); x+) a)是无限循环b)循环次数不定)循环执行次d)循环执行次5、若有如下说明:strut ca ch; it ; doubl x; arr23a,1,

18、3.4,b,,.89,c,3,1.93;则表达式( ) 的值为2。a)ar0h b) ar01. )arr0.i d) 2.i二、判断题1、条件运算符的结合方向是“自左向右” ( )。2、stch语句中每一个case的常量表达式的值必须互不相同( )。、循环语句中循环体允许包含一个以上的语句,可以不以复合语句形式出现( )。4、构成c程序的源文件之间以及函数与函数之间,相互位置可以任意( )。、c程序中的函数不能嵌套定义,但可嵌套调用( )。6、从变量的作用域角度来分,可以分为全局变量和局部变量( )。7、从终端输入一个字符串给字符数组,该字符串两端不必用双引号括起来( )。、若有说明:int

19、a0,0;,则只有a00和a1可得到初值0,其余元素均得不到初值0( )。9、利用指针和结构类型不能构成更复杂的数据结构( )。0、共用体类型可以出现在结构体类型定义中( )。1、当一个cse语句末包含break语句时,执行完该case语句后跳出sitch结构( )。12、宏定义中的标识符可以用大写字母,也可以用小写字母( )。3、do-whie语句构成的循环,当whie语句中的表达式的值为非零时结束循环( )。14、用“”作求余运算时,该运算符两侧均应为整型数据 ( )。1、一个逗号表达式可以与另一个表达式组成一个新的逗号表达式( )。三、写出程序的运行结果1、 incldemin()ita

20、=, b=3, c=, d=4;f(a) (cd) x=;eleif ()if (bd)x=2;esex3;else=;l=;prnt(“x”, );、#clumn ( )intk,j, m;fo(k5; =1;k- -)m=;for (j=k,j=; j+)m+=*;pri (“mdn”,m);3、includtdio.h man() uninexa struct int a; nt b; ut; int c; int ; e;e.c=1; ed=; ou.a.c*e.;e.ou.b=e.+e.d; pntf(%d,u.a,out.b); 4、#ile “stdio.”min() nt a

21、=1,,,4,i,j,s=0; j=1; fr(i3;i=;i-) s=s+a*j; j=j*1; printf(“sd”,s); 5、#include sdio.h#nclud sringhmain() ha s1 =somthins; car s2 =test; har s3=good;rint(sn,stcat(stc(s1,s2),s3);四、程序填空1、下面程序输出00到200之间的素数,每行输出1个素数,请将缺省语句填上,使算法完整。#inlude “mahh”ain( )in m, k, i, n=0;r(=11; 200;m=m2)if ( )print (“n”); sqr(

22、m); for(i=, =+1)prtf(“d”, ); =1;2、一个函数days,实现求某月某日是该年的第多少天。由主函数将年、月、日传递给days函数,计算后将日数传回主函数输出,请将缺省语句填上,使算法完整。srut ym_d int ar; i month; int dy; dte;main() int day(nt,in ,int); in,daysum; rintf(“inputyear,moh,dy:”); a(“%d,d,%”,dae.ya,&dt.month,dt.day); dysu=days( ); prnf(“n%d / %d s t% h da in %d”,dat

23、.month, datdy, d_sum,date.er);ays(it ya, int month, nt da) intdayum, i; it day_ta13=0,1,28,0,31,30,31,3,30,31,30,3; for(i=1; mot;i+)d_s=d_tb; ay_um=ay; f (er4=0&ear100!=0|yer%4=0) & monh3) eturn(daysum); 五、程序设计题,学生的记录由学号和成绩组成,n名学生的数据已在主函数中放入结构体数组s中,请编写函数fu,它的功能是:把分数最低的学生数据放在h所指的数组中,注意:分数最低的学生可能不止一个,

24、函数返回分数最低的学生的人数。#defie n 6tyedsuct car n10; int s;stre;intfn(srec *a, se *b) mn() rec s“ga05”,85,“a03”,76,“g2”,69,“g04”,85,“ga01”,91,“g07”,72,“ga0”,4,“g06”,87,“ga015”,8,“a013”,6,“ga012,64,“a04”,91,“a11”,91,“ga17”,64,“g01”,64,“ga06”,; trechn; int ,n; n=n(,); print(“he %dlost or:n”,n); fr(i=; in; +)pri

25、nt(“%d %”,hinm, hi.s);rntf(“n”); 2、从键盘输入一批字符(回车键结束),存入一个磁盘文件abc.txt中参考答案:一、单项选择题1、d 2、 3、a 、d 5、d 6、c 、c 8、b 9、 1、d 1、 2、 13、b 14、c 5、b二、判断题、( )2、( )、( )4、( )5、( )6、( )7、( )8、( )、( )0、( )11、( ) 12、( ) 1、( ) 1、( ) 15、( )三、写出程序的运行结果1、 答案是:x=22、答案是:m=153、答案是: 48 4、答案是:=13 5、答案是:testgd 四、程序填空1、答案是:n%10

26、= 0 m%= =02、答案是: at.ear,de.month,date.da day_um=; ay_sm=1; 五、程序设计题、参考答案:strec fn(str *a, char *b) static trec h=“”,1;int k; for(k0;kn;k+)f (!trmp(k.nm,) h=ak; bea;returnh;2、参考答案: main( ) fle*fp; hr c; p=foen(“abc.txt”,”w”); chgecha(); while(ch!=) putc(, ch);ch=tcha();fclose(fp);复习c:一、单项选择题、 有定义语句:i

27、, y;,若值11,变量y得到数值12,下面四组输入要通过scanf(,%,&x,&);语句使变量得到数形式中,错误的是( ) )11 12回车 b)11, 12 c)11,12 d)1,回车12回车、若有语句it ,b=2,c=3;则以下值为的表达式是( )a)a& b)a=b )((ab)|() d)(!()=c&)3、设inta=;则rntf(%,%,a , a+);的输出结果是( ) 。)9,10 b)10,9 )9, d),1、以下叙述正确的是()。a)可以把defi和if定义为用户标识符)可以把fine定义为用户标识符,但不能把if定义为用户标识符c)可以把if定义为用户标识符,但

28、不能把dfne定义为用户标识符)efine和i都不能定义为用户标识符5、运行以下程序后,如果从键盘上输入65 14,则输出结果为()。mai() in m,n;printf(nte,n:);scanf(%d%d,m,&n);hile(m!=n) wle(m)-=n;hie(n)-m;printf(=dn,m);)b)m=2)m=1d)m=06、运行下面的程序运行后,如果从键盘上输人,则输出结果是()。mai()int x;scanf(d,&x);if(x-5)printf(%dx);lse intf(%dx+);a)3b)4 c)5d)67、定义函数时,若函数的类型缺省,则函数的默认类型是(

29、)。a)chr ) void c)float d)i8、设有说明it (* pr)m; 其中的标识符prt是( )。a)m个指向整型变量的指针b)指向m个整型变量的函数指针c)一个指向具有m个整型元素的一维数组的指针d)具有m个指针元素的一维指针数组,每个元素都只能指向整型变量9、已知函数说明语句:void x( );则它的含义是( )。)函数f的返回值是一个空类型的指针b)函数fx的返回值可以是任意的数据类型c)函数fx无返回值)指针fx指向一个函数,该函数无返回值1、对于下述定义,不正确的叙述是( )。unon daa int ; hr c; float f;a, ;a)变量a所占内存的长

30、度等于成员f的长度b)变量a的地址和它的各成员地址都是相同的c)可以在定义时对a初始化d)不能对变量a赋值,故a=b非法、c语言库函数fets(str, n,fp)的功能是( )。a)从文件fp中读取长度n的字符串存入b)从文件fp中读取长度不超过-1的字符串存入st指向的内存c)从文件p中读取个字符串存入st指向的内存d)从串tr读取至多个字符到文件fp12、下述程序向文件输出的结果是( ) 。#incldevoii() file *fp=ope(“test”, “wb”); frntf(fp, “%d%5.0c%d”, 8,773.0, -, 278); fcls(fp);a) 58757

31、 -28 b) 587627.00000078c) 875273-227 d)因文件为二进制文件而不可读3、下面程序输出结果是( ) 。 defie ax 5 int max,k; man() prnt(); fu1(); fu3(); intf(t); un(); fun3(); fun() or (k=0;kax;k+)ak=kk; fn()int amax,k; fo (k=;k;k+)ak=k; fun3() itk; fr(k=0;kmx;+) prin(d,*(a+k)); a) 2 4 8 0 2 4 8) 02 6 0 1 4c) 3 4 2 8) 1 2 3 1 2 3 4、

32、已知:nt x;执行下面的程序段后,输出结果为( )。 or (x3; x6; +) prinf(2)? “*”: “#d”, x); a)*3b)#3c)#3d)*3#4 #4 *4 *4#5 *5 *5 #5 15、说明语句“int (*r)( ):”的含义是( )。a)r是一个指向一维数组的指针变量)r是指针变量,指向一个整型数据c)是一个指向函数的指针,该函数的返回值是一个整型)以上都不对二、判断题1、sitch语句执行完一个ase后面的语句后,流程控制转移到下一个cs继续执行( )。2、f语句的条件表达式必须是逻辑表达式( )。3、c语句的一个循环体内允许又包含另一个完整的循环结构(

33、 )。、c程序以函数为单位进行编译( )。5、由多个源文件组成一个程序时,主函数只能出现在一个源文件中( )。6、从变量的作用域角度来分,可以分为静态变量和动态变量( )。7、如果一个字符数组中包含一个以上结束符0,则遇最后一个0时输出才结束( )。、gets()函数的作用是从终端输入一个字符串到字符数组,并且将0也装入该数组()。9、不能将一个结构体变量作为一个整体进行输入和输出( )。0、在编译中,对枚举元素按常量处理( )。11、c程序中的min( )函数必须放在程序的开始部分( )。、swt后面括号内的表达式可以是整型表达式或字符型表达式( )。13、宏定义是用标识符代替一个字符串,只

34、作简单的置换,不作语法检查( )。4、c语言中,“&”运算符作为单目运算符时表示的是取地址运算,作为双目运算符时表示的是按位与运算()。15、d-whi语句构成的循环必须用rek语句才能退出( )。三、写出程序的运行结果1、 ain ()nt i, j;flot ;or(i=; i3; - -) s=s+i*j;it(“s=%f”, s);2、 #includea ( )int k1; ch ca; oswitch(c+)cae : k; brea; as :k -; case c; k+=;rea;case: k=k2; contnue; a : =k*;rea;deal: k=k/3;+;

35、 ile(cf);pintf(“k=%dn”, k);3、ncue truct score int ath; it en; inm;stru tu ar nae1; carsex; lo stas; strucsrsu;main( )stc tustudent1=l ing,m,9024,8,80,0; sruc su stuet; suent2=tudent1;studn2nae0; tuden2.nm1=u; udnt2stulas=990325; student2.sub.mth=83; printf(%,%,%ld,%d,%d,%n,tudnt.na, studen2.ex,tuden

36、2.stuclass,stdnt2sub.mt, stdent1.subng,studen2.sb.omp);4、#icue “stdio.h”mn( ) char s=”7a89c”; nt i; for(=;si!0;i+) (tr0 & sri=9) print(“c”si);、incu “sdo.h”man() ita =0,2,1,5,23,35,6,5; i x=15, i,n=10,m; i=n/2+1;=n/2;ile(m!0) if(xai) i=-/2; =m/2; el bak;printf(“resu=%dn”,i1);四、程序填空1、华氏和摄氏的转换公式为:c=5/*(),其中c表示摄氏的温度,f表示华氏的温度。要求输出从华氏度到华氏3度,每隔20度输出一个值。main ()int uper, step;float fa= 0;clsius;upper

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论