C语言程序设计章节练习题带答案_第1页
C语言程序设计章节练习题带答案_第2页
C语言程序设计章节练习题带答案_第3页
C语言程序设计章节练习题带答案_第4页
C语言程序设计章节练习题带答案_第5页
已阅读5页,还剩101页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计章节练习题带答案(1)

第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.4C语言规定,在一个源程序中,main函数的位置

A)必须在最开始

B)必须在系统调用的库函数的后面

C)可以任意

D)必须在最后

正确答案:C

2.5以下叙述不正确的是

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

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

C)C程序的基本组成单位是函数

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

正确答案:I)

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.12C语言中用于结构化程序设计的3种基本结构是

A)顺序结构、选择结构、循环结构

B)if,switch,break

C)for,while,do-while

D)if,for,continue

正确答案:A

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

2.13用高级语言编写的程序称为【1】程序,它可以通过解释程序翻译一句执行一句的方式

执行,也可以通过编译程序一次翻译产生目标程序,然后执行。

正确答案:源程序

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

正确答案:/**/

(2)

一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请

将正确选项填涂在答题卡相应位置上。)

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

A)整型、实型、逻辑型

B)整型、实型、字符型

C)整型、字符型、逻辑型

D)字符型、实型、逻辑型

正确答案:B

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

A)必须为字母

B)必须为下划线

C)必须为字母或下划线

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

正确答案:C

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

A)void,define,WORD

B)a3b3,123,Car

C)For,-abc,IFCase

D)2a,DO,sizeof

正确答案:B

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

A)0160x8f018

B)Oabc017Oxa

C)010-0x110x16

D)0al27ff-123

正确答案:D

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

A)0.123

B)123e3

C)2.Ie3.5

D)789.0

正确答案:C

3.6在16位C编译系统上,若定义longa;,则能给a赋40000的正确语句是

A)a=20000+20000;

B)a=4000*10;

C)a=30000+10000;

D)a=4000L*10L;

正确答案:D

3.7若有说明语句:charc八72';则变量c

A)包含1个字符

B)包含2个字符

C)包含3个字符

D)说明不合法,c的值不确定

正确答案:A

3.8有字符串如下,"\n\\\4D7asl\"\xabc",则字符串的长度为

A)6

B)7

C)8

D)9

正确答案:D

3.9C语言中运算对象必须是整型的运算符是

A)%=

B)/

C)=

D)<=

正确答案:A

3.10若变量已正确定义并赋值,以下符合C语言语法的表达式是

A)a:=b+l

B)a=b=c+2

C)int18.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若有定义:inta=7;floatx=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已知inti,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)00110101w00110111

D)01100101w01100111

正确答案:c

3.19不能进行++和--运算的数据类型为

A)指针

B)整型

C)长整型

D)常量

正确答案:D

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

A)3

B)4

C)11

D)12

正确答案:A

3.21以下程序的输出结果是

main()

{inta=21,b=ll;

printf(飞d\n”,--a+b,---b+a);

}

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已知inta=6;则执行a+=a-=a*a;语句后,a的值为

A)36

B)0

C)-24

D)-60

正确答案:D

3.24设变量n为float类型,1n为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.25sizeof(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*l/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】。

inta=1234;

printfa);

正确答案: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()

{inta.—2,b=3,c=4j

a*=16+(b++)-(++c);

printfa);

}

正确答案:28

3.35以下程序段的输出结果是[5】。

intx=17,y=26;

printfy/=(x%=6)):

正确答案:5

3.36下列y的值是17】。

inty;y=sizeof(2.25*4);

正确答案:8

3.37以下程序的输出结果是[8】。

main()

{inti=010,j=10;

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

}

正确答案:8,10

3.38已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=,a'+'

8'3'的值为【9】o

正确答案:f

3.39如下语句printf("枇\n",'B'+40);在执行后的输出结果是[10]。

正确答案:j

3.40定义inta=5,b=20;若执行语句printf("%d\n",++a*—b/5);后,输出的结果为

[11]。

正确答案:9

(3)

第4章顺序程序设计

一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请

将正确选项填涂在答题卡相应位置上。)

4.1若变量已正确说明为float型,要通过语句scanf(;给@赋

予10.0,b赋予22.0,c赋予33.0,下列不正确的输入形式是

A)10〈回车>22〈回车>33〈回车)

B)10.0,22.0,33.0<回车)

C)10.0〈回车>22.033.0<回车)

D)1022<回车>33〈回车》

正确答案:B

4.2现有以下程序段

#include

main()

{inta,b,c;

scanf(,,a=%*d%d,b=%d%*d,c=%d",&a,&b,&c);

printf(*a=%d,b=%d,c=%d\n*,a,b,c);}

若输出的结果为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.3x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是

A)INPUTx、y、z;

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

C)scanf(z,%d%d%dz,,x,y,z);

D)read("%d%d%d”,&x,&y,&z);

正确答案:B

4.4已有定义inta=-2;和输出语句printf("%81x”,a);以下正确的叙述是

A)整型变量的输出形式只有%d一种

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

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

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

正确答案:D

4.5下列程序段的输出结果是:

inta=1234;

floatb=123.456;

doublec=12345.54321;

printfC-%2.lf,%2.ir,a,b,c);

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()

{chars[100];intc,i;

scanf(缉c”,&c);scanf(线d”,&i);scanf("%s”,s);

printf(*%c,%d,%s\n*,c,i,s);}

A)123,456,789

B)1,456,789

C)1,23,456,789

D)1,23,456

正确答案:D

4.7若己定义:inta=25,b=14,c=19;以下三目运算符(?:)所构成语句的执行后

a<=25&&b一<=2&&c?printf(****a=%d,b=%d,c=%d\n”,a,b,c):printf(b=%d,c=%d

\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(线d\n”,strlen("\t\"\065\xff'n"));

A)5

B)14

C)8

D)输出项不合法,无正常输出

正确答案:A

4.9下列程序的输出结果是

main()

{doubled=3.2;intx,y;

x=l.2;y=(x+3.8)/5.0;

printf(*%d\n*,d*y);

)

A)3

B)3.2

C)0

D)3.07

正确答案:C

4.10调用gets和puts函数时,必须包含的头文件是

A)stdio.h

B)stdlib.h

C)define

D)以上都不对

正确答案:A

4.11阅读下面程序段

#include"stdio.h"

main()

{charc;

c=('z'a')/2+'A';

putchar(c);)

输出结果为

A)M

B)N

C)0

D)Q

正确答案:A

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

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

main()

{inta=9,b=2;

floatx=[1],y=l.1,z;

z=a/2+b*x/y+l/2;

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

}

正确答案:6.6

4.13在使用putchar和getchar函数处理字符时,必须在程序的开头出现包含头文件的命

令行是[2]o

正确答案:^include

4.14下列程序的输出结果是[3],[4].

ttinclude

main()

{floata=~l.3;b=l.3;

printf("%f,%f”,fabs(a),fabs(b);}

正确答案:1.300000

正确答案:L300000

4.15执行程序时的输入为123456789,则程序的运行结果为【5】

^include"stdio.h"

main()

{inta,b;

scanf(&a,&b);

printf(线d\n”,a-b);}

正确答案:7

(4)

第5章选择结构程序设计

一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请

将正确选项填涂在答题卡相应位置上。)

5.1在C程序中,判逻辑值时,用“非0”表示逻辑值“真”,又用“0”表示逻辑值“假

在求逻辑值时,用()表示逻辑表达式值为“真”,乂用()表示逻辑表达式值为“假”.

A)10

B)01

C)非0非0

D)11

正确答案:A

5.2已知intx=6,y=2,z;则执行表达式z=x=x>y后,变量z的值为

A)0

B)1

C)4

D)5

正确答案:B

5.3能正确表示逻辑关系:“a210或aWO”的C语言表达式是

A)a>=10ora<=0

B)a>=0|a<=10

C)a>=10&&a<=0

D)a>=10IIa<=0

正确答案:D

5.4若变量c为char类型,能正确判断出c为小写字母的表达式是

A)'a7<=c<=zz'

B)(c>=za')||(c<=zz')

C)('a'<=c)and('z'>=c)

D)(c>=xa')&&z')

正确答案:D

5.5设intx=l,y=l;表达式(!x||y—)的值是

A)0

B)1

C)2

D)-1

正确答案:B

5.6有如下程序段

inta=14,b=15,x;

charc='A';

x=(a&&b)&&Cc<'Bz);

执行该程序段后,x的值为

A)ture

B)false

C)0

D)1

正确答案:D

5.7以下程序的输出结果是

main()

{inta=4,b=5,c=0,d;

d=!a&&!b||!c;

printfd);}

A)1

B)0

O非0的数

D)-1

正确答案:A

5.8设有:

inta=l,b=2,c=3,d=4,m=2,n=2;

执行(m=a>b)&&(n=c>d)后n的值是

A)1

B)2

C)3

D)4

正确答案:B

5.9已知x,y,z均为整型变量,且值均为1,则执行语句++x||++y&&++z;后,表达式x+y的值

A)1

B)2

C)3

D)4

正确答案:C

5.10表达式a<b||(c&d)中运算符优先级最高的是

A)||

B)&

C)<

D)()

正确答案:D</b||(c&d)中运算符优先级最高的是

5.11若运行时给变量x输入12,则以下程序的运行结果是

main()

{intx,y;

scanf;

y=x>12?x+10:x-12;

printf("%d\n*,y);

}

A)0

B)22

C)12

D)10

正确答案:A

5.12已知charch='C':则以下表达式的值是

ch=(ch>='A'&&ch<='Z')?(ch+32):ch;

A)A

B)a

C)Z

D)c

正确答案:D

5.13若有条件表达式(exp)?a-+:b",则以下表达式中能完全等价于表达式(exp)的是

A)(exp—0)

B)(exp!=0)

C)(exp==l)

D)(exp!=l)

正确答案:B

5.14有以下程序

main()

{inti=l,j=l,k=2;

if((j++||k++)&&i++)

printf("%d,%d,%d\n”,i,j,k);

}

执行后输出结果是

A)1,1,2

B)2,2,1

C)2,2,2

D)2,2,3

正确答案:C

5.15请阅读以下程序:

main()

{inta=5,b=0,c=0;

if(a=b+c)printf;

elseprintf("$$$\n”);

)

以上程序

A)有语法错不能通过编译

B)可以通过编译但不能通过连接

C)输出***

D)输出$$$

正确答案:D

5.16若执行下述程序时,若从键盘输入6和8时,结果为

main()

{inta,b,s;

scanf(“%d%d”,&a,&b);

s=a;

if(a<b)

s=b;

s*=s;

printfs);

}

A)36

B)64

C)48

D)以上都不对

正确答案:B〈/b)

5.17有如下程序

main()

{floatx=2.0,y;

if(x<0.0)y=0.0;

elseif(x<10.0)y=l.0/x;

elsey=l.0;

printf(线f\n〃,y);)

该程序的输出结果是

A)0.000000

B)0.250000

C)0.500000

D)1.000000

正确答案:C

5.18以下4个选项中,不能看做一条语句的是

A);

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

C)if(a<5);

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

正确答案:D

5.19若intk=8;则执行下列程序后,变量k的正确结果是

main()

{intk=8;

switch(k)

{case9:k+=l;

case10:k+=l;

case11:k+=l;break;

default:k+=l;)

printf("/d'n",k);}

A)12

B)11

C)10

D)9

正确答案:D

5.20阅读如下程序段

ttinclude“stdio.h"

main()

{inta=45,b=40,c=50,d;

d=a>30?b:c;

switch(d)

{case30:printf("%d,”,a);

case40:printf("%d,”,b);

case50:printf("%d,”,c);

default:printf('#");}}

则输出的结果是

A)40,50,

B)50,#

C)40,#

D)40,50,n

正确答案:D

5.21现有如下程序段,此程序段编译有错误,则程序段的错误出在

#include

main()

{inta=30,b=40,c=50,d;

d=a>30?b:c;

switch(d)

{casea:printf(“为d,",a);

caseb:printf("%d,”,b);

casec:printf("%d,”,c);

default:printf('#");}}

A)default:printf("#〃);这个语句

B)d=a>30?b:c;这个语句

C)casea:printf(〃%d,〃,a);caseb:printf;casec:printf;

这三个语句

D)switch(d)这个语句

正确答案:C

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

5.22设y是int型,请写出y为奇数的关系表达式【I】。

正确答案:(y%2)==l或(y%2)!=0

5.23设inta=5,b=6,表达式(++a==b--)?++a:一b的值是【2】.

正确答案:7

5.24将以下程序写成三目运算表达式是[3】o

if(a>b)max=a;

elsemax=b;

正确答案:max=(a>b)?a:b;

5.25以下程序输出的结果是[4].

main()

{inta=5,b=4,c=3,d;

d=(a>b>c);

printfd);

)

正确答案:0

5.26若从键盘输入58,则以下程序输出的结果是[5】。

main()

{inta;

scanf;

if(a>50)printfa);

if(a>40)printfa);

if(a>30)printfa);

}

正确答案:585858

5.27阅读下面语句,则程序的执行结果是【6】。

^include"stdio.h"

main()

{inta=-l,b=l,k;

if((++a<0)&&!(b--<=0))

printf(*%d,%d\n*,a,b);

elseprintf(*%d,%d\n*»b,a);}

正确答案:1,0

5.28阅读下面程序,则在执行时候的输出为【7】。

^include"stdio.h"

main()

{intx=l,y=2,z=0;

if(x=2)z=x,x=y,y=z;

printf("%d,%d\n”,x,y);}

正确答案:2,2

5.29以下程序的输出结果是[8】。

main()

{intx=100,a=10,b=20,okl=5,ok2=0;

if(a

elseif(ok2)x=10;

elsex=-l;

printf(*%d\n*,x);}

正确答案:T

5.30阅读下面的程序,当程序在执行时,如果输入的是'A',则输出结果为【9】。

ttinclude“stdio.h"

main()

{chara;

a=getchar();

switch(a)

{case65:printf'A');

case66:printf'B');

default:printf("为s\n","other");}}

正确答案:ABother

(5)

第6章循环控制

一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请

将正确选项填涂在答题卡相应位置上。)

6.1对表达式for(表达式1;;表达式3)可理解为

A)for(表达式1;0;表达式3)

B)for(表达式1;1;表达式3)

C)for(表达式1;表达式1;表达式3)

D)for(表达式1;表达式3;表达式3)

正确答案:B

6.2在下列选项中,没有构成死循环的是

A)inti=100;

while(l)

{i=iO+l;

if(i>100)break;

)

B)for(;;);

C)intk=10000;

do{k++;}while(k>10000);

D)ints=36;

while(s)-s:

正确答案:D

6.3下面有关for循环的正确描述是

A)for循环只能用于循环次数已经确定的情况

B)for循环是先执行循环体语句,后判断表达式

C)在for循环中,不能用break语句跳出循环体

D)for循环的循环体语句中,可以包含多条语句,但必须用花括号挺起来

正确答案:D

6.4若inti,j;,则for(i=j=0;i<10&&j<8;i++,j+=3)控制的循环体执行的次数是

A)9

B)8

C)3

D)2

正确答案:C

6.5阅读下列程序段,则程序的输出结果是

^include"stdio.h"

main()

{inta=10,b=10,k;

for(k=0;a>8;b=++k)

printf("%d,%d,”,a---b);

printf("\n");}

A)10,10,10,0,

B)10,9,9,0,

C)10,10,9,1,

D)9,9,9,1,

考生答案:正确答案:B

6.6有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;

若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。下面程序是求

这堆零件总数,请选择填空。

Sinclude

main()

{inti;

for(i=100;i<200;i++)

if((i-2)%4==0)

if(!((i-3)%7))

if()

printfi);

}

A)i%9=5

B)i%9!=5

C)(i-5)%9!=0

D)(i-5)%9==0

正确答案:D

6.7下列程序的输出结果是

^include"stdio.h"

main()

{inti,a=0,b=0;

for(i=l;i<10;i++)

{if(i%2==0)

{a++;

continue;}

b++;)

printf(*a=%d,b=%d*»a,b);}

A)a=4,b=4

B)a=4,b=5

C)a=5,b=4

D)a=5,b=5

正确答案:B

6.8阅读下列程序,则执行结果是

^include"stdio.h"

main()

{inta=0,b=0,c=0,i;

for(i=0;i<4;i++)

switch(i)

{case0:a=i++;

case1:b=i++;

case2:c=i++;

case3:i++;}

printf(*%<1,%d,%d,%d\n*,a,b,o,i);}

A)0,1,3,4

B)1,2,3,4

C)0,1,2,5

D)0,2,3,4

正确答案:C

6.9阅读下列程序,程序的输出结果是

#include"stdio.h"

main()

(

intm,n;

floatk;

for(m=6;m>2;m--)

{k=0;

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

k=k+m*n;

}

printfk);

}

A)5.000000

B)15.000000

C)25.000000

D)35.000000

正确答案:B

6.10下面程序的运行结果是

#include"stdio.h"

main()

{intj,i,k=0;

for(j=50;j<=60;j++)

{if(!(k))printf;

for(i=2;i<j;i++)

if(!(j%i))break;

if(i>=j-l)

{printfj);

k++;}

}

}

A)5359

B)5953

C)3595

D)9535

正确答案:A</j;i++)>

6.11已知

intt=0;

while(t=l)

{...)

则以下叙述正确的是

A)循环控制表达式的值为0

B)循环控制表达式的值为1

C)循环控制表达式不合法

D)以上说法都不对

正确答案:B

6.12设有以下程序段

intx=0,s=0;

while(!x!=0)s+=++x;

printfs);

A)运行程序段后输出0

B)运行程序段后输出1

C)程序段中的控制表达式是非法的

D)程序段执行无限次

正确答案:B

6.13下列程序的输出结果是

^include"stdio.h"

main()

{inti=6;

while(i--)

printf--i);

printf("\n");}

A)531

B)420

C)654321

D)死循环

正确答案:B

6.14对下I,II两个语句描述正确的是

I.while(1)II.for(;;)

A)都是无限循环

B)I是无限循环,II错误

oi循环一次,n错误

D)以上答案都错

正确答案:A

6.15以下程序段的描述,正确的是

x=-l;

do

{x=x*x;}

while(!x);

A)是死循环

B)循环执行两次

C)循环执行一次

D)有语法错误

正确答案:C

6.16若有如下语句

intx=3;

do{printf("%d\n”,x-=2);}while(!(--x));

则上面程序段

A)输出的是1

B)输出的是1和-2

C)输出的是3和0

D)是死循环

正确答案:B

6.17下面程序的运行结果是

ttinclude

main()

{inta=l,b=10;

do

{b-=a;a++;1while(b--(0);

printf(*a=%d,b=%d\n*,a,b);

)

A)a=3,b=llB)a=2,b=8C)a=l,b=-lD)a=4,b=9

正确答案:B

6.18若运行以下程序时,从键盘输入ADescriptor(表示回车),则下面程序的运行结

果是#include

main()

{charc;

intvO=l,vl=0,v2=0;

do{switch(c=getchar())

{case,a,:case'A,:

case'e':case'Ez:

case,J:case,r:

case'o':case’oz:

case'u':case'U':vl+=l

default:vO+=l;v2+=l;}

(while(c!=z\n');

printf("vO=%d,vl=%d,v2=%d\n",vO,vl,v2);}

A)v0=7,vl=4,v2=7

B)v0=8,vl=4,v2=8

C)vO=ll,vl=4,v2=ll

D)v0=13,vl=4,v2=12

正确答案:D

6.19下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,

请选择填空。

Sinclude

main()

{inti=0,j,k;

do{i++;k=316-13*i;}whil3(______);

j=k/ll;

printf("316=13*%d+ll*%d”,i,j);

)

A)k/11

B)k

C)k/ll==0

D)k==0

正确答案:B

6.20C语言中while和do-whilc循环的主要区别是

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()

{inti,x,y=l;

scanf&x);

for(i=2;i<=x/2;i++)

if[2]{y=0;break;)

printfy);

)

止确答案:(x%i==0)

6.24以下程序的输出结果是[3】。

main()

{inty=9;

for(;y>0;y--)

if(y%3==0)

{printf(飞d”,--y);continue;}

)

正确答案:852

6.25阅读下面程序段,则执行后的输出结果为o

#include"stdio.h"

main()

{inta=l;

for(;a<=15;)

if(++a%5!=2)continue;

elseprintf(“/d”,a);

printf("\n");}

正确答案:2712

6.26阅读下面语句,则执行后的输出结果为【5】

ttinclude"stdio.h"

main()

{chara,b;

for(a=,O',b='9';a

printf(飞c%c”,a,b);

printf("\n");}

正确答案:0918273645

6.27阅读下面程序,则执行后程序的结果为【6】

#include"stdio.h"

main()

{inta=0,b=0;

while(a<15)a++;

while(b++<15);

printf(*%d,%d\n*,a,b);}

正确答案:15,16

(6)

第7章数组

一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请

将正确选项填涂在答题卡相应位置上。)

7.1若有说明inta[3][4];则a数组元素的非法引用是

A)a[0][2*1]

B)a[1][3]

C)a[4-2][0]

D)a[0][4]

正确答案:D

7.2在C语言中,引用数组元素时,其数组下标的数据类型允许是

A)整型常量

B)整型表达式

C)整型常量或整型表达式

D)任何类型的表达式

正确答案:C

7.3执行下面的程序段后,变量k中的值为

intk=3,s[2];

s[0]=k;k=s[1]*10;

A)不定值

B)33

C)30

D)10

正确答案:A

7.4定义如下变量和数组:

intk;

inta[3][3]={9,8,7,6,5,4,3,2,1};

则下面语句的输出结果是

for(k=0;k<3;k++)printf(飞d",a[k][k]);

A)753

B)951

0963

D)741

正确答案:B

7.5下列程序执行后的输出结果是

main()

{chararr[2][4];

strcpy(arr,"you");

strcpy(arr[1];

arr[0][3]=';

printf(*%s\n*,arr);

)

A)you&me

B)you

C)me

D)err

正确答案:A

7.6设有数组定义:chararray口:"China”;则数组array所占的空间为

A)4个字节

B)5个字节

C)6个字节

D)7个字节

正确答案:C

7.7以下不正确的定义语句是

A)doublex[5]={2.0,4.0,6.0,8.0,10.0);

B)inty[5]={0,1,3,5,7,9);

C)charcl[]={'1','2','3','4','5');

D)charc2[]={'\xlOf,'\xa','\x8'};

正确答案:B

7.8若有说明:inta[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是

A)2

B)3

C)4

D)无确定值

正确答案:B

7.9对以下说明语句的正确理解是

inta[10]:{6,7,8,9,10};

A)将5个初值依次赋给a[1]至a[5]

B)将5个初值依次赋给a[0]至a[4]

C)将5个初值依次赋给a[6]至a[10]

D)因为数组长度与初值的个数不相同,所以此语句不正确

正确答案:B

7.10若有说明:inta口[4]:{0,0};则下面不正确的叙述是

A)数组a的每个元素都可得到初值0

B)二维数组a的第一维大小为1

C)当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小

D)只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值

正确答案:D

7.11有以下程序

main()

{chara口={'a','b','c','d','e','f','g','h,,''0'};

inti,j;

i=sizeof(a);

j=strlen(a);

printf(*%d,%d\b*,i,j);

}

程序运行后的输出结果是

A)9,9

B)8,9

C)1,8

D)9,8

正确答案:D

7.12假定int类型变量占用两个字节,其有定义:intx[10]=[0,2,4}则数组x在内

存中所占字节数是

A)3

B)6

C)10

D)20

正确答案:D

7.13以下能对二维数组c进行正确的初始化的语句是

A)intc[3]口={{3},⑶,⑷};

B)intc[][3]={⑶,⑶,{4}};

C)intc[3][2]={{3},{3},{4},{5}):

D)intc[][3]={{3},{},{3}|;

正确答案:B

7.14在C语言中,一维数组的定义方法为

类型说明符数组名

A)[常量表达式]

B)[整型常量]

C)[整型变量]

D)[整型常量]或[整型表达式]

正确答案:A

7.15若二维数组a有m列,则计算任一元素a[i][j]在数组中相对位置的公式为(假

设a[0][0]位于数组的第一个位置上)

A)i*m+j

B)j*m+I

C)

D)i*m+j+l

正确答案:A

7.16下面程序输出的结果是

main()

{inti;

inta[3][3]={1,2,3,4,5,6,7,8,9};

for(i=0;i<3;i++)

printf(*%<1”,a[2-i][i]);

)

A)159

B)753

C)357

D)591

正确答案:B

7.17以下不能对二维数组a进行正确初始化的语句是

A)inta[2][3]={0};

B)inta[][3]={{1,2},{0});

C)inta[2][3]={{1,2},{3,4},{5,6}};

D)inta[][3]=<1,2,3,4,5,6):

正确答案:C

7.18阅读下面程序,则程序段的功能是

#include"stdio.h"

main()

{intc[]={23,1,56,234,7,0,34},i,j,t;

for(i=l;i<7;i++)

{t=c[i];j=i-l;

while(j>=0&&t>c[j])

{c[j+1]=c[j];j—;)

c[j+1]=t;

}

for(i=0;i<7;i++)

printf("%d*,c[i]);

putchar('\n');

}

A)对数组元素的升序排列

B)对数组元素的降序排列

C)对数组元素的倒序排列

D)对数组元素的随机排列

正确答案:B

7.19下列选项中错误的说明语句是

A)chara[]={/t*,zo'y'o'u''0'};

B)chara[]={"toyou'0"};

C)chara[]="toyou\0”;

D)chara[]='toyou\0';

正确答案:D

7.20下述对C语言字符数组的描述中错误的是

A)字符数组的下标从0开始

B)字符数组中的字符串可以进行整体输入/输出

C)可以在赋值语句中通过赋值运算符“二”对字符数组整体赋值

D)字符数组可以存放字符串

正确答案:C

7.21阅读下列程序,则在执行后,程序的运行结果为

#include“stdio.h"

ttinclude“string,h”

main()

{chara[30]二"nicetomeetyou!”;

strcpy(a+strlen(a)/2,"you");

printf("%s\n',a);

}

A)nicetomeetyouyou

B)niceto

C)meetyouyou

D)nicetoyou

正确答案:D

7.22现有如下程序段

#include"stdio.h"

main()

{intk[30]=(12,324,45,6,768,98,21,34,453,456);

intcount=0,i=0;

while(k[i])

{if(k[i]%2==0IIk[i]%5==0)

count++;

i++;

)

printf(*%d,%d\n*,count,i);

)

则程序段的输出结果为

A)7,8

B)8,8

C)7,10

D)8,10

正确答案:D

7.23有如下定义语句:intaa口[3]={12,23,34,4,5,6,78,89,45}则45在数组aa

中的行列坐标各为

A)3,2

B)3,1

C)2,2

D)2,1

正确答案:C

7.24现在有如下程序

^include"stdio.h"

main()

{chars[80];

inti,j;

gets(s);

for(i=j=O;s[i]!='\0';i++)

if(s[i]!=zH,)

s[j]='\0';

puts(s);

}

这个程序段的功能是删除输入的字符串中字符',则空线上应当添入的是

A)s[j++]=s[i];j++;

B)s[j]=s[i++];j++;

C)s[j++]=s[i];

D)s[j]=s[i];

正确答案:C

7.25以下二维数组c的定义形式是

A)intc[3][]

B)floatc[3,4]

C)doublec[3][4]

D)floatc(3)(4)

正确答案:C

7.26已知:intc[3][4];则对数组元素引用正确的是

A)c[1][4]

B)c[1.5][0]

C)c[1+0][0]

D)以上表达都错误

正确答案:C

7.27若有以下语句,则正确的描述是

chara[]="toyou”;

charb口={'t','o','y','o','u'};

A)a数组和b数组的长度相同

B)a数组长度小于b数组长度

C)a数组长度大于b数组长度

D)a数组等价于b数组

正确答案:C

7.28已知:chara[15],b[15]={Tlovechina”};则在程序中能将字符串Ilovechina

赋给数组a的正确语句是

A)a="Ilovechina";

B)strcpy(b,a);

C)a=b;

D)strcpy(a,b);

正确答案:I)

7.29已知:chara[20]=〃abc",b[20]="defghi”;则执行下列语句后的输出结果为

printf('%d”,strlen(strcpy(a,b)));

A)11

B)6

C)5

D)以上答案都不正确

正确答案:B

7.30阅读如下程序段,则程序在先后输入love和china后,输出结果是

^include

ttinclude

main()

{chara[30],b[30];

intk;

gets(a);

gets(b);

k=strcmp(a,b);

if(k>0)puts(a);

elseif(k<0)puts(b);

)

A)love

B)china

C)lovechina

D)没有输出结果

正确答案:A

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

7.31下面程序的功能是输出数组s中最大元素的下标,请填空。

main()

{intk,p,s[]={1,-9,7,2,-10,3):

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])[1]

printfk);

}

正确答案:k=p;

7.32以下程序可把输入的十进制数以十六进制数的形式输出,请填空。

main()

{charb[17]={"0123456789ABCDEF"};

intc[64],d,i=0,base=16;

longn;

printf("Enteranumber:\n^);scanf(〃%ld”,&n);

do

{c[i]=[2];

i++;

n=n/base;

[while(n!=0);

printf("Transmi

温馨提示

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

评论

0/150

提交评论