全国二级c语言练习题_第1页
全国二级c语言练习题_第2页
全国二级c语言练习题_第3页
全国二级c语言练习题_第4页
全国二级c语言练习题_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

全国计算机等级考试

二级C语言程序设计

第1章C语言程序设计概述.....................................................1

第2章C语言的基本数据类型与表达式..........................................2

第3章顺序程序设计...........................................................7

第4章选择结构程序设计.......................................................8

第5章循环结构..............................................................11

第6章函数与编译预处理......................................................15

第7章数组..................................................................21

第8章指针..................................................................26

第9章结构体数据类型与链表.................................................35

第10章位运算与文件操作...................................................39

上机考试题.....................................................................43

目录

第1章C语言程序设计概述第7章数组

1.1程序与程序设计7.1一维数组

1.2算法及其描述7.2二维数组

1.3C语言的发展及特点7.3数组的应用

1.4C语言程序的基本结构7.4字符数组与字符串

1.5C语言字符集、标识符和关键字7.5数组作为函数的参数

1.6C语言程序的开发环境7.6程序举例

第2章C语言的基本数据类型第8章指针

与表达式8.1指针与指针变量

2.1C语言的基本数据类型8.2指针与函数

2.2常量和变量8.3指针与数组

2.3运算符与表达式8.4指针与字符串

2.4数据类型转换8.5指针数组与命令行参数

8.6程序举例

第3章顺序程序设计

3.1C语言的基本语句第9章结构体数据类型与链表

3.2数据输入与输出9.1结构体类型的定义

3.3程序举例9.2结构体类型变量

9.3结构体类型数组

第4章选择结构程序设计9.4结构体类型指针

4.1关系运算符与关系表达式9.5结构体与函数

4.2逻辑运算符与逻辑表达式9.6链表

4.3if语句

4.4switch语句第10章位运算与文件操作

10.1位运算与位运算符

第5章循环结构10.2位运算举例

5.1while语句10.3C文件概述

5.2do-while语句10.4文件类型指针

5.3for语句10.5文件的打开与关闭

5.4break,continue和goto语句10.6文件的定位

5.5循环的嵌套

5.6复合结构程序举例第11章上机考试题分析

第6章函数与编译预处理

6.1模块化程序设计与函数

6.2函数的定义与调用

6.3函数的递归调用

6.4变量的作用域与存储方式

6.5编译预处理

第1*C将f程再做计挑述

第1章C语言程序设计概述

一、选择题D)在C程序中,%是只能用于整数运算的运算

1、以下叙述中正确的是

语言比其他语言高级

A)C7、以下选项错误的是

B)C语言可以不用编译就能被计算机识别执行

A)main()B)main()

C)C语言以接近英语国家的自然语言和数学语

(intx,y,z;{intx,y,z;

言作为语言的表达形式

x=0;y=x-l;x=0,y=x+l;

D)C语言出现的最晚,具有其他语言的一切优

z=x+y;}z=x+y;}

C)main()

、以下说法正确的是D)main()

2{intx;int

A)C语言程序总是从第一个的函数开始执行{intx,y,z;

inty;

在语言程序中,要调用函数必须在x=0;y=x+l;

B)Cmainx=0,y=x+l;

()函数中定义

z=x+y;}z=x+y,}

C)C语言程序总是从main()函数开始执行

语言程序中的函数必须放在程序

D)Cmain()8、以下4个选项中,不能看做一条语句的是

的开始部分

A);B)a=5,b=2.5,c=3.6;

C)if(a<5);D)if(b!=5)x=2;y=6;

3、C语言规定,在一个源程序中,main函数的位置

A)必须在最开始B)必须在系

9、字符型数据在机器中是用ASCII码表示的,字符

统调用的库函数的后面

“5”和“7”在机器中表示为

C)可以任意D)必须在最

A)10100011和01110111

B)01000101和01100011

C)00110101^100110111

4、以下叙述不正确的是

D)01100101和01100111

A)一个C源程序可由一个或多个函数组成

B)一个C源程序必须包含一^f'main函数

C)C程序的基本组成单位是函数二、填空题

D)在C程序中,注释说明只能位于一条语句的

后面1、用高级语言编写的程序称为【】程序,它可

以通过解释程序翻译一句执行一句的方式执行,也

5、C语言程序的基本单位是可以通过编译程序一次翻译产生目标程序,然后执

A)程序行B)行。

语句

C)函数D)2、C语言程序的注释可以出现在程序中的任何地

字符方,一个注释以【】作为开始和结束。

、以下叙述正确的是

6三、部分填空题解析

A)在C程序中,每行中只能写一条语句

B)若a是实型变量,C程序中允许赋值a=10,2、解析:C语言程序的注释可以出现在程序基本

因此实型变量中允许存放整型数单词之间的任何地方,C语言程序的注释以'/*'

C)在C程序中,无论是整数还是实数,都能被作为开始标记,并以'*/'作为结束标记。

准确无误地表示

1

第2*C辖雷的泉漳极据矣«表达式

第2章C语言的基本数据类型与表达式

一、选择题A)AP_0doB)floatlaO_A

C)b-agotointD)_123tempint

1、C语言中最简单的数据类型包括

整型、实型、逻辑型整型、

A)B)9、下面四个选项中,均是合法整型常量的选项是

实型、字符型

A)160-Oxffff011B)-OxcdfOlaOxe

整型、字符型、逻辑型字符型、

C)D)C)-01986,0120668D)-0x48a2e5Ox

实型、逻辑型

10、下面四个选项中,均是不正确的8进制数或16

2、下列各数据类型不属于构造类型的是进制数的选项是

枚举型共用型

A)B)A)0160x8f018B)Oabc017Oxa

结构型数组型

C)D)C)010-0x110x16D)0al27ff-123

、语言中的标识符只能由字母,数字和下划线三

3C11、下列数据中,不合法的C语言实型数据的是

种字符组成,且第一个字符

A)0.123B)123e3

必须为字母

A)B)C)2.1e3.5D)789.0

必须为下划线

必须为字母或下划线

C)D)12、在C语言中,退格符是

可以是字母,数字和下划线中任一字符

A)\nB)\t

C)\fD)\b

、下列可用于语言用户标识符的一组是

4C13、下列用于printf函数的控制字符常量中,代表“竖

A)void,define,WORDB)a3_b3,向跳格”的转义字符常量是

_123,CarA)\bB)\t

C)For,-abc,IFCaseD)2a,C)\vD)\f

DO,sizeof

14、若有说明语句:charc=''72';则变量c

、请选出可用作语言用户标识符的是

5CA)包含1个字符B)包含2个字符

A)void,define,WORDB)C)包含3个字符D)说明不合法,c的值不确定

a3_b3,_123,IF

C)FOR,—abc,CaseD)15、在C语言中,char型数据在内存中的存储形式是

2a,Do,SizeofA)补码B)反码

C)原码D)ASCII

6、以下选项中合法的用户标识符是码

A)longB)

_2Test16、若变量已正确定义并赋值,以下符合C语言语

C)3DmaxD)法的表达式是

A.datA)a:=b+lB)a=b=c+2

C)int18.5%3D)a=a+7=c+b

7、下列是用户自定义标识符的是

A)_wlB)17、若变量a,i已正确定义,且i已正确赋值,合法的

3_xy语句是

C)intD)A)a==lB)++i;

LINE-3C)a=a++=5;D)a=int(i);

、下面四个选项中,均是不合法的用户标识符的

818、在16位C编译系统上,若定义longa;,则能给a

选项是

赋40000的正确语句是

2

第2*C语者的泉漳戳掘类型■&表达式

A)a=20000+20000;B)A)在C程序中,逗号运算符的优先级最低

a=4000*10;B)在C程序中,APH和aph是两个不同的变量

C)a=30000+10000;D)C)若a和b类型相同,在计算了赋值表达式a=b

a=4000L*10L后b中的值将放入a中,而b中的值不变

D)当从键盘输入数据时,对于整型变量只能

19、若运行时给变量x输入12,则以下程序的运行输入整型数值,对于实型变量只能输入实型数值

结果是

main()27、sizeof(float)是

{intx,y;A)一个双精度型表达式

scanf("%d”,&x);B)一个整型表达式

y=x>12?x+10:x-12;C)一种函数调用

printf("%d\nn,y);D)一个不合法的表达式

)

A)0B)2228、若x,i,j和k都是int型变量,则计算表达式x=

C)12D)10(i=4,j=16,k=32)后,x的值为

A)4B)16

20、在C语言中,运算对象必须是整型数的运算符C)32D)52

A)%B)\29、下列程序的输出结果是

C)%和\D)**main()

{doubled=3.2;intx,y;

21、C语言中运算对象必须是整型的运算符是x=1.2;y=(x+3.8)/5.0;

A)%=B)/printf("%d\n”,d*y);

C)=D)<=)

A)3B)3.2

22、已知各变量的类型说明如下:C)0D)3.07

intk,a,b;

unsignedlongw=5;30>设变量a是int型,f是float型,i是double型,则

doublex=1.42;表达式10+'a'+i*f值的数据类型为

则以下不符合C语言语法的表达式是A)intB)float

A)x%(-3)B)w+=・2、C)doubleD)不确定

C)k=(a=2,b=3,a+b)D)

a+=a-=(b=4)*(a=3)31、设以下变量均为int类型,表达式的值不为7的

23、若有定义:inta=7;floatx=2.5,y=4.7;则表达式A)(x=y=6,x+y,x+l)B)

x+a%3*(int)(x+y)%2/4的值是(x=y=6,x+y,y+l)

A)2.500000B)2.750000C)(x=6,x+1,y=6,x+y)D)

C)3.500000D)0.000000(y=6,y+1,x=y,x+1)

24、请选出以下语句的输出结果32、若有条件表达式(exp)?a++:b-,则以下表达

printf("%d\n",strlen("\t\"\065\xff\n"));式中能完全等价于表达式(exp)的是

A)5B)14A)(exp==0)B)(exp!=0)

C)8D)输出项不合法,无C)(exp==1)D)(exp!=l)

正常输出

33、以下选项中,与卜=叶+完全等价的表达式是

25、设有数组定义:chararray[]="China";则数组A)k=n,n=n+lB)n=n+l,k=n

array所占的空间为C)k=++nD)k+=n+l

A)4个字节B)5个字节

C)6个字节D)7个字节34、以下程序的输出结果是

main()

26、以下不正确的叙述是{inta=21,b=l1;

3

第2*C语言的基漳檄据美蒙易表达或

printf("%d\n",—a+b,—b+a);)

)A)aB)Z

A)30B)31C)z-25D)y

C)32D)33

43、有以下程序

35、设x、y均为整型变量,且x=10y=3,则以下语#include<string.h>

句的输出结果是main()

printf(H%d,%d\nM,x—y);{char*p="abcde\Ofghjik\0n;

A)10,3B)9,3printf("%d\n",strlen(p));

C)9,2D)10,2)

程序运行后的输出结果是

36、表达式a<b||(c&d)中运算符优先级最高的是A)12B)15

A)||B)&C)6D)5

C)<D)()

44、设有intx=ll;则表达式(x++*l/3)的值是

37、在C语言中,int,char和short三种类型数据在内A)3B)4

存中所占用的字节数C)11D)12

A)由用户自己定义B)均为2

个字节45、若变量a是int类型,并执行了语句:a='A'

C)是任意的D)由所+1.6;,则正确的叙述是

用机器的机器字长决定A)a的值是字符CB)a

的值是浮点型

38、若有以下定义,则能使值为3的表达式是C)不允许字符型和浮点型相加D)a

intk=7,x=12;的值是字符'A'的ASCII值加上1

A)x%=(k%=5)B)x%=

(k-k%5)46、下列程序运行的结果是

C)x%=k-k%5D)(x%=k)-main()

(k%=5){floatx;

inti;

39、下面程序的输出结果为x=3.6;

main()i=(int)x;

{inta,b;b=(a=3*5,a*4,a*5);printf(Mx=%f,i=%dn,x,i);

printf("%d”,b);})

A)60B)75A)x=3.600000j=3B)

C)65D)无确定值x=3.6,i=3

C)x=3,i=3D)

40、假定x和y为double型,则表达式x=2,y=x+3/2的x=3.600000,i=3.000000

值是

A)3.500000B)3

C)2.000000D)3.000000

二、填空题

41、以下变量x,y,z均为double类型且已正确赋值,1、在C语言中(以16位PC机为例),一个float型数

不能正确表示数学式子x+y+z的C语言表达式是据在内存中所占的字节数为4;一个double型数据

A)x/y*zB)x*(1/在内存中所占的字节数为【

(y*z))

C)x/y*l/zD)x/y/z2、以下程序的输出结果是【】。

main()

42、以下程序的输出结果是{inti=010,j=10;

main()pirntf("%d,%d\n〃,i,j);

{charc=,z';)

printf("%cn,c-25);

4

第2*C辖雷的泉漳极据矣«表达式

3、已知字母a的ASCH码为十进制数97,且设ch为14、下列y的值是【工

字符型变量,则表达式ch='a'+'8'-'3'的值inty;y=sizeof(2.25*4);

为【】。

15、下列x的值是【】。

4、下列程序的输出结果为【】。intx;x=sizeof2.25*4;

main()

{intx=3,y=5;16、设x和y均为int型变量,且x=l,y=2,则表达

printf("%d”,x=(x-)*(一y));式double(1+x/y)的值为【

/■>、m+n

(cos'x)-----

5、设y是int型,请写出y为奇数的关系表达式_17、把数学表达式m-n改写成c语言

[1o

的表达式是【J

6、设inta=5,b=6,表达式(++a==b-)?++a:一b

的值是【】。

18、若有以下定义:

chara;intb;

7、以下程序的输出结果是【工

floatc;doubled;

main()

则表达式a*b+d-c值的类型为【】o

{inta=0;

a+=(a=8);

19、若有以下程序段:

printfa);}

intcl=l,c2=2,c3;

c3=l.0/c2*cl;

8、在计算机中,字符的比较是对它们的【】进

则执行后,c3中的值是【】。

行比较。

9、在内存中,存储字符'x'要占用1个字节,存三、部分填空题解析

储字符串"X"要占用【】个字节。

2、解析:以0开头的是八进制数。

10、下列程序的输出结果是16.00,请填空。

main()3、解析:在C语言中,整型,实型,字符型数据

{inta=9,b=2;间可以混合运算,在进行运算时,不同类型的数据

floatx=[],y=l.1,z;要先转换成同一类型,然后再进行运算。我们可以

z=a/2+b*x/y+l/2;这样计算本题,97+8-3=102,即102所对应的字母

printf("%5.2f\n",z);为f。

}

4、解析:x一的值为3,一y的值为4;注意前缀一

11、以下程序段的输出结果是【和后缀一的区别。

main()

{inta=2,b=3,c=4;8、解析:C语言中,字符也可以进行比较运算,

a*=16+(b++)-(++c);且是按照ASCII码值进行的。

printfa);

9、计算机存储一个字符用1个字节,存储字符串时,

每个字符用占用1个字节,另在字符串的有效字符

12、以下程序段的输出结果是【】。之后存储1个字符串的结束标记符。所以存储字符

intx=17,y=26;串“X”要占用2个字节,存储字符'x'只要1个字

printf("%d",y/=(x%=6));节。

13、将以下程序写成三目运算表达式是【】。10、解析:本题最后一条语句,表示以浮点格式

if(a>b)max=a;输出z的值,宽度为5,其中所含2位小数,应该注

elsemax=b;意的是,两个整型运算结果仍为整型,如1/2的结

果为0,对本题可逐步求解:

5

第2*C辖雷的泉漳戳据类《表达式

16.00=9/2+2*x/l.1+1/2

16.00=4+2*x/l.1+014、解析:sizeof(2.25*4)为sizeof(10.00)

12.00=2*x/l.1值为8,C语言规定浮点型常量当双精度处理(以

所以,x的值为6.6。IBM-PC机为例)。

11、解析:a*=16+(b++)-(++c)等价于a=a*15、解析:sizeof运算符高于算术运算符,所以

(16+(b++)-(++c)),b++的值为3,++c的值为sizeof2.25*4等价于(sizeof2.25)*4为8X4=

5,请注意前缀++和后缀++的用法。32(以IBM-PC机为例)。

12、解析:%是取余运算,操作数为整型,所以16、解析:本题考查两个知识点一是x/y的值为整

最后的结果也为整型,运算过程如下:型即为0,二是数字1存放在double中是double类

y/=(x%-6);型。

y/=(x=x%6);

y/=5;18、解析:C语言中,如果运算符两边的数据类型

y=y/5;y=5;不同,将进行类型转换,根据转换规则,短整型转

为长整型;整型转换为实型。

13、解析:本题考查三目运算符的用法,条件运

算符要求有三个操作对象,称三目(元)运算符,19、解析:在赋值运算中,如果表达式中变量和

它是C语言中惟一的-一个三目运算符。条件表达式常量的数据类型不一致就会自动进行类型转换。系

的一般形式为:表达式1?表达式2:表达式3所以,统会计算1.0/c2,由于1.0是实型,所以均先转化

我们可以写成(a>b)?a:b,它是一个“条件表达为双精度型0.500000,再和cl转化后的双精度数相

式”。执行顺序是:如果(a>b)条件为真,则条乘得0.500000o但其要赋值给整型变量c3,故要进

件表达式取值a,否则取值b。行强制转换,c3的值为0。

6

第3*i«本在落强针

第3章顺序程序设计

一、选择题A)3c回车〉

5c回车〉

、结构化程序所规定的三种最基本控制结构是

18〈回车>

输入、处理、输出

A)B)3,5,8〈回车〉

树形、网形、环形

B)C)3〈回车〉

顺序、选择、循环

C)58〈回车〉

主程序、子程序、函数

D)D)35c回车〉

8c回车〉

2、若说明int*p,n;则通过语句scanf能够正确读入数

据的程序段是

7、以下程序中调用scanf函数给变量a输入数值的方

A)p=&n;scanf("%d",&p);法是错误的,其错误原因是

B)p=&n;scanf("%d",*p);main()

C)scanf("%d",n);{int*p,*q,a,b;

D)p=&n;scanf("%d",p);p=&a;

printf("inputa:");

、以下程序段的输出结果是

3scanf("%d",*p);

inta=1234)

printf("%2d\n",a);A)*p表示的是指针变量p的地址

A)12B)34B)*p表示的是变量a的值,而不是变量a的地址

提示出错、无结果

C)1234D)C)*p表示的是指针变量p的值

D)*p只能用来说明p是一个指针变量

4、已有定义inta=-2;和输出语句printf("%81x",a);

以下正确的叙述是

8、x,y,z被定义为int型变量,若从键盘给x,y,z

A)整型变量的输出形式只有%d一种输入数据,正确的输入语句是

是格式符的一种,它可以适用于任何一

B)%xA)INPUTx、y、z;

种类型的数据

B)scanf("%d%d%d",&x,&y,&z);

是格式符的一种,其变量的值按十六进

C)%xC)scanf("%d%d%d",x,y,z);

制输出,但%是错误的

81xD)read("%d%d%d",&x,&y,&z);

D)%81x不是错误的格式符,其中数字8规定了

输出字段的宽度

9、执行下列程序时输入:123(空格>456〈空格>789<

回车〉输出结果是

、对下面程序描述正确的一项是(每行程序前面

5main()

的数字表示行号)

{chars[100];intc,i;

1main()scanf("%c",&c);scanf("%d",&i);scanf

2{("%s",s);

3floata[3]={0.0};printf("%c,%d,%s\n",c,i,s);}

4inti;A)123,456,789B)

5for(i=0;i<3;i++)scanf("%d",&a[i]);1,456,789

6for(i=l;i<3;i++)a[0]=a[0]+aEi];C)1,23,456,789D)

7printf("%f\n",a[0]);1,23,456

8}

A)没有错误B)第3行有错误二、填空题

C)第5行有错误D)第7行有错误

1、以下程序的输出结果是【工

6、若变量已正确说明为int类型,要通过语句scanf

("%d%d%d",&a,&b,&c);给2赋值3,b赋值5,cinta=1234;

赚值8,正确的输入形式是printf("%2d\n",a);

温馨提示

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

评论

0/150

提交评论