C语言2级习题

更新时间:2023-10-07 12:27:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第2章 程序的灵魂----算法

一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。) 2.1以下叙述中正确的是 A)C语言比其他语言高级

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

C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式 D)C语言出现的最晚,具有其他语言的一切优点 正确答案: C

2.2 以下叙述中正确的是 A)构成C程序的基本单位是函数 B)可以在一个函数中定义另一个函数 C)main()函数必须放在其他函数之前 D)所有被调用的函数一定要在调用之前进行定义 正确答案: A

2.3 以下说法正确的是

A)C语言程序总是从第一个的函数开始执行

B)在C语言程序中,要调用函数必须在main()函数中定义 C)C语言程序总是从main()函数开始执行

D)C语言程序中的main()函数必须放在程序的开始部分 正确答案: C

2.4 C语言规定,在一个源程序中,main函数的位置 A)必须在最开始

B)必须在系统调用的库函数的后面 C)可以任意 D)必须在最后 正确答案: C

2.5 以下叙述不正确的是

A)一个C源程序可由一个或多个函数组成 B)一个C源程序必须包含一个main函数 C)C程序的基本组成单位是函数

D)在C程序中,注释说明只能位于一条语句的后面 正确答案: D

2.6 下列叙述中正确的是 A)C语言编译时不检查语法 B)C语言的子程序有过程和函数两种 C)C语言的函数可以嵌套定义 D)C语言的函数可以嵌套调用

正确答案: D

2.7 以下叙述正确的是

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

B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数 C)在C程序中,无论是整数还是实数,都能被准确无误地表示 D)在C程序中,%是只能用于整数运算的运算符 正确答案: D

2.8 以下说法错误的是 A)一个算法应包含有限个步骤

B)在计算机上实现的算法是用来处理数据对象的

C)算法中指定的操作,不能通过已经实现的基本运算执行有限次后实现 D)算法的目的是为了求解 正确答案: C

2.9 算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性的是

A)有零个输入或多个输入 B)高效性 C)有穷性 D)确定性 正确答案: B

2.10 下列关于C语言的说法不正确的是

A)C语言既具有高级语言的一切功能,也具有低级语言的一些功能

B)C语言中的每一条执行语句都必须用分号结束,分号不是C语言的一部分,是语句之间的分隔符号

C)注释可以出现在程序中任意合适的地方

D)命令行后面不能加分号,命令行不是C语言的语句 正确答案: B

2.11 以下说法错误的是

A)高级语言都是用接近人们习惯的自然语言和数学语言作为语言的表达形式 B)计算机只能处理由0和1的代码构成的二进制指令或数据

C)C语言源程序经过C语言编译程序编译之后生成一个后缀为.EXE的二进制文件 D)每一种高级语言都有它对应的编译程序 正确答案: C

2.12 C语言中用于结构化程序设计的3种基本结构是 A)顺序结构、选择结构、循环结构 B)if,switch,break C)for,while,do-while D)if,for,continue

正确答案: A

二、填空题(请将每一个空的正确答案写在答题卡相应序号后。)

2.13 用高级语言编写的程序称为【1】程序,它可以通过解释程序翻译一句执行一句的方式执行,也可以通过编译程序一次翻译产生目标程序,然后执行。 正确答案: 源程序

2.14 C语言程序的注释可以出现在程序中的任何地方,一个注释以【2】作为开始和结束。 正确答案: /* */

第3章 数据类型运算符与表达式

一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。) 3.1 C语言中最简单的数据类型包括 A)整型、实型、逻辑型 B)整型、实型、字符型 C)整型、字符型、逻辑型 D)字符型、实型、逻辑型 正确答案: B

3.2 C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符 A)必须为字母 B)必须为下划线 C)必须为字母或下划线

D)可以是字母,数字和下划线中任一字符 正确答案: C

3.3 下列可用于C语言用户标识符的一组是 A)void, define, WORD B)a3_b3, _123,Car C)For, -abc, IF Case D)2a, DO, sizeof 正确答案: B

3.4 下面四个选项中,均是不正确的8进制数或16进制数的选项是 A)016 0x8f 018 B)0abc 017 0xa C)010 -0x11 0x16 D)0a12 7ff -123 正确答案: D

3.5 下列数据中,不合法的C语言实型数据的是 A)0.123 B)123e3 C)2.1e3.5

D)789.0 正确答案: C

3.6 在16位C编译系统上,若定义long a;,则能给a赋40000的正确语句是 A)a=20000+20000; B)a=4000*10; C)a=30000+10000; D)a=4000L*10L; 正确答案: D

3.7 若有说明语句:char c='\72';则变量c A)包含1个字符 B)包含2个字符 C)包含3个字符

D)说明不合法,c的值不确定 正确答案: A

3.8 有字符串如下,\\n\\\407as1\\\xabc\则字符串的长度为 A)6 B)7 C)8 D)9 正确答案: D

3.9 C语言中运算对象必须是整型的运算符是 A)%= B)/ C)= D)<= 正确答案: A

3.10 若变量已正确定义并赋值,以下符合C语言语法的表达式是 A)a:=b+1 B)a=b=c+2 C)int 18.5%3 D)a=a+7=c+b 正确答案: B

3.11 若变量a,i已正确定义,且i已正确赋值,合法的语句是 A)a= =1 B)++i; C)a=a++=5; D)a=int(i); 正确答案: B

3.12 若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是 A)2.500000 B)2.750000 C)3.500000 D)0.000000 正确答案: A

3.13 若有运算符<<,sizeof,^,&=,则它们按优先级由高至低的正确排列次序是 A)sizeof,&=,<<,^ B)sizeof,<<,^,&= C)^,<<,sizeof,&= D)<<,^,&=,sizeof 正确答案: B

3.14 以下不正确的叙述是

A)在C程序中,逗号运算符的优先级最低 B)在C程序中,APH和aph是两个不同的变量

C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变 D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值

正确答案: D

3.15 已知int i,a;执行语句i=(a=3,a++,- -a,a+4,a+5,++a);后,变量i的值为 A)2 B)3 C)4 D)5 正确答案: C

3.16 设变量a是int型,f是float型,i是double型,则表达式10+′a′+i*f值的数据类型为 A)int B)float C)double D)不确定 正确答案: C

3.17 在C语言中,char型数据在内存中的存储形式是 A)补码 B)反码 C)原码 D)ASCII码 正确答案: D

3.18 字符型数据在机器中是用ASCII码表示的,字符’5’和’7’在机器中表示为 A)10100011和 01110111 B)01000101和01100011 C)00110101和00110111 D)01100101和01100111 正确答案: C

3.19 不能进行++和- -运算的数据类型为 A)指针 B)整型 C)长整型 D)常量 正确答案: D

3.20 设有int x=11;则表达式(x++*1/3)的值是 A)3 B)4 C)11 D)12 正确答案: A

3.21 以下程序的输出结果是 main() { int a=21,b=11;

printf(\\n\); } A)30 B)31 C)32 D)33 正确答案: A

3.22 假设整型变量a,b,c的值均为5,则表达式a+++b+++c++的值为 A)17 B)16 C)15 D)14 正确答案: C

3.23 已知int a=6; 则执行a+=a-=a*a;语句后,a的值为 A)36 B)0 C)-24

D)-60 正确答案: D

3.24 设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是 A)n=(n*100+0.5)/100.0 B)m=n*100+0.5,n=m/100.0 C)n=n*100+0.5/100.0 D)n=(n/100+0.5)*100.0 正确答案: B

3.25 sizeof(float)是 A)一个双精度型表达式 B)一个整型表达式 C)一种函数调用 D)一个不合法的表达式 正确答案: B

3.26 在C语言中,int,char和short三种类型数据在内存中所占用的字节数 A)由用户自己定义 B)均为2个字节 C)是任意的

D)由所用机器的机器字长决定 正确答案: D

3.27 以下变量x,y,z均为double类型且已正确赋值,不能正确表示数学式子x÷y÷z的C语言表达式是 A)x/y*z

B)x*(1/(y*z)) C)x/y*1/z D)x/y/z 正确答案: A

3.28 下列关于复合语句和空语句的说法错误的是 A)复合语句是由“{”开头,由“}”结尾的 B)复合语句在语法上视为一条语句

C)复合语句内,可以有执行语句,不可以有定义语句部分 D)C程序中的所有语句都必须由一个分号作为结束 正确答案: C

3.29 下列关于字符串的说法中错误的是

A)在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符′\0′作为字符串结束标志

B)′\0′作为标志占用存储空间,计入串的实际长度

C)在表示字符串常量的时候不需要人为在其末尾加入′\0′ D)在C语言中,字符串常量隐含处理成以′\0′结尾 正确答案: B

二、填空题(请将每一个空的正确答案写在答题卡相应序号后。) 3.30 以下程序的输出结果是【1】。 int a=1234;

printf (\\n\,a); 正确答案: 1234

3.31 在计算机中,字符的比较是对它们的【2】进行比较。 正确答案: ASCII码

3.32 在内存中,存储字符′x′要占用1个字节,存储字符串″X″要占用【3】个字节。 正确答案: 2

3.33 在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为4;一个double型数据在内存中所占的字节数为【4】。 正确答案: 8

3.34 以下程序段的输出结果是【5】。 main ()

{int a=2,b=3,c=4; a*=16+(b++)-(++c); printf(\); }

正确答案: 28

3.35 以下程序段的输出结果是【6】 。 int x=17,y=26;

printf (\%d\(x%=6)); 正确答案: 5

3.36 下列y的值是 【7】 。 int y; y=sizeof(2.25*4); 正确答案: 8

3.37 以下程序的输出结果是 【8】 。 main () {int i=010,j=10;

pirntf (\\n\); }

正确答案: 8,10

3.38 已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=′a′+′8′-′3′的值为 【9】 。 正确答案: f

3.39 如下语句printf(\\n\;在执行后的输出结果是 【10】 。 正确答案: j

3.40 定义int a=5,b=20;若执行语句printf(\\n\);后,输出的结果为 【11】 。 正确答案: 9

第4章 顺序程序设计

一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。)

4.1 若变量已正确说明为float型,要通过语句scanf("%f%f%f",&a,&b,&c);给a赋予10.0,b赋予22.0,c赋予33.0,下列不正确的输入形式是 A)10<回车>22<回车>33<回车> B)10.0,22.0,33.0<回车> C)10.0<回车>22.0 33.0<回车> D)10 22<回车>33<回车> 正确答案: B 4.2 现有以下程序段 #include main() { int a,b,c;

scanf(\); printf(\\n\); }

若输出的结果为a=20,b=30,c=40,则以下能够正确输入数据的是 A)a=10]20,b=20]30,c=40 B)20,30,40 C)a=20,b=30,c=40 D)a=10]20,b=30]20,c=40 [注]: “]”表示空格,表示回车 正确答案: D

4.3 x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是 A)INPUT x、y、z;

B)scanf(\); C)scanf(\); D)read(\); 正确答案: B

4.4 已有定义int a=-2;和输出语句 printf(\);以下正确的叙述是 A)整型变量的输出形式只有%d一种

B)%x是格式符的一种,它可以适用于任何一种类型的数据

C)%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的

D)%8lx不是错误的格式符,其中数字8规定了输出字段的宽度 正确答案: D

4.5 下列程序段的输出结果是: int a=1234; float b=123.456; double c=12345.54321;

printf(\); A)无输出

B)12,123.5,12345.5 C)1234,123.5,12345.5 D)1234,123.4,1234.5 正确答案: C

4.6 执行下列程序时输入:123<空格>456<空格>789<回车> 输出结果是 main()

{ char s[100]; int c, i;

scanf(\); scanf(\); scanf(\); printf(\\n\);} A)123,456,789 B)1,456,789 C)1,23,456,789 D)1,23,456 正确答案: D

4.7 若已定义:int a=25,b=14,c=19;以下三目运算符(?:)所构成语句的执行后 a<=25&&b--<=2&&c?printf(\\n\):printf(\\n\,a,b,c);程序输出的结果是 A)***a=25,b=13,c=19 B)***a=26,b=14,c=19 C)### a=25,b=13,c=19 D)### a=26,b=14,c=19 正确答案: C

4.8 请选出以下语句的输出结果

printf(\\n\(\\t\\\065\xff\n\)); A)5 B)14 C)8

D)输出项不合法,无正常输出 正确答案: A

4.9 下列程序的输出结果是

main() {int i,a=0,b=0; for(i=1;i<10;i++) { if(i%2= =0) { a++; continue; } b++; }

printf(\);} A)a=4,b=4 B)a=4,b=5 C)a=5,b=4 D)a=5,b=5 正确答案: B

6.8 阅读下列程序,则执行结果是 #include \main()

{int a=0,b=0,c=0,i; for(i=0;i<4;i++) switch(i) { case 0:a=i++; case 1:b=i++; case 2:c=i++; case 3:i++; }

printf(\\n\);} A)0,1,3,4 B)1,2,3,4 C)0,1,2,5 D)0,2,3,4 正确答案: C

6.9 阅读下列程序,程序的输出结果是 #include \main() { int m,n; float k;

for(m=6;m>2;m- -) { k=0;

for(n=m;n>1;n- -)

k=k+m*n; }

printf(\\n\); }

A)5.000000 B)15.000000 C)25.000000 D)35.000000 正确答案: B

6.10 下面程序的运行结果是 #include \main() { int j,i,k=0; for(j=50;j<=60;j++)

{ if(!(k)) printf(\\n\); for(i=2;i

if(!(j%i)) break; if(i>=j-1) { printf(\); k++; } } } A)5359 B)5953 C)3595 D)9535 正确答案: A 6.11 已知 int t=0; while(t=1) {...}

则以下叙述正确的是 A)循环控制表达式的值为0 B)循环控制表达式的值为1 C)循环控制表达式不合法 D)以上说法都不对 正确答案: B 6.12 设有以下程序段

int x=0,s=0;

while(!x!=0)s+=++x; printf(\); 则

A)运行程序段后输出0 B)运行程序段后输出1

C)程序段中的控制表达式是非法的 D)程序段执行无限次 正确答案: B

6.13 下列程序的输出结果是 #include \main() { int i=6; while(i- -) printf(\); printf(\\n\);} A)531 B)420 C)654321 D)死循环 正确答案: B

6.14 对下Ⅰ,Ⅱ两个语句描述正确的是 Ⅰ.while(1)Ⅱ.for(;;) A)都是无限循环 B)Ⅰ是无限循环,Ⅱ错误 C)Ⅰ循环一次,Ⅱ错误 D)以上答案都错 正确答案: A

6.15 以下程序段的描述,正确的是 x=-1; do {x=x*x;} while(!x); A)是死循环 B)循环执行两次 C)循环执行一次 D)有语法错误 正确答案: C

6.16 若有如下语句 int x=3;

do{ printf(\\n\);}while(!(- -x)); 则上面程序段 A)输出的是1 B)输出的是1和-2 C)输出的是3和0 D)是死循环 正确答案: B

6.17 下面程序的运行结果是 #include main() { int a=1,b=10; do

{ b-=a; a++; }while(b- -<0); printf(\\n\); }

A)a=3,b=11 B)a=2,b=8 C)a=1,b=-1 D)a=4,b=9 正确答案: B

6.18 若运行以下程序时,从键盘输入 ADescriptor(表示回车),则下面程序的运行结果是#include main() {char c;

int v0=1,v1=0,v2=0; do{switch(c=getchar()) {case ′a′:case ′A′: case ′e′:case ′E′: case ′i′:case ′I′: case ′o′:case ′O′: case ′u′:case ′U′:v1+=1; default:v0+=1;v2+=1; } }while(c!=′\n′);

printf(\\n\);} A)v0=7,v1=4,v2=7 B)v0=8,v1=4,v2=8 C)v0=11,v1=4,v2=11 D)v0=13,v1=4,v2=12 正确答案: D

6.19 下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空。 #include main() { int i=0,j,k;

do{ i++; k=316-13*i; }while(______); j=k/11;

printf(\); } A)k/11 B)k C)k/11==0 D)k==0 正确答案: B

6.20 C语言中 while 和do-while循环的主要区别是 A)do-while的循环体至少无条件执行一次

B)while的循环控制条件比do-while的循环控制条件更严格 C)do-while允许从外部转到循环体内 D)do-while 的循环体不能是复合语句 正确答案: A

6.21 下列说法中错误的是 A)只能在循环体内使用break语句

B)在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环 C)在while和do?while循环中,continue语句并没有使整个循环终止

D)continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环判断 正确答案: A

二、填空题(请将每一个空的正确答案写在答题卡相应序号后。)

6.22 设i,j,k均为int型变量,则执行完下面的for语句后,k的值为【1】。 for(i=0, j=10; i<=j; i++, j- -) k=i+j; 正确答案: 10

6.23 下列程序的功能是输入一个整数,判断是否是素数,若为素数输出1,否则输出0,请填空。 main() {int i, x, y=1; scanf(\); for(i=2; i<=x/2; i++) if【2】{ y=0; break;}

本文来源:https://www.bwwdw.com/article/793d.html

Top