全国二级C语言练习题.docx
- 文档编号:29534444
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:170
- 大小:165.40KB
全国二级C语言练习题.docx
《全国二级C语言练习题.docx》由会员分享,可在线阅读,更多相关《全国二级C语言练习题.docx(170页珍藏版)》请在冰豆网上搜索。
全国二级C语言练习题
全国计算机等级考试
二级C语言程序设计
第1章C语言程序设计概述1
第2章C语言的基本数据类型与表达式3
第3章顺序程序设计11
第4章选择结构程序设计13
第5章循环结构18
第6章函数与编译预处理24
第7章数组34
第8章指针42
第9章结构体数据类型与链表57
第10章位运算与文件操作64
上机考试题71
目录
第7章数组
7.1一维数组
7.2二维数组
7.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.3C文件概述
10.4文件类型指针
10.5文件的打开与关闭
10.6文件的定位
第11章上机考试题分析
第1章C语言程序设计概述
一、选择题
1、以下叙述中正确的是
A)C语言比其他语言高级
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源程序必须包含一个main函数
C)C程序的基本组成单位是函数
D)在C程序中,注释说明只能位于一条语句的后面
5、C语言程序的基本单位是
A)程序行B)语句
C)函数D)字符
6、以下叙述正确的是
A)在C程序中,每行中只能写一条语句
B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
C)在C程序中,无论是整数还是实数,都能被准确无误地表示
D)在C程序中,%是只能用于整数运算的运算符
B)main()
{intx,y,z;
x=0,y=x+1;
z=x+y;}
7、以下选项错误的是
A)main()
{intx,y,z;
x=0;y=x-1;
z=x+y;}
D)main()
{intx,y,z;
x=0;y=x+1;
z=x+y,}
C)main()
{intx;int
inty;
x=0,y=x+1;
z=x+y;}
8、以下4个选项中,不能看做一条语句的是
A);B)a=5,b=2.5,c=3.6;
C)if(a<5);D)if(b!
=5)x=2;y=6;
9、字符型数据在机器中是用ASCII码表示的,字符“5”和“7”在机器中表示为
A)10100011和01110111
B)01000101和01100011
C)00110101和00110111
D)01100101和01100111
二、填空题
1、用高级语言编写的程序称为【】程序,它可以通过解释程序翻译一句执行一句的方式执行,也可以通过编译程序一次翻译产生目标程序,然后执行。
2、C语言程序的注释可以出现在程序中的任何地方,一个注释以【】作为开始和结束。
三、部分填空题解析
2、解析:
C语言程序的注释可以出现在程序基本单词之间的任何地方,C语言程序的注释以′/*′作为开始标记,并以′*/′作为结束标记。
第2章C语言的基本数据类型与表达式
一、选择题
1、C语言中最简单的数据类型包括
A)整型、实型、逻辑型B)整型、实型、字符型
C)整型、字符型、逻辑型D)字符型、实型、逻辑型
2、下列各数据类型不属于构造类型的是
A)枚举型B)共用型
C)结构型D)数组型
3、C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符
A)必须为字母B)必须为下划线
C)必须为字母或下划线D)可以是字母,数字和下划线中任一字符
4、下列可用于C语言用户标识符的一组是
A)void,define,WORDB)a3_b3,_123,Car
C)For,-abc,IFCaseD)2a,DO,sizeof
5、请选出可用作C语言用户标识符的是
A)void,define,WORDB)a3_b3,_123,IF
C)FOR,--abc,CaseD)2a,Do,Sizeof
6、以下选项中合法的用户标识符是
A)longB)_2Test
C)3DmaxD)A.dat
7、下列是用户自定义标识符的是
A)_w1B)3_xy
C)intD)LINE-3
8、下面四个选项中,均是不合法的用户标识符的选项是
A)AP_0doB)floatla0_A
C)b-agotointD)_123tempint
9、下面四个选项中,均是合法整型常量的选项是
A)160-0xffff011B)-0xcdf01a0xe
C)-01986,0120668D)-0x48a2e50x
10、下面四个选项中,均是不正确的8进制数或16进制数的选项是
A)0160x8f018B)0abc0170xa
C)010-0x110x16D)0a127ff-123
11、下列数据中,不合法的C语言实型数据的是
A)0.123B)123e3
C)2.1e3.5D)789.0
12、在C语言中,退格符是
A)\nB)\t
C)\fD)\b
13、下列用于printf函数的控制字符常量中,代表“竖向跳格”的转义字符常量是
A)\bB)\t
C)\vD)\f
14、若有说明语句:
charc='\72';则变量c
A)包含1个字符B)包含2个字符
C)包含3个字符D)说明不合法,c的值不确定
15、在C语言中,char型数据在内存中的存储形式是
A)补码B)反码
C)原码D)ASCII码
16、若变量已正确定义并赋值,以下符合C语言语法的表达式是
A)a:
=b+1B)a=b=c+2
C)int18.5%3D)a=a+7=c+b
17、若变量a,i已正确定义,且i已正确赋值,合法的语句是
A)a==1B)++i;
C)a=a++=5;D)a=int(i);
18、在16位C编译系统上,若定义longa;,则能给a赋40000的正确语句是
A)a=20000+20000;B)a=4000*10;
C)a=30000+10000;D)a=4000L*10L
19、若运行时给变量x输入12,则以下程序的运行结果是
main()
{intx,y;
scanf("%d",&x);
y=x>12?
x+10:
x-12;
printf("%d\n",y);
}
A)0B)22
C)12D)10
20、在C语言中,运算对象必须是整型数的运算符是
A)%B)\
C)%和\D)**
21、C语言中运算对象必须是整型的运算符是
A)%=B)/
C)=D)<=
22、已知各变量的类型说明如下:
intk,a,b;
unsignedlongw=5;
doublex=1.42;
则以下不符合C语言语法的表达式是
A)x%(-3)B)w+=-2
C)k=(a=2,b=3,a+b)D)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.750000
C)3.500000D)0.000000
24、请选出以下语句的输出结果
printf("%d\n",strlen("\t\"\065\xff\n"));
A)5B)14
C)8D)输出项不合法,无正常输出
25、设有数组定义:
chararray[]="China";则数组array所占的空间为
A)4个字节B)5个字节
C)6个字节D)7个字节
26、以下不正确的叙述是
A)在C程序中,逗号运算符的优先级最低
B)在C程序中,APH和aph是两个不同的变量
C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变
D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
27、sizeof(float)是
A)一个双精度型表达式B)一个整型表达式
C)一种函数调用D)一个不合法的表达式
28、若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为
A)4B)16
C)32D)52
29、下列程序的输出结果是
main()
{doubled=3.2;intx,y;
x=1.2;y=(x+3.8)/5.0;
printf("%d\n",d*y);
}
A)3B)3.2
C)0D)3.07
30、设变量a是int型,f是float型,i是double型,则表达式10+′a′+i*f值的数据类型为
A)intB)float
`C)doubleD)不确定
31、设以下变量均为int类型,表达式的值不为7的是
A)(x=y=6,x+y,x+1)B)(x=y=6,x+y,y+1)
C)(x=6,x+1,y=6,x+y)D)(y=6,y+1,x=y,x+1)
32、若有条件表达式(exp)?
a++:
b--,则以下表达式中能完全等价于表达式(exp)的是
A)(exp==0)B)(exp!
=0)
C)(exp==1)D)(exp!
=1)
33、以下选项中,与k=n++完全等价的表达式是
A)k=n,n=n+1B)n=n+1,k=n
C)k=++nD)k+=n+1
34、以下程序的输出结果是
main()
{inta=21,b=11;
printf("%d\n",--a+b,--b+a);
}
A)30B)31
C)32D)33
35、设x、y均为整型变量,且x=10y=3,则以下语句的输出结果是
printf("%d,%d\n",x--,--y);
A)10,3B)9,3
C)9,2D)10,2
36、表达式a
A)||B)&
C) 37、在C语言中,int,char和short三种类型数据在内存中所占用的字节数 A)由用户自己定义B)均为2个字节 C)是任意的D)由所用机器的机器字长决定 38、若有以下定义,则能使值为3的表达式是 intk=7,x=12; A)x%=(k%=5)B)x%=(k-k%5) C)x%=k-k%5D)(x%=k)-(k%=5) 39、下面程序的输出结果为 main() {inta,b;b=(a=3*5,a*4,a*5); printf("%d",b);} A)60B)75 C)65D)无确定值 40、假定x和y为double型,则表达式x=2,y=x+3/2的值是 A)3.500000B)3 C)2.000000D)3.000000 41、以下变量x,y,z均为double类型且已正确赋值,不能正确表示数学式子x÷y÷z的C语言表达式是 A)x/y*zB)x*(1/(y*z)) C)x/y*1/zD)x/y/z 42、以下程序的输出结果是 main() {charc=′z′; printf("%c",c-25); } A)aB)Z C)z-25D)y 43、有以下程序 #include main() {char*p="abcde\0fghjik\0"; printf("%d\n",strlen(p)); } 程序运行后的输出结果是 A)12B)15 C)6D)5 44、设有intx=11;则表达式(x++*1/3)的值是 A)3B)4 C)11D)12 45、若变量a是int类型,并执行了语句: a=′A′+1.6;,则正确的叙述是 A)a的值是字符CB)a的值是浮点型 C)不允许字符型和浮点型相加D)a的值是字符′A′的ASCII值加上1 46、下列程序运行的结果是 main() {floatx; inti; x=3.6; i=(int)x; printf("x=%f,i=%d",x,i); } A)x=3.600000,i=3B)x=3.6,i=3 C)x=3,i=3D)x=3.600000,i=3.000000 二、填空题 1、在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为4;一个double型数据在内存中所占的字节数为【】。 2、以下程序的输出结果是【】。 main() {inti=010,j=10; pirntf("%d,%d\n",i,j); } 3、已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=′a′+′8′-′3′的值为【】。 4、下列程序的输出结果为【】。 main() {intx=3,y=5; printf("%d",x=(x--)*(--y)); } 5、设y是int型,请写出y为奇数的关系表达式【】。 6、设inta=5,b=6,表达式(++a==b--)? ++a: --b的值是【】。 7、以下程序的输出结果是【】。 main() {inta=0; a+=(a=8); printf("%d\n",a);} 8、在计算机中,字符的比较是对它们的【】进行比较。 9、在内存中,存储字符′x′要占用1个字节,存储字符串″X″要占用【】个字节。 10、下列程序的输出结果是16.00,请填空。 main() {inta=9,b=2; floatx=【】,y=1.1,z; z=a/2+b*x/y+1/2; printf("%5.2f\n",z); } 11、以下程序段的输出结果是【】。 main() {inta=2,b=3,c=4; a*=16+(b++)-(++c); printf("%d",a); } 12、以下程序段的输出结果是【】。 intx=17,y=26; printf("%d",y/=(x%=6)); 13、将以下程序写成三目运算表达式是【】。 if(a>b)max=a; elsemax=b; 14、下列y的值是【】。 inty;y=sizeof(2.25*4); 15、下列x的值是【】。 intx;x=sizeof2.25*4; 16、设x和y均为int型变量,且x=1,y=2,则表达式double(1+x/y)的值为【】。 17、把数学表达式 改写成C语言的表达式是【】。 18、若有以下定义: chara;intb; floatc;doubled; 则表达式a*b+d-c值的类型为【】。 19、若有以下程序段: intc1=1,c2=2,c3; c3=1.0/c2*c1; 则执行后,c3中的值是【】。 三、部分填空题解析 2、解析: 以0开头的是八进制数。 3、解析: 在C语言中,整型,实型,字符型数据间可以混合运算,在进行运算时,不同类型的数据要先转换成同一类型,然后再进行运算。 我们可以这样计算本题,97+8-3=102,即102所对应的字母为f。 4、解析: x--的值为3,--y的值为4;注意前缀--和后缀--的区别。 8、解析: C语言中,字符也可以进行比较运算,且是按照ASCII码值进行的。 9、计算机存储一个字符用1个字节,存储字符串时,每个字符用占用1个字节,另在字符串的有效字符之后存储1个字符串的结束标记符。 所以存储字符串“X”要占用2个字节,存储字符′x′只要1个字节。 10、解析: 本题最后一条语句,表示以浮点格式输出z的值,宽度为5,其中所含2位小数,应该注意的是,两个整型运算结果仍为整型,如1/2的结果为0,对本题可逐步求解: 16.00=9/2+2*x/1.1+1/2 16.00=4+2*x/1.1+0 12.00=2*x/1.1 所以,x的值为6.6。 11、解析: a*=16+(b++)-(++c)等价于a=a*(16+(b++)-(++c)),b++的值为3,++c的值为5,请注意前缀++和后缀++的用法。 12、解析: %是取余运算,操作数为整型,所以最后的结果也为整型,运算过程如下: y/=(x%-6); y/=(x=x%6); y/=5; y=y/5;y=5; 13、解析: 本题考查三目运算符的用法,条件运算符要求有三个操作对象,称三目(元)运算符,它是C语言中惟一的一个三目运算符。 条件表达式的一般形式为: 表达式1? 表达式2: 表达式3所以,我们可以写成(a>b)? a: b,它是一个“条件表达式”。 执行顺序是: 如果(a>b)条件为真,则条件表达式取值a,否则取值b。 14、解析: sizeof(2.25*4)为sizeof(10.00)值为8,C语言规定浮点型常量当双精度处理(以IBM-PC机为例)。 15、解析: sizeof运算符高于算术运算符,所以sizeof2.25*4等价于(sizeof2.25)*4为8×4=32(以IBM-PC机为例)。 16、解析: 本题考查两个知识点一是x/y的值为整型即为0,二是数字1存放在double中是double类型。 18、解析: C语言中,如果运算符两边的数据类型不同,将进行类型转换,根据转换规则,短整型转为长整型;整型转换为实型。 19、解析: 在赋值运算中,如果表达式中变量和常量的数据类型不一致就会自动进行类型转换。 系统会计算1.0/c2,由于1.0是实型,所以均先转化为双精度型0.500000,再和c1转化后的双精度数相乘得0.500000。 但其要赋值给整型变量c3,故要进行强制转换,c3的值为0。 第3章顺序程序设计 一、选择题 1、结构化程序所规定的三种最基本控制结构是 A)输入、处理、输出 B)树形、网形、环形 C)顺序、选择、循环 D)主程序、子程序、函数 2、若说明int*p,n;则通过语句scanf能够正确读入数据的程序段是 A)p=&n;scanf("%d",&p);B)p=&n;scanf("%d",*p); C)scanf("%d",n);D)p=&n;scanf("%d",p); 3、以下程序段的输出结果是 inta=1234; printf("%2d\n",a); A)12B)34 C)1234D)提示出错、无结果 4、已有定义inta=-2;和输出语句printf("%8lx",a);以下正确的叙述是 A)整型变量的输出形式只有%d一种 B)%x是格式符的一种,它可以适用于任何一种类型的数据 C)%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的 D)%8lx不是错误的格式符,其中数字8规定了输出字段的宽度 5、对下面程序描述正确的一项是(每行程序前面的数字表示行号) 1main() 2{ 3floata[3]={0.0}; 4inti; 5for(i=0;i<3;i++)scanf("%d",&a[i]); 6for(i=1;i<3;i++)a[0]=a[0]+a[i]; 7printf("%f\n",a[0]); 8} A)没有错误B)第3行有错误 C)第5行有错误D)第7行有错误 6、若变量已正确说明为int类型,要通过语句scanf("%d%d%d",&a,&b,&c);给a赋值3,b赋值5,c赋值8,正确的输入形式是 A)3<回车> 5<回车> 8<回车> B)3,5,8<回车> C)3<回车> 58<回车> D)35<回车> 8<回车> 7、以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是 main() {int*p,*q,a,b; p=&a; printf("inputa: "); scanf("%d",*p); } A)*p表示的是指针变量p的地址 B)*p表示的是变量a的值,而不是变量a的地址 C)*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("%d%d%d",x,y,z); D)read("%d%d%d",&x,&y,&z); 9、执行下列程序时输入: 123<空格>456<空格>789<回车>输出结果是 main() {chars[100];intc,i; scanf("%c",&c);scanf("%d",&i);scanf("%s",s); printf("%c,%d,%s\n",c,i,s);} A)123,456,789B)1,456,789 C)1,23,456,789D)1,23,456 二、填空题 1、以下程序的输出结果是【】。 inta=1234; printf("%2d\n",a); 第4章选择结构程序设计 一、选择题 1、在C程序中,判逻辑值时,用“非0”表示逻辑值“真”,又用“0”表示逻辑值“假”。 在求逻辑值时,用()表示逻辑表达式值为“真”,又用()表示逻辑表达式值为“假”
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国 二级 语言 练习题