C语言习题及答案评析Word文件下载.docx

上传人:b****4 文档编号:6518184 上传时间:2023-05-06 格式:DOCX 页数:46 大小:46.38KB
下载 相关 举报
C语言习题及答案评析Word文件下载.docx_第1页
第1页 / 共46页
C语言习题及答案评析Word文件下载.docx_第2页
第2页 / 共46页
C语言习题及答案评析Word文件下载.docx_第3页
第3页 / 共46页
C语言习题及答案评析Word文件下载.docx_第4页
第4页 / 共46页
C语言习题及答案评析Word文件下载.docx_第5页
第5页 / 共46页
C语言习题及答案评析Word文件下载.docx_第6页
第6页 / 共46页
C语言习题及答案评析Word文件下载.docx_第7页
第7页 / 共46页
C语言习题及答案评析Word文件下载.docx_第8页
第8页 / 共46页
C语言习题及答案评析Word文件下载.docx_第9页
第9页 / 共46页
C语言习题及答案评析Word文件下载.docx_第10页
第10页 / 共46页
C语言习题及答案评析Word文件下载.docx_第11页
第11页 / 共46页
C语言习题及答案评析Word文件下载.docx_第12页
第12页 / 共46页
C语言习题及答案评析Word文件下载.docx_第13页
第13页 / 共46页
C语言习题及答案评析Word文件下载.docx_第14页
第14页 / 共46页
C语言习题及答案评析Word文件下载.docx_第15页
第15页 / 共46页
C语言习题及答案评析Word文件下载.docx_第16页
第16页 / 共46页
C语言习题及答案评析Word文件下载.docx_第17页
第17页 / 共46页
C语言习题及答案评析Word文件下载.docx_第18页
第18页 / 共46页
C语言习题及答案评析Word文件下载.docx_第19页
第19页 / 共46页
C语言习题及答案评析Word文件下载.docx_第20页
第20页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言习题及答案评析Word文件下载.docx

《C语言习题及答案评析Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言习题及答案评析Word文件下载.docx(46页珍藏版)》请在冰点文库上搜索。

C语言习题及答案评析Word文件下载.docx

___作为语句的结束标志。

第二章基本数据类型

1.以下选项中属于C语言的数据类型是()

A.复数型B.逻辑型C.双精度型D.集合型

C语言中基本数据类型有四种:

整形、单精度型、双精度型、字符型。

2.在C语言中,不正确的int类型的常数是()

A.32768B.0C.037D.0xAF

A注解:

注意int类型数据的表示范围为-32768~32767(十进制),选项C为八进制数表示,选项D为十六进制数表示。

3.设有说明语句:

chara='

\72'

则变量a()

A.包含1个字符B.包含2个字符C.包含3个字符D.说明不合法

将转义字符\72的表示的字符赋给变量a,所以a包含一个字符。

4.以下选项中合法的字符常量是()

A."B"B.'

\010'

C.-268D.D

A为字符串,C为整型常量,D不是C语言的合法字符,字符要有单引号。

【题2.2】若x、i、j和k都是int型变量,则执行下面表达式后x的值为    。

x=(i=4,j=16,k=32)A)4B)16C)32D)52

【题2.3】假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是    。

A)7B)8C)6D)2

【题2.8】下面正确的字符常量是    。

A)“c”B)‘\\’’C)‘W’D)‘’

【题2.10】下面不正确的字符串常量是    。

A)‘abc’B)“12’12”C)“0”D)“ ”

【题2.11】若有代数式

,则不正确的C语言表达式是    。

A)a/b/c*e*3B)3*a*e/b/cC)3*a*e/b*cD)a*e/c/b*3

【题2.14】已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=‘A’+‘6’-‘3’;

后,c2中的值为    。

A)DB)68C)不确定的值D)C

【题2.15】在C语言中,要求运算数必须是整型的运算符是    。

A)/B)++C)!

=D)%

【题2.16】若以下变量均是整型,且num=sum=7;

则执行表达式sUM=num++,sUM++,++num后sum的值为    。

A)7B)8C)9D)10

【题2.17】在C语言中,char型数据在内存中的存储形式是    。

A)补码B)反码C)原码D)ASCII码

【题2.18】设有说明:

charw;

intx;

floaty;

doublez;

则表达式w*x+z-y值的数据类型为    。

A)floatB)charC)intD)double

【题2.1】在C语言中(以16位PC机为例),一个char型数据在内存中所占的字节数为【1】;

一个int型数据在内存中所占的字节数为【2】。

一个float型数据在内存中所占的字节数为【4】;

一个double型数据在内存中所占的字节数为【8】。

【题2.2】若有以下定义,则执行表达式y+=y-=m*=y后的y值是【-16】。

intm=5,y=2;

【题2.4】若a是int型变量,则下面表达式的值为【26】。

(a=4*5,a*2),a+6

【题2.6】若有定义:

inta=2,b=3;

floatx=3.5,y=2.5;

则下面表达式的值为【3.5】。

(float)(a+b)/2+(int)x%(int)y

【题2.9】已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=‘a’+‘8’-‘3’的值为【f】。

第3章运算符与表达式

1.设x,y,z和k都是int型变量,则执行表达式:

x=(y=4,z=16,k=32)后,x的值为()

A、4B、16C、32D、52

x所得到的数值是括号中逗号表达式的值,逗号表达式取最后一个表达式的值。

2.能正确表示a和b同时为正或同时为负的逻辑表达式是()

A、(a>

=0||b>

=0)&

&

(a<

0||b<

0)B、(a>

=0&

b>

0&

b<

0)

C、(a+b>

0)&

(a+b<

=0)D、a*b>

D

3.语句:

printf("%d",(a=2)&

(b=-2));

的输出结果是()

A、无输出B、结果不确定C、-1D、1

D注解:

所要输出的表达式的值即为2&

-2的值,两个非0的数值做与运算,值为1。

4.设intx=1,y=1;

表达式(!

x||y--)的值是()

A、0B、1C、2D、-1

表达式先计算!

x,值为0,然后计算y--,值为1,最后0||1,结果为1。

5.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是()

A、1B、2C、2.0 D、2.5

3/2的结果是整数1,变量x是双精度浮点型,运算时根据类型间转换规则,转换为浮点型运算。

6.若有以下程序段

intc1=1,c2=2,c3;

c3=1.0/c2*c1;

则执行后,c3中的值是()

A、0B、0.5C、1D、2

表达式运算时,先计算1.0/c2,进行的是浮点除,值为0.5,然后做乘法0.5*c1值为0.5。

7.能正确表示逻辑关系:

“a》10或a《0”的C语言表达式是( )

A、a>

=10ora<

=0B、a>

=0|a<

=10C、a>

=10&

a<

=0D、a>

=10‖a<

=0

8.有如下程序段

inta=14,b=15,x;

charc='

A'

x=(a&

b)&

(c<

'

B'

);

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

A、tureB、falseC、0D、1

表达式(a&

)先计算左边括号,a&

b的值为1,再计算右边括号,c<

的值为1,最后计算1&

1的值为1。

9.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是( )

A、-3B、9C、-12D、6

表达式a+=a-=a*a的计算步骤是,因为赋值表达式是右结合的,所以先计算a-=a*a,则a的值为-6,然后计算a+=a,则a的值为-12。

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

A、'

a'

<

=c<

='

z'

B、(c>

)||(c<

C、('

=c)and('

>

=c)D、(c>

)&

11.若有定义:

inta=8,b=5,c;

,则执行语句c=a/b+0.4;

后,c的值为()

A、1.4B、1C、2.0D、2

表达式a/b的值为1,a/b+0.4的值为1.4,因为变量c为整型,则根据赋值表达式的运算规则,变量c的取值为1。

12.若变量a是int类型,并执行了语句:

a='

+1.6;

,则正确的叙述是()

A、a的值是字符CB、a的值是浮点型

C、不允许字符型和浮点型相加D、a的值是字符'

的ASCII值加上1

a的值是表达式'

+1.6值,'

+1.6的计算是取字符'

的ASCII的值,加上1。

13.以下程序的输出结果是( )

 main()

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

 d=!

a&

!

b||!

c;

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

}

A、1B、0C、非0的数D、-1

输出变量d的值,即是表达式!

b|||!

c的值,表达式的运算是先计算!

a的值为0,则!

b的值为0,然后即计算0||!

c,而!

c的值为1,则表达式0||!

c的值为1,则整个表达式的值为1。

1.表示“整数x的绝对值大于5”时值为“真”的C语言表达式是_____________。

x>

5||x<

-5

第4章顺序结构程序设计

2.下列程序执行后的输出结果是(小数点后只写一位)()

A、666.06.0B、666.76.7C、666.06.7D、666.76.0

main()

{doubled;

floatf;

longl;

inti;

i=f=1=d=20/3;

printf("

%d%ld%f%f\n"

,i,l,f,d);

}

A

注解:

20/3的值为6,变量d和f为浮点型,则赋值以后d和f得到的值为6.0(一位小数);

变量l和i是整型变量,则赋值以后l和i的值为6。

3.下列程序执行后的输出结果是()

A、GB、HC、ID、J

main()

{intx='

f'

printf("

%c\n"

,'

+(x-'

+1));

表达式x-'

+1的值为6,则表达式'

+6表示字符G.,则输出为字符G。

4.有如下程序

{inty=3,x=3,z=1;

%d%d\n"

,(++x,y++),z+2);

}

运行该程序的输出结果是()

A、34B、42C、43D、33

分别输出(++x,y++)、z+2两个表达式的值,(++x,y++)是逗号表达式,取最后一个表达式的值为3,z+2的值为3,所以最后的输出为33。

5.若变量已正确说明为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<

B

B选项对应的输入语句是scanf("

%f,%f,%f"

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

A、INPUTx、y、z;

B、scanf("

%d%d%d"

x,&

y,&

z);

C、scanf("

,x,y,z);

D、read("

只有选项B、C是C语言的输入语句,而在用scanf()函数输入时,变量前要有取地址运算符。

7.以下程序段的输出结果是()

 inta=1234;

%2d\n"

,a);

A、12B、34C、1234D、提示出错、无结果

C

在输出语句中,格式字串的附加格式字符2,小于数据的实际位数,则按实际位数输出1234。

8.若有说明语句:

inta,b,c,*d=&

,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是()

A、scanf("

b,d);

B、scanf("

d);

C、scanf("

,a,b,d);

D、scanf("

,a,b,*d);

在scanf()函数输入的变量列表中,应对变量取地址,而变量d是指针变量,它本身就表示地址,所以答案为A。

9.以下程序的输出结果是()

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

 printf("

%d\n"

,d=a>

b?

(a>

c?

a:

c):

(b));

A、5yyB、4yyC、6D、不确定

输出的值是表达式a>

(b)的值,对条件表达式,先判断条件a>

b为真,则取表达式a>

c的值,类似的先判断条件a>

c为假,则取后一个变量c的值6,故最后输出的值是6。

填空题

1.以下程序的输出结果是____________________

{inta=0;

a+=(a=8);

16

变量a的初值为0,执行表达式a+=(a=8),先给a赋值8,然后执行复合赋值a+=8,则a的值为16。

4.以下程序的输出结果是______________

{inta=1,b=2;

a=a+b;

b=a-b;

a=a-b;

%d,%d\n"

,a,b);

 

2,1

执行语句a=a+b后,变量a的值为3,执行语句b=a-b后,变量b的值为1,执行语句a=a-b后,变量a的值为2,所以最后输出a,b的值分别为2,1。

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

{inta=9,b=2;

floatx=_________,y=1.1,z;

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

%5.2f\n"

,z);

6.6

程序最后输出z的值为16.00,即表达式a/2+b*x/y+1/2的值为16.00,将已知值代入为9/2+2*x/1.1+1/2,即通过4+2*x/1.1=16.00求出变量x的值为6.6。

第5章选择结构程序设计

2.如下程序

main()

{intx=1,a=0,b=0;

switch(x)

{case0:

b++;

case1:

a++;

case2:

a=%d,b=%d\n"

,a,b);

该程序的输出结果是()

A、a=2,b=1B、a=1,b=1C、a=1,b=0D、a=2,b=2

x的值为1,第二个case子句符合条件,从此入口执行后面的语句,因为没有break,所以第三个case子句同样执行,即a自增两次,最后的值为2,b自增一次,最后的值为1。

3.有如下程序

{floatx=2.0,y;

if(x<

0.0) y=0.0;

elseif(x<

10.0) y=1.0/x;

else y=1.0;

%f\n"

,y);

该程序的输出结果是()

A、0.000000B、0.250000C、0.500000D、1.000000

外层if语句的条件不满足,执行后面的else子句,判断内层if语句的条件满足,执行if后的语句:

y=1.0/x;

所以y的值为0.500000。

4.有如下程序

{inta=2,b=-1,c=2;

if(a<

b)

if(b<

0) c=0;

elsec++;

,c);

 }

A、0B、1C、2D、3

外层if语句的条件不满足,则应执行它对应的else子句后的语句,请注意本题中的else子句并不是和外层if配套,而是和距else较近的内层if配套,所以直接输出c的值2。

5.阅读以下程序:

{intx;

scanf("

%d"

x);

if(x--<

5) printf("

,x);

else printf("

,x++);

程序运行后,如果从键盘上输人5,则输出结果是()

A、3B、4C、5D、6

从键盘输入5后,if语句的条件表达式x--<

5为假,变量x的值为4,执行else后的子句,输出表达式x++的值,表达式x++的取x自增之前的值4,x的值为5。

1.若从键盘输入58,则以下程序输出的结果是____________

{inta;

scanf("

a);

if(a>

50)printf("

40)printf("

30)printf("

585858

从键盘输入58,则变量a的值为58,三个if语句的判断成立,则分别输出变量a的值。

2.下列程序段的输出结果是_____________。

intn='

c'

switch(n++)

{default:

error"

break;

case'

:

case'

b'

good"

C'

pass"

d'

D'

warn"

开关语句的条件是n++,表达式的取值为字符'

则执行case'

后的子句,先输出pass,因为其后有break子句,则switch语句结束,即最后的输出为pass。

1.C语言逻辑运算中,用_非零_表示“真”,用__零__表示“假”。

2.下列程序的输出结果为:

main()

{inta、b、c;

a=b=c=1;

b=b+c;

a=a+b;

printf(“%d\n”,(c<

b)?

b:

a);

}结果______2________。

6.设有如下程序

main()

{inta=100;

if(a>

0)printf(“%d\n”,a>

100);

elseprintf(“%d\n”,a<

=100);

}该程序的输出结果是(A)

A)0B)1C)100D)-1

第6章循环结构程序设计

1.以下叙述正确的是()

A、do-while语句构成的循环不能用其它语句构成的循环代替。

B、do-while语句构成的循环只能用break语句退出。

C、用do-while语句构成的循环,在while后的表达式为非零时结束循环。

D、用do-while语句构成的循环,在while后的表达式为零时结束循环。

3.以下程序的输出结果是()

A、#*#*#B、#####C、*****D、*#*#*

{inti;

for(i=1;

i<

6;

i++)

{if(i%2){printf("

#"

continue;

*"

\n"

循环控制变量i的值从1变化到5,i为1、3、5时,i%2为1,if语句的条件为真,则执行if后的子句,输出#,然后执行continue语句,终止本次循环的执行,进入下一轮循环,i为2、4时,i%2为0,if语句的条件为假,则if后的子句并不执行,直接输出*,所以最后的输出为#*#*#。

4.以下程序的输出结果是()

A、编译不通过,无输出B、acegC、acegiD、abcdefghi

for(i='

I'

i++,i++)printf("

%c"

,i+32);

\n"

循环控制变量i的取值为A、C、E、G,将它们转化为小写字母的格式输出。

5.以下循环体的执行次数是()

A、3B、2C、1D、0

{inti,j;

for(i=0,j=1;

i<

=j+1;

i+=2,j--) printf("

%d\n"

,i);

循环执行过程如下:

(1)i=0,j=1时,i<

=j+1条件成立,执行循环体一次;

(2)i+=2,j--,则i=2,j=0,i<

=j+1条件不成立,循环结束,所以循环次数为1次。

6.以下程序段的执行结果是()

A、a=12y=12B、a=12y=12

a=14y=16         a=16y=28

a=16y=20          a=18y=24

C、a=12y=12  D、a=12y=12

a=14y=26a=14y=44

inta,y;

a=10;

y=0;

do

{a+=2;

y+=a;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 交通运输

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2