Java语言程序设计
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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、md 是即年月日数据。如果日期是一月或二月,則 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编程:问不大于 nn 从键盘输入)的自然数中,数字“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编写一个方法,计算kkkkk(共nk,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。