首页 > 代码库 > 每天10道编程题-第三天
每天10道编程题-第三天
【程序21】 题目:求1+2!+3!+...+20!的和
【程序22】 题目:利用递归方法求5!。
【程序23】 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
【程序24】 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
【程序25】 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
【程序26】 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
【程序27】 题目:求100之内的素数
【程序28】 题目:对10个数进行排序
【程序29】 题目:求一个3*3矩阵对角线元素之和
【程序30】 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
详细如下:
【程序21】 题目:求1+2!+3!+...+20!的和
1 package com.daliu.suanfa3; 2 3 /** 4 * 【程序21】 题目:求1+2!+3!+...+20!的和 5 * 6 */ 7 public class Ex21 { 8 static long sum = 0; 9 static long fac = 0;10 11 public static void main(String[] args) {12 long sum = 0;13 long fac = 1;14 for (int i = 1; i <= 10; i++) {15 fac = fac * i;16 sum += fac;17 }18 System.out.println(sum);19 }20 }
【程序22】 题目:利用递归方法求5!。
1 package com.daliu.suanfa3; 2 3 import java.util.Scanner; 4 5 /** 6 * 【程序22】 题目:利用递归方法求5!。 7 * 8 * @author Administrator 9 * 10 */11 public class Ex22 {12 public static void main(String[] args) {13 Scanner s = new Scanner(System.in);14 int n = s.nextInt();15 System.out.println(recursion(n));16 17 }18 19 public static long recursion(int n) {20 long value = http://www.mamicode.com/0;21 if (n == 1 || n == 0) {22 value = http://www.mamicode.com/1;23 } else if (n > 1) {24 value = http://www.mamicode.com/n * recursion(n - 1);25 }26 return value;27 }28 29 }
【程序23】 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
1 package com.daliu.suanfa3; 2 3 /** 4 * 【程序23】 5 * 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人 6 * ,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大? 7 * 1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。 8 * 9 */10 public class Ex23 {11 12 static int getAge(int n) {13 if (n == 1) {14 return 10;15 }16 return 2 + getAge(n - 1);17 }18 19 public static void main(String[] args) {20 System.out.println("第五个的年龄为:" + getAge(5));21 }22 }
【程序24】 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
1 package com.daliu.suanfa3; 2 3 import java.util.Scanner; 4 5 /** 6 * 【程序24】 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 7 * 8 */ 9 public class Ex24 {10 public static void main(String[] args) {11 Ex24 tn = new Ex24();12 Scanner s = new Scanner(System.in);13 long a = s.nextLong();14 if (a < 0 || a > 100000) {15 System.out.println("Error Input, please run this program Again");16 System.exit(0);17 }18 if (a >= 0 && a <= 9) {19 System.out.println(a + "是一位数");20 System.out.println("按逆序输出是" + ‘\n‘ + a);21 } else if (a >= 10 && a <= 99) {22 System.out.println(a + "是二位数");23 System.out.println("按逆序输出是");24 tn.converse(a);25 } else if (a >= 100 && a <= 999) {26 System.out.println(a + "是三位数");27 System.out.println("按逆序输出是");28 tn.converse(a);29 } else if (a >= 1000 && a <= 9999) {30 System.out.println(a + "是四位数");31 System.out.println("按逆序输出是");32 tn.converse(a);33 } else if (a >= 10000 && a <= 99999) {34 System.out.println(a + "是五位数");35 System.out.println("按逆序输出是");36 tn.converse(a);37 }38 }39 40 public void converse(long l) {41 String s = Long.toString(l);42 char[] ch = s.toCharArray();43 for (int i = ch.length - 1; i >= 0; i--) {44 System.out.print(ch[i]);45 }46 }47 }
【程序25】 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
1 package com.daliu.suanfa3; 2 3 import java.util.Scanner; 4 /** 5 * 【程序25】 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 6 * 7 */ 8 public class Ex25 { 9 static int[] a = new int[5];10 static int[] b = new int[5];11 12 public static void main(String[] args) {13 boolean is = false;14 Scanner s = new Scanner(System.in);15 long l = s.nextLong();16 if (l > 99999 || l < 10000) {17 System.out.println("Input error, please input again!");18 l = s.nextLong();19 }20 for (int i = 4; i >= 0; i--) {21 a[i] = (int) (l / (long) Math.pow(10, i));22 l = (l % (long) Math.pow(10, i));23 }24 System.out.println();25 for (int i = 0, j = 0; i < 5; i++, j++) {26 b[j] = a[i];27 }28 for (int i = 0, j = 4; i < 5; i++, j--) {29 if (a[i] != b[j]) {30 is = false;31 break;32 } else {33 is = true;34 }35 }36 if (is == false) {37 System.out.println("is not a Palindrom!");38 } else if (is == true) {39 System.out.println("is a Palindrom!");40 }41 }42 }
【程序26】 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
1 package com.daliu.suanfa3; 2 3 import java.util.Scanner; 4 /** 5 * 【程序26】 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样, 6 * 则继续 判断第二个字母。 7 * 8 */ 9 public class Ex26 { 10 public static void main(String[] args) { 11 // 保存用户输入的第二个字母 12 char weekSecond; 13 // 将Scanner类示例化为input对象,用于接收用户输入 14 Scanner input = new Scanner(System.in); 15 // 开始提示并接收用户控制台输入 16 System.out.print("请输入星期值英文的第一个字母,我来帮您判断是星期几:"); 17 String letter = input.next(); 18 // 判断用户控制台输入字符串长度是否是一个字母 19 if (letter.length() == 1) { 20 // 利用取第一个索引位的字符来实现让Scanner接收char类型输入 21 char weekFirst = letter.charAt(0); 22 switch (weekFirst) { 23 case ‘m‘: 24 // 当输入小写字母时,利用switch结构特性执行下一个带break语句的case分支,以实现忽略用户控制台输入大小写敏感的功能 25 case ‘M‘: 26 System.out.println("星期一(Monday)"); 27 break; 28 case ‘t‘: 29 // 当输入小写字母时,利用switch结构特性执行下一个带break语句的case分支,以实现忽略用户控制台输入大小写敏感的功能 30 case ‘T‘: 31 System.out 32 .print("由于星期二(Tuesday)与星期四(Thursday)均以字母T开头,故需输入第二个字母才能正确判断:"); 33 letter = input.next(); 34 // 判断用户控制台输入字符串长度是否是一个字母 35 if (letter.length() == 1) { 36 // 利用取第一个索引位的字符来实现让Scanner接收char类型输入 37 weekSecond = letter.charAt(0); 38 // 利用或(||)运算符来实现忽略用户控制台输入大小写敏感的功能 39 if (weekSecond == ‘U‘ || weekSecond == ‘u‘) { 40 System.out.println("星期二(Tuesday)"); 41 break; 42 // 利用或(||)运算符来实现忽略用户控制台输入大小写敏感的功能 43 } else if (weekSecond == ‘H‘ || weekSecond == ‘h‘) { 44 System.out.println("星期四(Thursday)"); 45 break; 46 // 控制台错误提示 47 } else { 48 System.out.println("输入错误,不能识别的星期值第二个字母,程序结束!"); 49 break; 50 } 51 } else { 52 // 控制台错误提示 53 System.out.println("输入错误,只能输入一个字母,程序结束!"); 54 break; 55 } 56 case ‘w‘: 57 // 当输入小写字母时,利用switch结构特性执行下一个带break语句的case分支,以实现忽略用户控制台输入大小写敏感的功能 58 case ‘W‘: 59 System.out.println("星期三(Wednesday)"); 60 break; 61 case ‘f‘: 62 // 当输入小写字母时,利用switch结构特性执行下一个带break语句的case分支,以实现忽略用户控制台输入大小写敏感的功能 63 case ‘F‘: 64 System.out.println("星期五(Friday)"); 65 break; 66 case ‘s‘: 67 // 当输入小写字母时,利用switch结构特性执行下一个带break语句的case分支,以实现忽略用户控制台输入大小写敏感的功能 68 case ‘S‘: 69 System.out 70 .print("由于星期六(Saturday)与星期日(Sunday)均以字母S开头,故需输入第二个字母才能正确判断:"); 71 letter = input.next(); 72 // 判断用户控制台输入字符串长度是否是一个字母 73 if (letter.length() == 1) { 74 // 利用取第一个索引位的字符来实现让Scanner接收char类型输入 75 weekSecond = letter.charAt(0); 76 // 利用或(||)运算符来实现忽略用户控制台输入大小写敏感的功能 77 if (weekSecond == ‘A‘ || weekSecond == ‘a‘) { 78 System.out.println("星期六(Saturday)"); 79 break; 80 // 利用或(||)运算符来实现忽略用户控制台输入大小写敏感的功能 81 } else if (weekSecond == ‘U‘ || weekSecond == ‘u‘) { 82 System.out.println("星期日(Sunday)"); 83 break; 84 // 控制台错误提示 85 } else { 86 System.out.println("输入错误,不能识别的星期值第二个字母,程序结束!"); 87 break; 88 } 89 } else { 90 // 控制台错误提示 91 System.out.println("输入错误,只能输入一个字母,程序结束!"); 92 break; 93 } 94 default: 95 // 控制台错误提示 96 System.out.println("输入错误,不能识别的星期值第一个字母,程序结束!"); 97 break; 98 } 99 } else {100 // 控制台错误提示101 System.out.println("输入错误,只能输入一个字母,程序结束!");102 }103 }104 }
【程序27】 题目:求100之内的素数
1 package com.daliu.suanfa3; 2 /** 3 * 【程序27】 题目:求100之内的素数 4 * 5 */ 6 public class Ex27 { 7 public static void main(String args[]) { 8 int sum, i; 9 for (sum = 2; sum <= 100; sum++) {10 for (i = 2; i <= sum / 2; i++) {11 if (sum % i == 0)12 break;13 }14 if (i > sum / 2)15 System.out.println(sum + "是素数");16 }17 }18 }
【程序28】 题目:对10个数进行排序
1 package com.daliu.suanfa3; 2 3 import java.util.Arrays; 4 import java.util.Random; 5 import java.util.Scanner; 6 /** 7 * 【程序28】 题目:对10个数进行排序 8 * @author Administrator 9 *10 */11 12 public class Ex28 {13 public static void main(String[] args) {14 int arr[] = new int[11];15 Random r = new Random();16 for (int i = 0; i < 10; i++) {17 arr[i] = r.nextInt(100) + 1;// 得到10个100以内的整数18 }19 Arrays.sort(arr);20 for (int i = 0; i < arr.length; i++) {21 System.out.print(arr[i] + "\t");22 }23 System.out.print("\nPlease Input a int number: ");24 Scanner sc = new Scanner(System.in);25 arr[10] = sc.nextInt();// 输入一个int值26 Arrays.sort(arr);27 for (int i = 0; i < arr.length; i++) {28 System.out.print(arr[i] + "\t");29 }30 }31 }
【程序29】 题目:求一个3*3矩阵对角线元素之和
1 package com.daliu.suanfa3; 2 /** 3 * 【程序29】 题目:求一个3*3矩阵对角线元素之和 4 * @author Administrator 5 * 6 */ 7 public class Ex29 { 8 public static void main(String[] args) { 9 double sum = 0;10 int array[][] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 7, 8 } };11 for (int i = 0; i < 3; i++)12 for (int j = 0; j < 3; j++) {13 if (i == j)14 sum = sum + array[i][j];15 }16 System.out.println(sum);17 }18 }
【程序30】 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
1 package com.daliu.suanfa3; 2 3 import java.util.Random; 4 /** 5 * 【程序30】 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 6 * 7 */ 8 public class Ex30 { 9 public static void main(String[] args) {10 int temp = 0;11 int myarr[] = new int[12];12 Random r = new Random();13 for (int i = 1; i <= 10; i++)14 myarr[i] = r.nextInt(1000);15 for (int k = 1; k <= 10; k++)16 System.out.print(myarr[k] + ",");17 for (int i = 1; i <= 9; i++)18 for (int k = i + 1; k <= 10; k++)19 if (myarr[i] > myarr[k]) {20 temp = myarr[i];21 myarr[i] = myarr[k];22 myarr[k] = temp;23 }24 System.out.println("");25 for (int k = 1; k <= 10; k++)26 System.out.print(myarr[k] + ",");27 28 myarr[11] = r.nextInt(1000);29 for (int k = 1; k <= 10; k++)30 if (myarr[k] > myarr[11]) {31 temp = myarr[11];32 for (int j = 11; j >= k + 1; j--)33 myarr[j] = myarr[j - 1];34 myarr[k] = temp;35 }36 System.out.println("");37 for (int k = 1; k <= 11; k++)38 System.out.print(myarr[k] + ",");39 }40 }
每天10道编程题-第三天