3.17 习题
1.写一个程序,从键盘读入字符,直到接收到一个英文句号(.)。程序需要计算输入的空格的个数。在程序结束时输出总结果。
2.请写出if-else-if梯队的一般形式。
3.针对下列程序
其中最后的else子句与哪个if配对?
4.写一个for循环语句,从1000计数到0,步进值为-2。
5.下面的代码片段是否有效?
6.请解释break语句的用途(包括其两种形式。)
7.在下面的代码片段中,break语句执行后会显示什么?
9.for循环中的迭代表达式不总是将循环控制变量加上或减去一个常量。它可以以任意的形式改变。用这个概念,编写一个for循环,产生像1、2、4、8、13、62、…这样的级数。
10.ASCII码中的小写字母与大写字母相差32。于是,如果要将小写字母转换为大写字母,需要减去32。利用这点写一个程序,它从键盘中读入字符,将输入的小写字母都转化为大写字母,大写字母都转化为小写字母,并显示结果。对于其他字符,不要做任何改变。当用户输入英文句号时程序结束。在程序末尾,输出改变了大小写的字符的个数。
11.什么是无限循环?
12.在使用带标签的break语句时,标签所在的语句或语句块是否要包括break语句?
13.以下三个字面量:5、'5'、"5"有何区别?
14.设c是一个char类型的变量。如何测试c的值是不是一个单引号字符?
15.本章的类ContDemo演示了一种利用for循环输出0~100之间整数的方法。写个程序输出同样的结果,但使用以下方法:
A.使用for循环,每次迭代循环控制变量递增2。
B.使用for循环,循环控制变量从0变到50。
C.使用for循环,循环控制变量从100变到0。
D.使用没有条件表达式的无限for循环,用break语句退出循环。
E.使用while循环。
F.使用do-while循环。
16.编写程序,使用循环输出3的幂。输出范围为30~39(含边界)。
17.编写程序,用循环输出列表,列表中有100个数,从1开始,每个数交替为1和-1。
18.本章讨论的类FindFac输出1~100之间的整数的所有因子。修改这个类,使其不再在100处停止循环,而在找到因子数恰好为9的数处停止循环。
19.编写程序,不断从键盘中读入字符,直到读入换行符'\n'。输出元音字母、辅音字母、数字和其他字符的个数。在计算其他字符的个数时包括最后的换行符。
20.下面的StarPattern程序输出程序下显示的星星图案。修改程序,使用嵌套的循环输出其他星星图案。
21.在正文中提到,Java标识符可以包括一个或多个字符。第一个字符必须是大写字母或小写字母,或下划线(_),或美元符号($)。剩下的字符可以是大写字母或小写字母、数字0~9、下划线或美元符号。编写Java程序,读入一行字符,判断这行字符是否是合法的Java标识符。
22.在Unicode编码中,字符'0'~'9'的编码与其代表的整数值并不相同。即,字符'0'~'9'的Unicode编码是48~57,而不是0~9。但是可以将这些字符减去48,就很容易的转换为对应的整数值了。特别地,如果c是一个包括字符'0'~'9'的char型变量,可以利用下面的语句创建一个int型变量x,得到其相应的整数值:
用这个方法,使程序读入一个三位数,将其转化为3位整数,然后将其乘以2,输出其结果。例如,如果输入分别是'3'、'4'、'5',输出为690。
23.如果将1除以2,可以得到0.5;如果将它再除以2,可以得到0.25。编写程序计算和输出需要除以2多少次,才可以使商小于0.0001。