Fork me on GitHub

每天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 = 0;
21         if (n == 1 || n == 0) {
22             value = 1;
23         } else if (n > 1) {
24             value = 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 }

 

posted @ 2014-12-02 09:27  刘哥聊技术  阅读(404)  评论(0编辑  收藏  举报