二级c语言笔试练习题.docx

上传人:文*** 文档编号:68233851 上传时间:2022-12-27 格式:DOCX 页数:99 大小:188.80KB
返回 下载 相关 举报
二级c语言笔试练习题.docx_第1页
第1页 / 共99页
二级c语言笔试练习题.docx_第2页
第2页 / 共99页
点击查看更多>>
资源描述

《二级c语言笔试练习题.docx》由会员分享,可在线阅读,更多相关《二级c语言笔试练习题.docx(99页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、全国计算机等级考试二级C语言程序设计第1章C语言程序设计概述1第2章C语言的基本数据类型与表达式3第3章顺序程序设计11第4章选择结构程序设计13第5章循环结构18第6章函数与编译预处理24第7章数组34第8章指针42第9章结构体数据类型与链表57第10章位运算与文件操作64上机考试题71第1章 C语言程序设计概述1.1 程序与程序设计1.2 算法及其描述1.3 C语言的发展及特点1.4 C语言程序的基本结构1.5 C语言字符集、标识符和关键字1.6 C语言程序的开发环境第2章 C语言的基本数据类型 与表达式2.1 C语言的基本数据类型2.2 常量和变量2.3 运算符与表达式2.4 数据类型转

2、换第3章 顺序程序设计3.1 C语言的基本语句3.2 数据输入与输出3.3 程序举例第4章 选择结构程序设计4.1 关系运算符与关系表达式4.2 逻辑运算符与逻辑表达式4.3 if语句4.4 switch 语句第5章循环结构5.1 while 语句5.2 do-while 语句5.3 for语句5.4 break、continue 和 goto 语句5.5 循环的嵌套5.6 复合结构程序举例第6章 函数与编译预处理6.1 模块化程序设计与函数6.2 函数的定义与调用6.3 函数的递归调用6.4 变量的作用域与存储方式6.5 编译预处理第7章数组7.1 一维数组7.2 二维数组7.3 数组的应用

3、7.4 字符数组与字符串7.5 数组作为函数的参数7.6 程序举例第8章指针8.1 指针与指针变量8.2 指针与函数8.3 指针与数组8.4 指针与字符串8.5 指针数组与命令行参数8.6 程序举例第9章结构体数据类型与链表9.1 结构体类型的定义9.2 结构体类型变量9.3 结构体类型数组9.4 结构体类型指针9.5 结构体与函数9.6 链表第10章位运算与文件操作10.1 位运算与位运算符10.2 位运算举例10.3 C文件概述10.4 文件类型指针10.5 文件的打开与关闭10.6 文件的定位第11章上机考试题分析C语言程序设计概述一、选择题1、以下叙述中正确的是A) C语言比其他语言高

4、级B) C语言可以不用编译就能被计算机识别执行C) C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D) C语言出现的最晚,具有其他语言的一切优点2、以下说法正确的是A) C语言程序总是从第一个的函数开始执行B)在C语言程序中,要调用函数必须在main ()函数中定义C) C语言程序总是从main ()函数开始执行D) C语言程序中的main ()函数必须放在程序的开始部分3、C语言规定,在一个源程序中,main函数的位置A)必须在最开始B)必须在系统调用的库函数的后面C)可以任意D)必须在最后4、以下叙述不正确的是A) 一个C源程序可由一个或多个函数组成B) 个C源程序必须包含-个

5、main函数C) C程序的基本组成单位是函数D)在C程序中,注释说明只能位于一条语句的后面5、C语言程序的基本单位是A)程序行B)语句C)函数D)字符6、以下叙述正确的是A)在C程序中,每行中只能写一条语句B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数C)在C程序中,无论是整数还是实数,都能被准确无误地表示D)在C程序中,是只能用于整数运算的运算符7、以下选项错误的是A) main ()B) main ()int x,y,z;int x,y,z;x=O;y=x-l;x=O,y=x+l;C) main () int x;intnt y;x=O,y=x+1; z=x+y

6、;z=x+y;z=x+y;D) main () int x,y,z;x=O;y=x+l; z=x+y,8、以下4个选项中,不能看做一条语句的是A) ;B) a=5,b=2.5,c=3.6;C) if (a12?x+10:x-12;printf (%dn,y);)A) 0B)22C) 12D)1020、在C语言中,运算对象必须是整型数的运算符是A) %B)C) %和D)*21、C语言中运算对象必须是整型的运算符是A) %=B) /C) =D) =22、已知各变量的类型说明如下:int k,a,b;unsigned long w=5;double x=1.42;则以下不符合c语言语法的表达式是A)

7、 x% (-3)C) k= (a=2,b=3,a+b)B) w+=-2D) a+=a-= (b=4) * (a=3)23、若有定义:inta=7;floatx=2.5,y=4.7;则表达式x+a%3* (int) (x+y) %2/4的值是A) 2.500000B) 2.750000C) 3.5OOOOOD) 0.00000024、请选出以下语句的输出结果printf (%dn,strlen (t065xffn);A) 5B) 14C) 8D)输出项不合法,无正常输出25、设有数组定义:char array =China;则数组array所占的空间为A) 4个字节C) 6个字节B) 5个字节D

8、) 7个字节26、以下不正确的叙述是A)在C程序中,逗号运算符的优先级最低B)在C程序中,APH和aph是两个不同的变量C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实 型数值27、sizeof (float)是A) 一个双精度型表达式C) 一种函数调用B) 一个整型表达式D) 一个不合法的表达式28、若x,i,j和k都是int型变量,则计算表达式x= (i=4,j=16,k=32)后,x的值为A) 4C) 32B) 16D) 5229、下列程序的输出结果是 main () doubl

9、e d=3.2; int x,y;x=1.2; y= (x+3.8) /5.0; printf (%dn”, d*y);)A) 3C) 0B) 3.2D) 3.0730、设变量a是int型,f是float型,i是double型,则表达式10+ a +i*f值的数据类型为A) intB) float5仔细答题,认真总结!二级考试专用C) doubleD)不确定31、设以下变量均为int类型,表达式的值不为7的是A) (x=y=6,x+y,x+l)B) (x=y=6,x+y,y+l)C) (x=6,x+l,y=6,x+y)D) (y=6,y+l,x=y,x+l)32、若有条件表达式(exp) ?a

10、+:b-,则以下表达式中能完全等价于表达式(exp)的是A) (exp=O)B)(exp!=O)C) (exp=l)D)(exp!=l)33、以下选项中,与k=n+完全等价的表达式是A) k=n,n=n+lB)n=n+l,k=nC) k=+nD)k+=n+134、以下程序的输出结果是 main () int a=2 l,b= 11;printf (%d n,a+b,b+a);)A) 30B) 31C) 32D) 3335、设x、y均为整型变量,且x=10y=3,则以下语句的输出结果是 printf (%d,%dn,xy);A) 10,3B)9,3C) 9,2D)10,236、表达式abll (

11、c&d)中运算符优先级最高的是A) IIB)&C) D)()37、在C语言中,int,char和short三种类型数据在内存中所占用的字节数A)由用户自己定义B)均为2个字节C)是任意的D)由所用机器的机器字长决定38、若有以下定义,则能使值为3的表达式是int k=7,x=12;A) x%= (k%=5)B) x%= (k-k%5)C) x%=k-k%5D) (x%=k) - (k%=5)39、下面程序的输出结果为 main () int a,b;b= (a=3*5,a*4,a*5);printf (d”,b) ;A) 60B)75C) 65D)无确定值40、假定x和y为double型,则表

12、达式x=2,y=x+3/2的值是A) 3.5OOOOOB)3C) 2.000000D) 3.00000041、以下变量x, y, z均为double类型且已正确赋值,不能正确表示数学式子x+y+z的C语 言表达式是A) x/y*zC) x/y*l/z42、以卜程序的输出结果是 main () char c= z;printf (%c,c-25);)A) aC) z-25B) x* (1/ (y*z)D) x/y/zB) ZD) y43、有以下程序#include main () char *p=abcde Ofghjik 0printf (%d n ,strlen (p);)程序运行后的输出结

13、果是A) 12B) 15C) 6D) 544、设有intx=H;则表达式(x+*l/3)A) 3B) 4C) IID) 1245、若变量a是int类型,并执行了语句: A) a的值是字符CC)不允许字符型和浮点型相加46、下列程序运行的结果是main ()float x;int i;x=3.6;i= (int) x;printf (x=%f,i=%d ,x,i);A) x=3.6OOOOO,i=3C) x=3,i=3的值是a=, A +1.6;,则正确的叙述是B) a的值是浮点型D) a的值是字符A的ASCH值加上IB) x=3.6,i=3D) x=3.6OOOOO,i=3.OOOOOO二、填

14、空题1、在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为4: 一个double型数据在内存中所占的字节数为【12、以下程序的输出结果是main ()int i=010, j=10;pirntf (%d, %d n”, i, j);3、已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch= a,+ 8,3,的值为【】。4、下列程序的输出结果为【】。main ()int x=3, y=5;printf (%d”, x=(x-) * (-y); )5、设y是int型,请写出v为奇数的关系表达式【106、设int a=5, b=6,表达式(+a=b)

15、?+a:b的值是【】口7、以下程序的输出结果是“】。main ()(int a=0;a+= (a=8);printf (%dn,a) ;8、在计算机中,字符的比较是对它们的-LJJt行比较。9、在内存中,存储字符X,要占用1个字节,存储字符串X要占用【】个字节。10、下列程序的输出结果是16.00,请填空。main ()int a=9, b=2;float x=【】,y=l. 1, z;z=a/2+b*x/y+l/2;printf (%5.2fn,z );11、以下程序段的输出结果是【 tmain ()int a=2, b = 3, c=4;a*=16+ (b+) - (+c);printf

16、(%d”,a);)12、以下程序段的输出结果是oint x=17, y=26;printfy/二(x%=6);13、将以下程序写成三目运算表达式是】oif (ab) max=a;else max=b;14、下列y的值是_I_J。int y; y=sizeof (2.25*4);15、下列x的值是【】。int x;x=sizeof 2.25*4;16、设x和y均为int型变量,且x=l, y=2,则表达式double (1+x/y)的值为【】。/2 、m + n(cos* X )17、把数学表达式m-n改写成C语言的表达式是18、若有以下定义:char a;int b; float c; dou

17、ble d;则表达式a*b+d-c值的类型为【】。19、若有以下程序段:int cl=l, c2=2, c3;c3=l. 0/c2*cl;则执行后,c3中的值是“】。三、部分填空题解析2、解析:以0开头的是八进制数。3、解析:在C语言中,整型,实型,字符型数据间可以混合运算,在进行运算时,不同类 型的数据要先转换成同一类型,然后再进行运算。我们可以这样计算本题,97+8-3=102,即 102所对应的字母为f。4、解析:x-的值为3, 一y的值为4;注意前缀一和后缀一的区别。8、解析:C语言中,字符也可以进行比较运算,且是按照ASCH码值进行的。9、计算机存储一个字符用1个字节,存储字符串时,

18、每个字符用占用1个字节,另在字符串 的有效字符之后存储1个字符串的结束标记符。所以存储字符串X”要占用2个字节,存储 字符x只要1个字节。10、解析:本题最后一条语句,表示以浮点格式输出z的值,宽度为5,其中所含2位小数, 应该注意的是,两个整型运算结果仍为整型,如1/2的结果为0,对本题可逐步求解:16.00=9/2+2*x/L 1+1/216. 00=4+2*x/l. 1+012.00=2*x/l. 1 所以,x的值为6. 6。11 解析:a* = 16+ (b+) - (+c)等价于a=a* (16+ (b+) - (+c) b+的值为3,+c 的值为5,请注意前缀+ +和后缀+ +的用

19、法。12、解析:是取余运算,操作数为整型,所以最后的结果也为整型,运算过程如下:y/= (x%-6);y/= (x=x%6):y/=5;y=y/5;y=5;13、解析:本题考查三目运算符的用法,条件运算符要求有三个操作对象,称三目(元) 运算符,它是C语言中惟一的一个三目运算符。条件表达式的一般形式为:表达式1?表达式 2:表达式3所以,我们可以写成(ab) ?a:b,它是一个“条件表达式。执行顺序是:如 果(ab)条件为真,则条件表达式取值a,否则取值b。14、解析:sizeof (2.25*4)为sizeof (10. 00)值为8, C语言规定浮点型常量当双 精度处理(以IBM-PC机为

20、例)。15、解析:sizeof运算符高于算术运算符,所以sizeof 2. 25*4等价于(sizeof 2. 25) *4 为8X4=32 (以IBM-PC机为例)。16、解析:本题考查两个知识点一是x/y的值为整型即为0,二是数字1存放在double中是 double类型。18、解析:C语言中,如果运算符两边的数据类型不同,将进行类型转换,根据转换规则, 短整型转为长整型;整型转换为实型。19、解析:在赋值运算中,如果表达式中变量和常量的数据类型不一致就会自动进行类型 转换。系统会计算L0/c2,由于1.0是实型,所以均先转化为双精度型0.500000,再和cl转 化后的双精度数相乘得0.

21、 500000。但其要赋值给整型变量c3,故要进行强制转换,c3的值为0。第3章 顺序程序设计一、选择题1、结构化程序所规定的三种最基本控制结构是A)输入、处理、输出B)树形、网形、环形C)顺序、选择、循环D)主程序、子程序、函数2、若说明int *p,n;则通过语句scanftm够正确读入数据的程序段是A) p=&n;scanf (%d,&p) ;B) p=&n;scanf (%d,*p);C) scanf (%d,n) ;D) p=&n;scanf (%d,p);3、以卜.程序段的输出结果是int a=1234;printf (%2dn,a);A) 12B) 34C) 1234D)提示出错

22、、无结果4、已有定义int a=-2;和输出语句printf (%81x,a)似下正确的叙述是A)整型变量的输出形式只有d一种B) %x是格式符的一种,它可以适用于任何一种类型的数据C) %*是格式符的一种,其变量的值按十六进制输出,但81x是错误的D) %81x不是错误的格式符,其中数字8规定了输出字段的宽度5、对下面程序描述正确的一项足(每行程序前面的数字表示行号)1 main ()2 3 float a 3 =0.0;4 int i;5 for (i=0;i3;i+) scanf (%d,&a i);6 for (i=l;i3;i+) a 0 =a 0 +a i;7 printf (%f

23、n,a 0);8 )A)没有错误B)第3行有错误C)第5行有错误D)第7行有错误6、若变量已正确说明为int类型,要通过语句scanf (d%d%d,&a,&b,&c);给2赋值3, b 赋值5, c赋值8,正确的输入形式是A) 3V回车5回车8回车B) 3,5,8v回车C) 3回车58回车D) 35V回车8回车7、以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是 main ()int *p,*q,a,b;p=&a;printf (input a:);scanf (H%dH,*p);A) *p表示的是指针变量p的地址B) *p表示的是变量a的值,而不是变量a的地址C)

24、*p表示的是指针变量p的值D) *p只能用来说明p是一个指针变量8、x, y, z被定义为int型变量,若从键盘给x, y, z输入数据,正确的输入语句是 A) INPUTx、y、z;B) scanf (”d%d%d”,&x,&y,&z);C) scanf (n%d%d%dM,x,y,z);D) read (,%d%d%d,&x,&y,&z);9、执行下列程序时输入:123空格456空格789v回车,输出结果是 main () chars L100 ; intc, i;scanf (c”,&c) ; scanf (n%d,&i) ; scanf (%sn,s);printf (n%c,%d,%

25、snH,c,i,s) ;A) 123,456,789B) 1,456,789C) 1,23,456,789D) 1,23,456二、填空题1、以下程序的输出结果是【 工int a=1234;printf (%2dnH, a);第4章选择结构程序设计一、选择题1、在C程序中,判逻辑值时,用“非0”表示逻辑值“真”,又用“0”表示逻辑值“假在求逻 辑值时,用()表示逻辑表达式值为“真,又用()表示逻辑表达式值为“假A) 10B) 0 1C)非0 非0D) 1 12、有如下程序段int a=14,b=15,x;char c= A;x= (a&b) & (cv B);3、执行该程序段后,x的值为A)

26、tureB) falseC) 0D) 14、若运行以下程序时,从键盘输入ADescriptor (vCR表示回车),则下面程序的运 行结果是#include main ()char c;int v0= l,vl=0,v2=0;do switch (c=getchar () case a :case A: case e :case E: case i :case I: case 1 o :case O: case u :case U :vl+=l;default:vO+= l;v2+= 1; while (c!= nf );printf (HvO=%d,v 1 =%d,v2=%dnH,v0,v

27、1 ,v2) ;)A) v0=7,vl=4,v2=7C) v0=ll,vl=4,v2=llB)D)v0=8,vl=4,v2=8v0=13,vl=4,v2=125、有如下程序 main () float x=2.0,y; if (x10.0) y=1.0/x; else y=1.0;printf (%fn,y) ; 该程序的输出结果是A) 0.000000C) 0.500000B) 0.250000D) 1.0000006、能正确表示逻辑关系:10或的C语言表达式是A) a= 10ora=10 &a=07、有如下程序 main () int a=2,b=-l,c=2;if (ab)if (b=0

28、la=10ll a=0B) 1D) 38、若变量c为char类型,能正确判断出c为小写字母的表达式是A) a =c= a ) II (c= z)C) ( a =c)D) (c= a ) & (cv= z)9、判断char型.变量cl是否为大写字母的正确式达式是A) A =cl=A) & (cl=cl) II (z Z = A ) & (clb) c=l;else if (a=b) c=0;else c=-l;return (c);11、设x, y和z都是int型变量,且x=3, A)x&yC) xll+y&y-zy=4, z=5,则下面表达式中,值为0的表达式是B) x=yD) ! (xy&!

29、zlll)12、以下程序的输出结果是main ()int a,i;a=0;for (i=l;ib) & (n=cd)后n的值是A) 1B) 2C) 3D) 415、设x,y,t均为int型变量,执行语句:x=y=3;t=+xll+y;完成后,y的值为A)不确定B) 4C) 3D) 116、若执行下面的程序时,从键盘上输入5和2,则输出结果是 main () int a,b,k;scanf (d,%d ”,&a,&b);k=a;if (ab) k=a%b;else k=b%a;printf (n%d n ,k);A) 5B) 3C) 2D) 017、请阅读以下程序: main () int a=

30、5,b=0,c=0;if (a=b+c) printf (*n*);else printf ($ $ $ n”);)以上程序A)有语法错不能通过编译B)可以通过编译但不能通过连接C)输出*D)输出$ $ $二、填空题1、若已知a=10, b=20,则表达式!a50) printf (d”,a);if (a40) printf (d”,a);if (a30) printf (%du,a);)3、以下程序输出的结果是 main () int a=5,b=4,c=3,d;d= (abc);printf (dn”,d);4、关系表达式xyz,用C语言的表达式为_LL。5、以下程序的输出结果是工。 ma

31、in () int x=100, a=10, b=20, ok 1=5, ok2=0;if (ab) if (b!=15) if (!okl) x=l;else if (ok2) x=10;else x=-1;printf (%dn,x) ;6、以下程序的输出结果是【#define PR (ar) printf (,%d,ar) main () intj,a =1,3,5,7,9,11, 15), *p=a+5;for(j=3;j;j-)switch (j) case 1:case 2: PR (*p+) ; break;case 3:PR (* (-p);printf (Hnn);三、部分填

32、空题解析1、解析:计算表达式!ab,先计算!a,因a的值为10, !a的值为0。关系表达式020为真, 所以表达式!abc)d= (543)先算53,为真,得1,即:d= (13),此时13,为假,得0。4、解析:xyz的意思是y大于x并且y小于z,在C语言中,表达“并且”用逻辑与运算符5、程序预置变量x的值为100, a的值为10, b的值为20, okl为5, ok2为0。程序中给出的if 语句可以写成更结构化的形式如下:if ( ab)if (b!=15)if (!okl) x=l;elseif (ok2) x=10; else x=-l;由于条件ab成立,并且条件b!=15也成立,而。

33、kl不等于0,执行else后的语句。又因ok2等 于0,执行else后的语句赋-1给X。所以程序输出-1。6、解析:程序的宏定义PR以d格式输出参数的值和逗号字符。程序给数组a赋初值,并由 指针p指向元素a 5。程序让j从3至1,共循环3次。当j是3时,让p减1,并输出p所指元素的 值9:当j是2和1时,输出p所指的数组元素的值,并让p增1,顺序输出9和11。所以程序输出: 9, 9, 11,第5章循环结构一、选择题1、下面有关for循环的正确描述是A) for循环只能用于循环次数已经确定的情况B) for循环是先执行循环体语句,后判断表达式C)在for循环中,不能用break语句跳出循环体D

34、) for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来2、对表达式for (表达式1;表达式3)可理解为A) for (表达式1;0;表达式3)B) for (表达式1;1;表达式3)C) for (表达式1;表达式1;表达式3)D) for (表达式1;表达式3;表达式3)3、以下描述中正确的是A)由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复 合语句B) do-while循环由do开始,用while结束,在while (表达式)后面不能写分号C)在do-while循环体中,是先执行一次循环,再进行判断D) do-while循环中,根据情况可以

35、省略while 4、C语言中while和do-while循环的主要区别是E) do-while的循环体至少无条件执行, -次F) while的循环控制条件比do-while的循环控制条件更严格G) do-while允许从外部转到循环体内H) do-while的循环体不能是复合语句 5、对下I, n两个语句描述正确的是I .while (1) II .for (;)B) I是无限循环,II错误D)以上答案都错A)都是无限循环 C) I循环一次,U错误6、下列程序的输出结果是#include main () int y=10;doy;while (y);printf (n%dnn,y);A) -1B) 1C) 8D)07、有如下程序 main () int x=23;do printf (%d,x-) ; while

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁