3.7 习题
3.1编程:输入一个三角形的3个边长,检查是否能构成一个直角三角形。
3.2编程:用random方法产生4位数的年号,判断是否为闰年的年号。若是闰年,则输出“××××年是闰年!”,否则输出“××××年是平年!”。
3.3编程:任意从键盘输入一个0至99999之间的数,判断输入的数是几位数。
3.4铁路运货的运费与路程远近及货物的重量有关,设有如下的单位运费:
不足100千米,每吨每千米为1.00元
100千米以上,不足300千米,每吨每千米为0.90元
300千米以上,不足500千米,每吨每千米为0.80元
500千米以上,不足1000千米,每吨每千米为0.70元
1000千米以上,每吨每千米为0.60元
编程:对输入的货物重量和路程,计算相应的运费。
3.5设银行的活期存款年利率为1.8%,编程求一笔钱x存活期y天后应得的利息。
3.6输入表示日期的年、月、日数据,求这一天是星期几?
提示:可用公式N = d + 2m + [3(m+1)/5] + y + [y/4] - [y/100] + [y/400] + 1
其中 y、m 和 d 是即年月日数据。如果日期是一月或二月,則 m 要加12,而 y 要减法1。[ ] 表示只要除数的商的整数部分。最后将 N 除以7 所得余数即星期数 ( 0 表示是星期日 )。
3.7用while循环语句编程:求1~1000之间的偶数之和。
3.8编程:输入一个四位整数,按与各位数字相反的顺序输出各位数字。例如,设输入为1234,输出则为4321。
3.9编程:求1!+2!+3!+…+10!。
3.10 编程:输出一数列的前 n 项。该数列的第1、2、3 项为1,以后的各项是其前3项的和。即1,1,1,3,5,9,17,31,…。分别用递归和递推方式实现。
3.11编程:解“百钱买百鸡”问题。即母鸡五元钱一只,公鸡三元钱一只,小鸡一元钱三只,现有100元钱想买100只鸡,共有多少种买法。
3.12 编程:求2~n 之间的所有素数,素数是只能被1 和该数本身整除的数,程序中使用编写判断是否为素数的方法,n由键盘输入。
3.13编程:用循环语句输出如图3.1所示的n行用符号“*”组成的三角形图形,n从键盘输入。
图3.1
3.14编程:用循环语句输出如图3.2所示的n行图形,n从键盘输入,是一个小于10的数。
图3.2
3.15 编程:用循环语句输出如图3.3 所示的 n(奇数)行菱形图形,n 从键盘输入,是一个小于10的奇数(下面图形是5行的例)。
图3.3
3.16 验证“角谷猜想”:对任意自然数,若是奇数,就对它乘以3 再加1;若是偶数,就对它除以2,这样得到一个新数。对这个新数,再按上述奇数、偶数的计算规则进行计算,一直进行下去,最终将得到1。
3.17 编程:求1 到500 之间的所有“完全数”。完全数是该数因子之和等于该数的数。例如:6 = 1 + 2 + 3,所以6是完全数。
3.18编程:求“水仙花数”。水仙花数是一个三位数,它的各位数字的立方和等于该数。例如153 = 13 + 53 + 33,所以153是一水仙花数。
3.19一个整数的各位数字之和能被9整除,则该数也能被9整除。用此算法编程,检查整数n能否被9整除。
3.20 编程:求1 到100 之间的“同构数”。同构数是一种出现在它的平方数的右端的数。例如,5 的平方是25,5 是25 右端的数,5 就是同构数;25 也是一个同构数,它的平方是625。
3.21编程:问不大于 n(n 从键盘输入)的自然数中,数字“1”有多少个?对输入小于0的数的情况进行异常处理。
3.22编程:在两位整数中,问十位比个位大的数有多少个?
3.23编程验证下列结论:任何一个自然数 n 的立方都等于 n 个连续奇数的和。例如:23 = 3 + 5,33 = 7 + 9 + 11。
3.24编程:计算n的阶乘,用递归方法实现。
3.25编写对n个盘子移动的Hanoi塔递归程序。著名的Hanoi塔问题是这样的:有n个直径不同的圆盘套在一个针(源)上,现要将这些盘子移到另一根针(目标)上,移动时,必须保证小盘子在大盘子上方,且一次移动一个盘子。为了使得移动能够进行,可借助一根辅助针。
3.26编写一个方法,计算kkk…kk(共n个k,n > 0)的值。例如,k = 2,n = 5,则为22222。
调用这个方法,求下列s1和s2的值:
s1 = 6 + 66 + 666 + 6666 + 66666 s2 = 8 + 888 + 88888 + 8888888
3.27阅读分析下列程序,判断程序是否有错,若有错,请指出错误原因。
class BreakDemo { public static void main(String args[]) { one:for(int i=0; i<10; i++) { System.out.print("Pass " + i + ":"); } for(int j=0; j<100; j++) { if(j == 10) break one; System.out.print(j + " "); } } }
3.28什么是异常?试列出三个系统定义的运行时异常类。
3.29 try-catch-finally语句的执行顺序是怎样的?
3.30对下面的代码段:
try{ run(); }catch(IOException e){ System.out.println("Exception1"); return; }catch(Exception e1){ System.out.println("Exception2"); return; }finally{ System.out.println("finally"); }
若run()方法抛出一个空指针异常NullPointerException,显示器上将显示什么?请在下面的几个选项中,选择一个答案。
(1)无输出;
(2)Exception1
finally;
(3)Exception2
finally;
(4)Exception1;
(5)Exception2。