Java面向对象程序设计课后习题参考答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
System.out.println();
System.out.print("1+"); for (int r = 2; r <= 19; r++) {
System.out.print("1/" + r + "!" + "+"); } for (k = 1; k <= 20; k++) {// 用for循环实现
习题3_7 public class San_7 {// 一个数如果恰好等于它的因子之和,这个数就成为”完数“。
// 编写一个应用程序求1000以内的所有完数。 /**
* @param args */ public static void main(String[] args) {
// TODO Auto-generated method stub int i, j,sum; for (i = 1; i <= 1000; i++) {
习题3_5 public class San_5 {// 求100以内的素数
/** * @param args//本题考查对for循环、break语句、if语句的运用 */
public static void main(String[] args) { // TODO Auto-generated method stub int i, j; for (i = 2; i <= 100; i++) {// for循环从2开始,逐渐增1 for (j = 2; j <= i / 2; j++) {// for循环从2开始,逐步增1 if (i % j == 0) {// 如果i除以j的余数为0,则终止本次for循环 break; } } if (j > i / 2) {// 如果j>i/2,输出i System.out.print(" " + i); } }
} }
1
输出结果: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
习题3_6 public class San_6 {// 分别用while和for循环计算1+1/2!+1/3!+1/4!...的前20项和
char[] str = "日一二三四五六".toCharArray();
for (char c : str) {
System.out.printf("%4c", c);
}
for (int i = 0; i < a.length; i++) { // 输出一维数组
if (i % 7 == 0)
System.out.println(); // 换行
} } 输出结果:
ABCDEFGH abcdefgh 你好!我是中国人
习题 9_7 public class B {
public static void main(String[] args) { String a = "书山有路勤为径"; char b = a.charAt(0);// 输出当前字符串的第一个字符 char c = a.charAt(a.length() - 1);// 输出当前字符串的最后一个字符
习题3_4 public class San_4 {// 编写一个应用程序求1!+2!+...+20!
/** * @param args//本题考查对循环的运用和对算法的编写 */
public static void main(String[] args) { // TODO Auto-generated method stub int a; double b = 1, sum = 0;// 定义变量 for (a = 1; a <= 20; a++) {// for循环实现该功能 b = b * a;// 当a=1时,b=b*a=1,依此类推 sum = sum + b;// 当a=1时,sum=sum+b=1,依次类推 } for (int w = 1; w <= 19; w++) {// for循环打印出阶乘之和的形式来 System.out.print(w + "!" + "+"); } System.out.println("20!" + "=" + sum);// 最终输出阶乘之和
double sum1 = 0, a1 = 1; int i = ቤተ መጻሕፍቲ ባይዱ; while (i <= 20)// 用while循环实现该功能 {
sum1 = sum1 + a1; i++; a1 = a1 * i; } System.out.println("sum1=" + sum1); } } 输出结果: 1!+2!+3!+4!+5!+6!+7!+8!+9!+10!+11!+12!+13!+14!+15!+16!+17!+18!+1 9!+20!=2.5613274941118203E18 sum1=2.5613274941118203E18
4
System.out.println(b); System.out.println(c); } } 输出结果:
书 径
习题 9_8 import java.util.Calendar; import java.util.Scanner;
public class C {
/**
* @param args
}
} 计算结果:
满足条件的最大整数是:7 1至7的阶乘和为:46233
习题9_6 public class A {
public static void main(String[] args) { String s="aBcDeFgH"; String t="你好!"; String v="我是中国人"; String a=s.toUpperCase();//将小写字母转换为大写字母 String b=s.toLowerCase();//将大写字母转换为小写字母 System.out.println(a); System.out.println(b); System.out.println(t.concat(v));//将字符串v连接到字符串t之后
for (j = 1, sum= 0; j < i; j++) {
2
if (i % j == 0) {// 当i除以j的余数为0时,执行sum=sum+j sum = sum + j;
} } if (sum == i) {// 如果sum==i,执行下列输出语句
System.out.println("完数:" + i); } } } } 计算结果: 完数:6 完数:28 完数:496
m *= (1.0 / k); sum2 += m; } System.out.println("1/20!" + "=" + sum2); }
} 计算结果:
1+1/2!+1/3!+1/4!+1/5!+1/6!+1/7!+1/8!+1/9!+1/10!+1/11!+1/12!+1/13! +1/14!+1/15!+1/16!+1/17!+1/18!+1/19!+1/20!=1.7182818284590455 1+1/2!+1/3!+1/4!+1/5!+1/6!+1/7!+1/8!+1/9!+1/10!+1/11!+1/12!+1/13! +1/14!+1/15!+1/16!+1/17!+1/18!+1/19!+1/20!=1.7182818284590455
m = ym.nextInt();// 读入年份
System.out.println("请从键盘输入月份:");
n = ym.nextInt();// 读入月份
CalendarBean cb = new CalendarBean();
cb.setYear(m);
cb.setMonth(n);
String[] a = cb.getCalendar(); // 返回号码的一维数组
public static void main(String[] args) { // TODO Auto-generated method stub int n = 1; long sum = 0, a = 1; while (true) { sum = sum + a; if (sum > 9999) {// 当sum>9999时,跳出while循环 break; } n++; a = n * a; } System.out.println("满足条件的最大整数是:" + (n - 1)); System.out.println("1至" + (n - 1) + "的阶乘和为:" + sum);
} 计算结果:
请从键盘输入两个正整数: 你输入的第一个数为:45 你输入的第二个数为:60
3
这两个数的最大公约数为:15 这两个数的最小公倍数为:180
习题3_9 public class San_9 {// 求满足1+2!+3!+...+n!≤9999的最大整数n
/** * @param args */
/** * @param args//本题考查同学们对while循环、for循环以及对输出字符串格式的运用 */
public static void main(String[] args) { // TODO Auto-generated method stub int i = 1, k; double j = 1, m = 1, sum1 = 0, sum2 = 0; while (i <= 20) {// 用while循环实现 sum1 = sum1 + j; i++; j = j * (1.0 / i); } System.out.print("1+"); for (int r = 2; r <= 19; r++) { System.out.print("1/" + r + "!" + "+"); } System.out.print("1/20!" + "=" + sum1);
*
输出某年某月的日历页,通过键盘输入年份和月份
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int m, n;
System.out.println("请从键盘输入年份:");
Scanner ym = new Scanner(System.in);
System.out.printf("%4s", a[i]);
习题3_8 import java.util.Scanner;
public class San_8 {// 编写应用程序,计算两个非零正整数的 // 最大公约数和最小公倍数,要求两个正整数从键盘输入 /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int a, b, c, d = 0, e = 0; System.out.println("请从键盘输入两个正整数:"); Scanner nihao = new Scanner(System.in); System.out.print("你输入的第一个数为:"); a = nihao.nextInt(); System.out.print("你输入的第二个数为:"); b = nihao.nextInt(); if(a==0||b==0){//当输入的数有零存在时,输出错误提示信息 System.out.println("输入有错,请确认后重新输入!!"); } else { for (c = 1; c <= a; c++) { if ((a % c == 0) && (b % c == 0)) {//当a除以c,b除以c的余数皆为0时 d = c;//将c赋给d //将a与c,b与c的商之积与上面得到的最大公约数相乘 e = d * (a / c) * (b / c);//也可以改写为:e=a*b/c } } System.out.println("这两个数的最大公约数为:"+d); System.out.println("这两个数的最小公倍数为:"+e); } }
System.out.print("1+"); for (int r = 2; r <= 19; r++) {
System.out.print("1/" + r + "!" + "+"); } for (k = 1; k <= 20; k++) {// 用for循环实现
习题3_7 public class San_7 {// 一个数如果恰好等于它的因子之和,这个数就成为”完数“。
// 编写一个应用程序求1000以内的所有完数。 /**
* @param args */ public static void main(String[] args) {
// TODO Auto-generated method stub int i, j,sum; for (i = 1; i <= 1000; i++) {
习题3_5 public class San_5 {// 求100以内的素数
/** * @param args//本题考查对for循环、break语句、if语句的运用 */
public static void main(String[] args) { // TODO Auto-generated method stub int i, j; for (i = 2; i <= 100; i++) {// for循环从2开始,逐渐增1 for (j = 2; j <= i / 2; j++) {// for循环从2开始,逐步增1 if (i % j == 0) {// 如果i除以j的余数为0,则终止本次for循环 break; } } if (j > i / 2) {// 如果j>i/2,输出i System.out.print(" " + i); } }
} }
1
输出结果: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
习题3_6 public class San_6 {// 分别用while和for循环计算1+1/2!+1/3!+1/4!...的前20项和
char[] str = "日一二三四五六".toCharArray();
for (char c : str) {
System.out.printf("%4c", c);
}
for (int i = 0; i < a.length; i++) { // 输出一维数组
if (i % 7 == 0)
System.out.println(); // 换行
} } 输出结果:
ABCDEFGH abcdefgh 你好!我是中国人
习题 9_7 public class B {
public static void main(String[] args) { String a = "书山有路勤为径"; char b = a.charAt(0);// 输出当前字符串的第一个字符 char c = a.charAt(a.length() - 1);// 输出当前字符串的最后一个字符
习题3_4 public class San_4 {// 编写一个应用程序求1!+2!+...+20!
/** * @param args//本题考查对循环的运用和对算法的编写 */
public static void main(String[] args) { // TODO Auto-generated method stub int a; double b = 1, sum = 0;// 定义变量 for (a = 1; a <= 20; a++) {// for循环实现该功能 b = b * a;// 当a=1时,b=b*a=1,依此类推 sum = sum + b;// 当a=1时,sum=sum+b=1,依次类推 } for (int w = 1; w <= 19; w++) {// for循环打印出阶乘之和的形式来 System.out.print(w + "!" + "+"); } System.out.println("20!" + "=" + sum);// 最终输出阶乘之和
double sum1 = 0, a1 = 1; int i = ቤተ መጻሕፍቲ ባይዱ; while (i <= 20)// 用while循环实现该功能 {
sum1 = sum1 + a1; i++; a1 = a1 * i; } System.out.println("sum1=" + sum1); } } 输出结果: 1!+2!+3!+4!+5!+6!+7!+8!+9!+10!+11!+12!+13!+14!+15!+16!+17!+18!+1 9!+20!=2.5613274941118203E18 sum1=2.5613274941118203E18
4
System.out.println(b); System.out.println(c); } } 输出结果:
书 径
习题 9_8 import java.util.Calendar; import java.util.Scanner;
public class C {
/**
* @param args
}
} 计算结果:
满足条件的最大整数是:7 1至7的阶乘和为:46233
习题9_6 public class A {
public static void main(String[] args) { String s="aBcDeFgH"; String t="你好!"; String v="我是中国人"; String a=s.toUpperCase();//将小写字母转换为大写字母 String b=s.toLowerCase();//将大写字母转换为小写字母 System.out.println(a); System.out.println(b); System.out.println(t.concat(v));//将字符串v连接到字符串t之后
for (j = 1, sum= 0; j < i; j++) {
2
if (i % j == 0) {// 当i除以j的余数为0时,执行sum=sum+j sum = sum + j;
} } if (sum == i) {// 如果sum==i,执行下列输出语句
System.out.println("完数:" + i); } } } } 计算结果: 完数:6 完数:28 完数:496
m *= (1.0 / k); sum2 += m; } System.out.println("1/20!" + "=" + sum2); }
} 计算结果:
1+1/2!+1/3!+1/4!+1/5!+1/6!+1/7!+1/8!+1/9!+1/10!+1/11!+1/12!+1/13! +1/14!+1/15!+1/16!+1/17!+1/18!+1/19!+1/20!=1.7182818284590455 1+1/2!+1/3!+1/4!+1/5!+1/6!+1/7!+1/8!+1/9!+1/10!+1/11!+1/12!+1/13! +1/14!+1/15!+1/16!+1/17!+1/18!+1/19!+1/20!=1.7182818284590455
m = ym.nextInt();// 读入年份
System.out.println("请从键盘输入月份:");
n = ym.nextInt();// 读入月份
CalendarBean cb = new CalendarBean();
cb.setYear(m);
cb.setMonth(n);
String[] a = cb.getCalendar(); // 返回号码的一维数组
public static void main(String[] args) { // TODO Auto-generated method stub int n = 1; long sum = 0, a = 1; while (true) { sum = sum + a; if (sum > 9999) {// 当sum>9999时,跳出while循环 break; } n++; a = n * a; } System.out.println("满足条件的最大整数是:" + (n - 1)); System.out.println("1至" + (n - 1) + "的阶乘和为:" + sum);
} 计算结果:
请从键盘输入两个正整数: 你输入的第一个数为:45 你输入的第二个数为:60
3
这两个数的最大公约数为:15 这两个数的最小公倍数为:180
习题3_9 public class San_9 {// 求满足1+2!+3!+...+n!≤9999的最大整数n
/** * @param args */
/** * @param args//本题考查同学们对while循环、for循环以及对输出字符串格式的运用 */
public static void main(String[] args) { // TODO Auto-generated method stub int i = 1, k; double j = 1, m = 1, sum1 = 0, sum2 = 0; while (i <= 20) {// 用while循环实现 sum1 = sum1 + j; i++; j = j * (1.0 / i); } System.out.print("1+"); for (int r = 2; r <= 19; r++) { System.out.print("1/" + r + "!" + "+"); } System.out.print("1/20!" + "=" + sum1);
*
输出某年某月的日历页,通过键盘输入年份和月份
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int m, n;
System.out.println("请从键盘输入年份:");
Scanner ym = new Scanner(System.in);
System.out.printf("%4s", a[i]);
习题3_8 import java.util.Scanner;
public class San_8 {// 编写应用程序,计算两个非零正整数的 // 最大公约数和最小公倍数,要求两个正整数从键盘输入 /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int a, b, c, d = 0, e = 0; System.out.println("请从键盘输入两个正整数:"); Scanner nihao = new Scanner(System.in); System.out.print("你输入的第一个数为:"); a = nihao.nextInt(); System.out.print("你输入的第二个数为:"); b = nihao.nextInt(); if(a==0||b==0){//当输入的数有零存在时,输出错误提示信息 System.out.println("输入有错,请确认后重新输入!!"); } else { for (c = 1; c <= a; c++) { if ((a % c == 0) && (b % c == 0)) {//当a除以c,b除以c的余数皆为0时 d = c;//将c赋给d //将a与c,b与c的商之积与上面得到的最大公约数相乘 e = d * (a / c) * (b / c);//也可以改写为:e=a*b/c } } System.out.println("这两个数的最大公约数为:"+d); System.out.println("这两个数的最小公倍数为:"+e); } }