首页 > 代码库 > 每天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道编程题-第三天