public class San_4 {// 编写一个应用程序求1!+2!+ (20)/*** @param args//本题考查对循环的运用和对算法的编写*/public static void main(String[] args) {// TODO Auto-generated method stubint 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 = 1;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!+19!+20!=2.5613274941118203E18sum1=2.5613274941118203E18习题3_5public class San_5 {// 求100以内的素数/*** @param args//本题考查对for循环、break语句、if语句的运用*/public static void main(String[] args) {// TODO Auto-generated method stubint i, j;for (i = 2; i <= 100; i++) {// for循环从2开始,逐渐增1for (j = 2; j <= i / 2; j++) {// for循环从2开始,逐步增1if (i % j == 0) {// 如果i除以j的余数为0,则终止本次for循环break;}}if (j > i / 2) {// 如果j>i/2,输出iSystem.out.print(" " + i);}}}}2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 8389 97习题3_6public class San_6 {// 分别用while和for循环计算1+1/2!+1/3!+1/4!...的前20项和/*** @param args//本题考查同学们对while循环、for循环以及对输出字符串格式的运用 */public static void main(String[] args) {// TODO Auto-generated method stubint 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);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循环实现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.71828182845904551+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习题3_7public class San_7 {// 一个数如果恰好等于它的因子之和,这个数就成为”完数“。
// 编写一个应用程序求1000以内的所有完数。
/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubint i, j,sum;for (i = 1; i <= 1000; i++) {for (j = 1, sum= 0; j < i; j++) {if (i % j == 0) {// 当i除以j的余数为0时,执行sum=sum+jsum = sum + j;}}if (sum == i) {// 如果sum==i,执行下列输出语句System.out.println("完数:" + i);}}}}计算结果:完数:6完数:28完数:496习题3_8import java.util.Scanner;public class San_8 {// 编写应用程序,计算两个非零正整数的// 最大公约数和最小公倍数,要求两个正整数从键盘输入/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubint 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);}}}计算结果:请从键盘输入两个正整数:你输入的第一个数为:45你输入的第二个数为:60这两个数的最大公约数为:15这两个数的最小公倍数为:180习题3_9public class San_9 {// 求满足1+2!+3!+...+n!≤9999的最大整数n /*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubint 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);}}计算结果:满足条件的最大整数是:71至7的阶乘和为:46233习题9_6public 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之后}}输出结果:ABCDEFGHabcdefgh你好!我是中国人习题9_7public class B {public static void main(String[] args) {String a = "书山有路勤为径";char b = a.charAt(0);// 输出当前字符串的第一个字符char c = a.charAt(a.length() - 1);// 输出当前字符串的最后一个字符System.out.println(b);System.out.println(c);}}输出结果:书径习题9_8import java.util.Calendar;import java.util.Scanner;public class C {/*** @param args* 输出某年某月的日历页,通过键盘输入年份和月份*/public static void main(String[] args) {// TODO Auto-generated method stubint m, n;System.out.println("请从键盘输入年份:");Scanner ym = new Scanner(System.in);m = ym.nextInt();// 读入年份System.out.println("请从键盘输入月份:");n = ym.nextInt();// 读入月份CalendarBean cb = new CalendarBean();cb.setYear(m);cb.setMonth(n);String[] a = cb.getCalendar(); // 返回号码的一维数组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(); // 换行System.out.printf("%4s", a[i]);}}}package xt9_8;import java.util.Calendar;public class CalendarBean {String[] day;int year = 2008, month = 0;public void setYear(int year) {this.year = year;}public void setMonth(int month) {this.month = month;}public String[] getCalendar() {String[] a = new String[42];Calendar 日历 = Calendar.getInstance();日历.set(year, month - 1, 1);int 星期几 = 日历.get(Calendar.DAY_OF_WEEK) - 1;int day = 0;if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8|| month == 10 || month == 12)day = 31;if (month == 4 || month == 6 || month == 9 || month == 11) day = 30;if (month == 2) {if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) day = 29;elseday = 28;}for (int i = 0; i < 星期几; i++)a[i] = " ";for (int i = 星期几, n = 1; i < 星期几 + day; i++) {a[i] = String.valueOf(n);n++;}for (int i = 星期几 + day; i < a.length; i++)a[i] = " ";return a;}}输出结果:请从键盘输入年份:2011请从键盘输入月份:12日一二三四五六1 2 34 5 6 7 8 9 1011 12 13 14 15 16 1718 19 20 21 22 23 2425 26 27 28 29 30 31习题9_9import java.util.Calendar;import java.util.Scanner;public class C {/*** @param args 计算某年、某月、某日与某年、某月、某日之间的天数间隔。