C语言程序设计教程 清华大学出版社 陈明主编 第3章答案Word文档格式.docx

上传人:b****3 文档编号:17880519 上传时间:2022-12-11 格式:DOCX 页数:18 大小:27.78KB
下载 相关 举报
C语言程序设计教程 清华大学出版社 陈明主编 第3章答案Word文档格式.docx_第1页
第1页 / 共18页
C语言程序设计教程 清华大学出版社 陈明主编 第3章答案Word文档格式.docx_第2页
第2页 / 共18页
C语言程序设计教程 清华大学出版社 陈明主编 第3章答案Word文档格式.docx_第3页
第3页 / 共18页
C语言程序设计教程 清华大学出版社 陈明主编 第3章答案Word文档格式.docx_第4页
第4页 / 共18页
C语言程序设计教程 清华大学出版社 陈明主编 第3章答案Word文档格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

C语言程序设计教程 清华大学出版社 陈明主编 第3章答案Word文档格式.docx

《C语言程序设计教程 清华大学出版社 陈明主编 第3章答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计教程 清华大学出版社 陈明主编 第3章答案Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。

C语言程序设计教程 清华大学出版社 陈明主编 第3章答案Word文档格式.docx

return0;

/*返回值0,返回操作系统*/

}

程序运行后的输出结果是。

A)a+b=10B)a+b=30C)30D)出错

“printf("

”用于输出a+b的值,输出形式为a+b=30。

B

4.以下叙述中正确的是。

A)调用printf()函数时,必须要有输出项

B)调用putchar()函数时,必须在之前包含头文件stdio.h

C)在C语言中,整数可以以十二进制、八进制或十六进制的形式输出

D)调用getchar()函数读入字符时,可以从键盘上输入字符所对应的ASCII码

对于选项A,调用printf()函数时,不一定总有输出项,所以A错误;

对于选项C,C语言中,整数可以以十进制、八进制和十六进制表示,而不存在十二进制的表示形式,所以B错误;

对于选项D,getchar()读入字符时,从键盘输入的均被认为是字符形式存入到变量中,而不能输入该字符对应的ASCII码。

所以D错误。

对于选项B,由于putchar()是标准库函数,所以在程序开头必须包含头文件stdio.h。

5.有以下程序:

ex3_1_5\main.c*/

charc1='

1'

c2='

2'

;

/*定义变量*/

c1=getchar();

c2=getchar();

/*输入c1,c2*/

putchar(c1);

putchar(c2);

/*输出c1,c2*/

当运行时输入a<

回车>

后,以下叙述正确的是。

A)变量c1被赋予字符a,c2被赋予回车符

B)程序将等待用户输入2个字符

C)变量c1被赋予字符a,c2中仍是原有字符2

D)变量c1被赋予字符a,c2中将无确定值

函数getchar()用于从终端输入一个字符,包括回车符在内,所以本题中c1被赋值字符a,c2被赋予回车符。

A

6.设有定义:

“inta=2,b=3,c=4;

”,则以下选项中值为0的表达式是。

A)(!

a==1)&

&

(!

b==0)B)(a>

b)&

!

c||1C)a&

bD)a||(b+b)&

(c-a)

选项A中的值为(!

2==1)&

3==0)=(0==1)&

3==0)=0&

3==0)=0。

选项B中的值为(2>

3)&

4||1=0&

4||1=0||1=1。

选项C中的值为2&

3=1。

选项D中的值为2||(3+3)&

(4-2)=1。

7.有以下程序:

ex3_1_7\main.c*/

inta,b,d=25;

/*定义变量*/

a=d/10%9;

b=a&

(-1);

/*计算a,b之值*/

%d,%d\n"

a,b);

/*输出a,b*/

A)6,1B)2,1C)6,0D)2,0

由于d初值为25,所以a=d/10%9=2%9=2,b=2&

(-1)=1,所以输出结果应该是:

2.1。

8.在嵌套使用if语句时,C语言规定else总是。

A)和之前与其具有相同缩进位置的if配对B)和之前与其最近的if配对

C)和之前与其最近的且不带else的if配对D)和之前的第一个if配对

C语言的语法规定else子句总是与前面最近的不带else的if相结合。

9.有以下程序段:

intk=0,a=1,b=2,c=3;

k=a<

b?

b:

a;

k=k>

c?

c:

k;

执行该程序段后,k的值是。

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

第一个条件表达式a<

a=1<

2?

2:

1=2,所以这时k=2,第二个条件表达式k>

k=2>

3?

3:

2=2。

10.设有条件表达式“(EXP)?

i++:

j—”,则以下表达式中与"

(EXP)”完全等价的是。

A)(EXP==0)B)(EXP!

=0)C)(EXP==1)D)(EXP!

=1)

条件表达式"

(EXP)”为真表示EXP非0,也就是选项B。

11.下列叙述正确的是。

A)break语句只能用于switch语句

B)break语句必须与switch语句中的case配对

C)在switch语句中必须使用default

D)在switch语句中,不使用break语句在语法上也是正确的

break语句可在循环语句中使用;

也可在case之后的语句中使用break语句;

在switch语句中没有break在语法上也是正确的。

.

12.在以下给出的表达式中,与while(E)中的"

(E)"

不等价的表达式是。

E==0)B)(E>

0||E<

0)C)(E==0)D)(E!

=0)

表示当E为假时,选项C中“(E==0)”为真,所以不等价,可知应选择选项C。

13.若有以下程序:

ex3_1_13\main.c*/

inty=10;

/*定义变量*/

while(y--);

/*while循环*/

y=%d\n"

y);

/*输出y*/

A)y=0B)y=-1C)y=1D)while构成无限循环

当结束循环时,y--的值为0,先取出y的值作为表达式的值,所以y=0,然后y的值再自减1,所以最后y=-1。

14.有以下程序:

ex3_1_14\main.c*/

intmain(void)/*主函数main(void)*/

intk=5,n=0;

do

{

switch(k)

{

case1:

case3:

n+=1;

k--;

break;

default:

n=0;

case2:

case4:

n+=2;

}

printf("

%d"

n);

/*输出n*/

}while(k>

0&

n<

5);

%\n"

);

/*换行*/

A)235B)0235C)02356D)2356

do-while语句的特点是先执行循环体,然后再判断循环条件是否成立,当循环条件的值为0时循环结束。

第1次循环时,k的初值为5,进入switch(5),执行default,执行“n=0;

”后k=4,再执行“n+=2;

k--”后n=n+2=2,k=3。

然后再输出n的值2。

第2次循环时,k的值为3,进入switch(3),执行case3,执行“n+=1;

”后n=n+1=3,k=2,然后再输出n的值3。

第3次循环时,k的值为2,进入switch

(2),执行case2,执行“n+=2;

k--”后n=n+2=5,k=1,然后再输出n的值5,这时“(k>

5)”不成立,结束循环不。

15.若变量已正确定义,有以下程序段:

ex3_1_15\main.c*/

inti=0;

do{printf("

%d,"

i);

}while(i++);

%d\n"

/*输出i*/

其输出结果是。

A)0,0B)01C)1,1D)程序进入无限循环

第1次循环时,输出i的值0,然后条件“i++”的值为0,i的值再自加1和i=1,结束循环,再输出i的值1。

B

16.有以下程序:

ex3_1_16\main.c*/

inty=9;

for(;

y>

0;

y--)

if(y%3==0)

printf("

--y);

/*输出y*/

\n"

/*换行*/

程序的运行结果是。

A)741B)963C)852D)875421

条件“y%3==0”表示y为3的倍数,可知当y为9,6和3时,将输出--y的值8,5和2。

17.有以下程序:

ex3_1_17\main.c*/

inti,j,x=0;

for(i=0;

i<

2;

i++)

{

x++;

/*x自加1*/

for(j=0;

j<

=3;

j++)

if(j%2!

=0)/*j为奇数*/

continue;

x++;

/*x自加1*/

}

x=%d\n"

x);

/*输出x*/

程序执行后的输出结果是。

A)x=4B)x=8C)x=6D)x=12

内层for循环,当j为奇数时,执行“continue;

”继续下次内层循环,当j为偶数0,2时,执行“x++”,所以内层for循环语句实现x=x+2,故外层for循环语句单次循环实现x=x+4,所以程序执行后的输出结果为x=8。

二、填空题

1.若变量a,b已定义为int类型并赋值21和55,要求用printf()函数以a=21,b=55的形式输出,请写出完整的输出语句。

printf函数的一般格式为.“printf(格式控制,输出表列)”,输出a=21,b=55的格式控制为"

a=%d,b=%d"

printf("

2.以下程序运行后的输出结果是。

ex3_2_2\main.c*/

intx=0210;

/*输出x*/

C语言中以0打头的整数为八进制表示,x的十进制表示为2*64+8=136。

所以输出结果为130。

130

3.执行以下程序时输入1234567<

CR>

则输出结果是。

ex3_2_3\main.c*/

/*标准输入/出库头文件*/

inta=1,b;

scanf("

%2d%2d"

&

a,&

b);

/*输入a,b*/

%d%d\n"

题中两个变量的场宽都为2,所以输入1234567<

后,变量a的值为12,变量b的值为34。

1234

4.己定义“charch='

$'

inti=l,j;

”,执行“j=!

ch&

i++”以后,i的值为。

由于!

ch的值为0,所以第1个表达式的值为假,这样整个表达式的值为假,这样不再执行“i++”,所以i的值为1。

1

5.以下程序运行后的输出结果是。

ex3_2_5\main.c*/

inta=10,b=20,c;

c=(a%b<

1)||(a/b>

1);

/*计算c之值*/

%d,%d,%d\n"

a,b,c);

/*输出a,b,c*/

a的初值为10,b的初值为20,所以“a%b”的值为10,“(a%b<

1)”的结果为假,“a/b”的结果为0,“(alb>

1)”的结果为假,所以“(a%b<

1)"

的值为假(0),因此c的值为0。

10200

6.以下程序运行后的输出结果是。

ex3_2_6\main.c*/

/*包含库函数printf()所需要的信息*/

intmain(void)/*主函数main()*/

inta=3,b=4,c=5,t=99;

/*定义变量*/

if(b<

a&

a<

c)t=a;

/*条件成立时将a赋值给t*/

a=c;

c=t;

/*赋值运算*/

if(a<

c&

b<

c)t=b;

/*条件成立时将b赋值给t*/

b=a;

a=t;

%d%d%d\n"

/*返回值0,返回操作系统*/

由于a,b,c和t的初值为3,4,5和99,所以if语句的条件“b<

c”为假,不执行"

t=a;

”,但后面的“a=c;

”与此if语句无关,仍被执行。

执行后a的值为5,b的值仍是4,c的值为99,再执行第二个if语句,由于此时“a<

c”为真,从而执行“t=b;

”,执行后t的值为4,紧随执行其后的“b=a;

”,执行后a的值为4,b的值是5,c的值为99。

因此输出结果是:

4599

7.以下程序运行后的输出结果是。

ex3_2_7\main.c*/

intx,a=1,b=2,c=3,d=4;

/*定义变量*/

x=(a<

b)?

a:

b;

/*计算条件表达式之值*/

x=(x<

c)?

x:

c;

x=(d>

x)?

d;

/*计算条件表达式之值*/

第一个条件表达式(a<

b=(1<

2)?

1:

2=1;

第二个条件表达式(x<

c=(1<

3)?

3=1;

第三个条件表达式(d>

d=(4>

1)?

4=1,所以结果为1。

8.当执行以下程序时,输入1234567890<

,则其中while循环体将执行次。

ex3_2_8\main.c*/

charch;

while((ch=getchar())=='

0'

#"

/*输出#*/

“ch=getchar()”用于从终端读入一个字符赋给变量ch,输入字符'

被赋给ch,由于'

='

,所以循环体不执行,直接退出while循环,所以循环体执行的次数为0。

9.以下程序运行后的输出结果是。

ex3_2_9\main.c*/

charc1,c2;

for(c1='

9'

c1<

c2;

c1++,c2--)

%c%c"

c1,c2);

for循环的循环变量c1的初值为'

c2的初值为'

 

第1次循环沓,输出字符c1,c2,也就是09。

执行c1++和c2--后,c1的值为'

,c2的值为'

8'

第2次循环沓,输出字符c1,c2,也就是18。

7'

第3次循环沓,输出字符c1,c2,也就是27。

3'

6'

第4次循环沓,输出字符c1,c2,也就是36。

4'

5'

第5次循环沓,输出字符c1,c2,也就是45。

,这时c1<

c2不成立,所以结束循环。

0918273645

10.若有以下程序段,且变量已正确定义和赋值:

for(s=1.0,k=1;

k<

=n;

k++)

s=s+1.0/(k*(k+l));

s=%f\n"

s);

请填空,使下面程序段的功能与之完全相同:

s=1.0;

k=1;

while(【1】)

【2】;

本题要求将for循环改写成while循环。

while循环与for循环的结束条件是相同的,因此,第1处应填写k<

=n;

while循环体内应改变循环变量的值,因此,第2处应填写k++。

【1】k<

=n【2】k++

12.以下程序的功能是:

输出100以内(不含100)能被3整除且个

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

当前位置:首页 > 考试认证 > 交规考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1