C语言程序设计实例教程(第3版)
上QQ阅读APP看书,第一时间看更新

3.4 课后习题

3.4.1 实训

一、实训目的

1.进一步练习顺序结构程序设计。

2.进一步巩固各种输入输出函数的使用方法。

3.提高编程和调试程序的能力。

4.进一步巩固选择结构程序设计语句的使用。

5.进一步巩固break语句的使用方法。

6.进一步练习循环结构程序设计。

7.进一步练习循环嵌套结构程序设计。

8.进一步提高综合编程和调试程序的能力。

二、实训内容

1.编写程序,用getchar()函数读入两个字符c1、c2,然后分别用putchar()函数和printf()函数输出这两个字符,并思考以下问题:

(1)变量c1、c2应定义为字符型还是整型?抑或两者皆可?

(2)要求输出c1和c2值的ASCII码,应如何处理?用putchar()函数还是printf()函数?

(3)整型变量与字符型变量是否在任何情况下都可以互相代替?如“char c1,c2;”与“int c1,c2”是否无条件等价?

2.求一个圆柱体的体积。

3.编写一个简单的计算器,实现两个整型数的四则运算。

4.接收用户输入的3种商品的价格。如果购买的3种商品中至少有一种商品的价格大于50或者3种商品的总额大于100,则折扣率为15%,否则折扣率为0,计算并显示用户应付的钱数。

5.判断所输入的一个年份是否为闰年。

6.利用if语句编写程序,输入x值,求解以下分段函数的y值。当x<1时,y=x+1;当1≤x≤10时,y=2x+5;当x≥10时,y=x2+8。

7.编写一个程序,根据用户输入的期末考试成绩,输出相应的成绩评定信息。成绩大于等于90分时输出“优”;成绩大于等于80分、小于90分时输出“良”;成绩大于等于60分、小于80分时输出“中”;成绩小于60分时输出“差”。

8.利用switch语句编写一个计算器程序,用户输入四则运算表达式,输出计算结果。

9.输出所有的水仙花数(水仙花数是指一个三位数,其各位数字的立方和等于该数本身)。

10.求fibonacci数列(1,1,2,3,5,8,…)的前40项,该数列表示为:

11.求整数1~100的累加值,但要求跳过所有个位为3的数。

12.输出100~200之间的全部素数。

13.试编程,找出1~99的全部同构数。同构数是这样一组数:它出现在平方数的右侧。例如:5是25右边的数,25是625右边的数,5和25都是同构数。

3.4.2 练习题

一、选择题

1.putchar()函数可以向终端输出一个__________。

(A)整型变量表达式

(B)实型变量值

(C)字符串

(D)字符或字符型变量值

2.阅读以下程序,若输入:25,13,10↙(注:↙表示回车),则正确的输出结果为__________。

(A)x+y+z=48

(B)x+y+z=35

(C)x+z=35

(D)不确定值

3.已知定义int i,j,k;,若从键盘输入:1,2,3↙,分别使i,j,k的值为1,2,3,以下输入语句中正确的是__________。

(A)scanf("%2d%2d%2d",&i,&j,&k);

(B)scanf("%d%d%d",&i,&j,&k);

(C)scanf("%d,%d,%d",&i,&j,&k);

(D)scanf("i=%d,j=%d,k=%d",&i,&j,&k);

4.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为20,30,C和D,当从第一列开始输入数据时,正确的数据输入方式是__________。

(A)20C30D↙

(B)20C 30D↙

(C)20 C 30 D↙

(D)20,C,30,D↙

5.在if语句的嵌套中,else总是与__________配对。

(A)它前面未配对的if

(B)它前面最近的未配对的if

(C)它上面对应在同一列的if

(D)它在同一行的if

6.判断char型变量ch是否为大写字母的正确表达式是__________。

(A)'A'<=ch<='Z'

(B)(ch>='A')&(ch<='Z')

(C)(ch>='A')&&(ch<='Z')

(D)('A'<=ch)AND('Z'>=ch)

7.已知int x=10,y=20,z=30;,以下语句执行后x,y,z的值是__________。

(A)x=10,y=20,z=30

(B)x=20,y=30,z=30

(C)x=20,y=30,z=10

(D)x=20,y=30,z=20

8.请阅读以下程序,程序__________。

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

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

(C)输出***

(D)输出$$$

9.当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是__________。

(A)1

(B)2

(C)3

(D)6

10.若w=1,x=2,y=3,z=4,则条件表达式w<x?w:y<z?y:z的值是__________。

(A)4

(B)3

(C)2

(D)1

11.下面程序段的运行结果是__________。

(A)2

(B)3

(C)4

(D)有语法错

12.设有以下程序段,下面描述正确的是_______。

(A)其中循环控制表达式与0等价

(B)其中循环控制表达式与'0'等价

(C)其中循环控制表达式是不合法的

(D)以上说法都不对

13.执行语句for(i=1;i++<4;);后变量i的值是______。

(A)3

(B)4

(C)5

(D)不定

14.以下for循环的执行次数是_______。

(A)是无限循环

(B)循环次数不定

(C)执行4次

(D)执行3次

15.下面程序的运行结果是_______。

(A)*#*#*#$

(B)#*#*#*$

(C)*#*#$

(D)#*#*$

16.若有如下语句,则上面程序段______。

(A)输出的是1

(B)输出的是1和-2

(C)输出的是3和0

(D)是死循环

17.下面程序的运行结果是_______。

(A)-1

(B)1

(C)8

(D)0

18.下面程序段不是死循环的是_______。

19.以下描述正确的是_______。

(A)continue语句的作用是结束整个循环的执行

(B)只能在循环体内和switch语句体内使用break语句

(C)break语句和continue语句在循环体内的作用相同

(D)从多层循环嵌套中退出时,只能使用goto语句

20.以下程序的输出结果是_______。

(A)9

(B)1

(C)10

(D)12

21.以下程序的输出结果是_______。

(A)8 12 16

(B)8 12

(C)12 16

(D)8

二、填空题

1.以下程序的运行结果是__________。

2.以下程序实现3个整数的互联并输出a,b,c的值。请将下面的程序补充完整。

3.以下程序的运行结果是__________。

4.以下程序的运行结果是__________。

5.以下程序的运行结果是__________。

6.以下程序的运行结果是__________。

7.以下程序的运行结果是__________。

8.设有变量定义:int a=10,c=9;,则表达式(--a!=c++)?--a:++c的值是__________。

9.若运行时输入:3 5↙,则以下程序的运行结果是__________。

10.以下由while构成的循环执行的次数是__________。

11.以下程序的输出结果是__________。

12.以下程序的输出结果是__________。

13.当运行以下程序时,从键盘上键入right?↙,则下面程序的运行结果是_______。

14.以下程序的输出结果是__________。

15.以下程序的输出结果是__________。

16.以下程序的输出结果是__________。

17.等差数列的第一项a=2,公差d=3,下面程序的功能是在前n项中输出能被4整除的所有项的和。请将以下程序中的空缺语句补充完整。

18.以下程序的输出结果是_______。