zoukankan      html  css  js  c++  java
  • java经典50编程题

    1. 菲波拉契数列:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
       1 package com.day2;
       2 public class test1 {
       3     public static void main(String[] args) {
       4         // TODO Auto-generated method stub
       5         int s1 = 1, s2 = 1, s, month = 24;
       6         System.out.println("第1个月的兔子总数:	"+1);
       7         System.out.println("第2个月的兔子总数:	"+1);
       8         for(int i = 3; i <= month; i++)
       9         {
      10             //每个月的兔子总数是前两个月的总和
      11             s = s2;
      12             s2 += s1;
      13             s1 = s;
      14             System.out.println("第"+i+"个月的兔子总数:	"+s2);
      15         }
      16         
      17     }
      18 
      19 }
      test1
    2. 判断 101-200 之间有多少个素数,并输出所有素数。
       1 package com.day2;
       2 public class test2 {
       3     public static void main(String[] args) {
       4         // TODO Auto-generated method stub
       5         int count = 0;
       6         for(int i = 101; i <= 200; i++) 
       7         {
       8             boolean b = false;
       9             for (int j = 2; j < Math.sqrt(i); j++) {
      10                 if(i%j == 0)
      11                 {
      12                     b = false;
      13                     break;
      14                 }
      15                 else
      16                 {
      17                     b = true;
      18                 }
      19             }
      20             if(b == true)
      21             {
      22                 count ++;
      23                 System.out.println(i);
      24             }
      25         }
      26         System.out.println("素数的总数为:"+count);
      27     }
      28 
      29 }
      test2
    3. 打印出所有水仙花数
       1 package com.day2;
       2 
       3 public class test3 {
       4 public static void main(String[] args) {
       5     int b1, b2, b3;
       6     for(int m=101; m<1000; m++) 
       7     {
       8         b3 = m / 100;
       9         b2 = m % 100 / 10;
      10         b1 = m % 10;
      11         if((b3*b3*b3 + b2*b2*b2 + b1*b1*b1) == m)
      12         {
      13             System.out.println(m+"是一个水仙花数"); 
      14         }
      15     }
      16 }
      17 }
      test3
    4. 将一个正整数分解质因数。例如:输入 90,打印出 90=2*3*3*5
       1 程序分析:对 n 进行分解质因数,应先找到一个最小的质数 k,然后按下述步骤完成:
       2 (1)如果这个质数恰等于 n,则说明分解质因数的过程已经结束,打印出即可。
       3 (2)如果 n <> k,但 n 能被 k 整除,则应打印出 k 的值,并用 n 除以 k 的商,作为新的正整数
       4 你 n,重复执行第一步。
       5 (3)如果 n 不能被 k 整除,则用 k+1 作为 k 的值,重复执行第一步。
       6 package com.day2;
       7 import java.util.*;
       8 public class test4 {
       9     public static Scanner input = new Scanner(System.in);
      10     public static void main(String[] args) {
      11         // TODO Auto-generated method stub
      12         System.err.println("请输入一个数:");
      13         int x = input.nextInt();
      14         System.out.print(x+"= ");
      15         int i = 2;
      16         while(i <= x){    //使用循环来找到可以被整除的数,然后通过out函数输出
      17             if(i == x)//如果相等的话,就说明这个数没有因数,只有1和它自己;
      18             {
      19                 System.out.println(i);
      20                 break;
      21             }
      22             else if(x % i ==0)//如果这个数有因数,然后找到除去这个因数后的值,继续循环
      23             {
      24                 System.out.print(i+"*");
      25                 x = x / i;
      26             }
      27             else    //如果都不满足,则继续循环,
      28             {
      29                 i++;
      30             }
      31         }
      32     }
      33 
      34 }
      test4
    5. 三目运算符:利用条件运算符的嵌套来完成此题:学习成绩> =90 分的同学用 A 表示,60-89 分之间的用 B 表示,60 分以下的用 C 表示。

       1 package com.day2;
       2 import java.util.*;
       3 public class test5 {
       4     public static Scanner input = new Scanner(System.in);
       5     public static void main(String[] args) {
       6         // TODO Auto-generated method stub
       7         System.err.println("请输入一个成绩:");
       8         int x = input.nextInt();
       9         char grade = (x >= 90) ? 'A'
      10                     :(x >= 60) ? 'B'
      11                     : 'C';
      12         System.out.println("该学生的成绩水平是:	"+grade);        
      13     }
      14 }
      test5
    6. 输入两个正整数 m 和 n,求其最大公约数和最小公倍数
       1 /**在循环中,只要除数不等于 0,用较大数除以较小的数,将小的一个数作为下一轮循环的
       2 大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为 0,返回较大
       3 的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。* /
       4 package com.day2;
       5 import java.util.*;
       6 public class test6 {
       7     public static Scanner input = new Scanner(System.in);
       8     public static void main(String[] args) {
       9         System.out.println("请输入两个数来求最大公约数和最小公倍数:");
      10         System.out.println("第一个数:");
      11         int a = input.nextInt();
      12         System.out.println("第二个数:");
      13         int b = input.nextInt();
      14         Deff cd = new Deff();
      15         int x = cd.deff(a, b);//调用函数找到最大公约数
      16         int y = a * b / x;//两个数的积除以最大公约数就是最小公倍数
      17         System.out.println("最大公约数为:"+x);
      18         System.out.println("最小公倍数为:"+y);
      19     }
      20 
      21 }
      22 class Deff{
      23     public int deff(int a, int b)
      24     {
      25         if(a < b)
      26         {
      27             a = a ^ b;
      28             b = a ^ b;
      29             a = a ^ b;
      30         }
      31         while(b != 0)
      32         {
      33             if(a == b)
      34                 return a;
      35             else
      36             {
      37                 int k = a % b;
      38                 a = b ;
      39                 b = k;
      40             }
      41         }
      42         return a;
      43     }
      44 }
      test6
    7. 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
       1 package com.day2;
       2 import java.util.*;
       3 public class test7 {
       4     public static Scanner input = new Scanner(System.in);
       5     public static void main(String[] args) {
       6         System.out.println("请输入一行字符串:");
       7         String str = input.nextLine();
       8         int digital = 0,character = 0, other = 0, blank = 0;
       9         char [] ch = str.toCharArray();//String的方法,将字符串转换为字符数组;
      10         for (int i = 0; i <ch.length; i++) {
      11             if(ch[i] >= 'a' && ch[i] <= 'z' || ch[i] >= 'A' && ch[i] <= 'Z')
      12                 character++;
      13             else if(ch[i] >= '0' && ch[i] <= '9')
      14                 digital++;
      15             else if(ch[i] == ' ')
      16                 blank++;
      17             else
      18                 other++;
      19         }
      20         System.out.println("字母个数:"+character);
      21         System.out.println("数字个数:"+digital);
      22         System.out.println("空格个数:"+blank);
      23         System.out.println("其他个数:"+other);
      24     }
      25 }
      test7
    8. 求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一个数字。例如 2+22+222+2222+22222(此时共有 5 个数相加),几个数相加由键盘控制

       1 package com.day2;
       2 import java.util.*;
       3 public class test8 {
       4     public static Scanner input = new Scanner(System.in);
       5     public static void main(String[] args) {
       6         System.out.println("请输入个位数字:");
       7         int single = input.nextInt();
       8         System.out.println("请输入最高位数:");
       9         int max = input.nextInt();
      10         int sum = 0,temp = 0;
      11         for (int i = 0; i < max; i++) {
      12             temp = single + temp;    //先把本次要加的值赋值给temp;
      13             single *= 10;            //每次把单数乘以10,向前进一位,加上之前的temp正好满足需要
      14             sum = sum + temp;        //把每次的temp相加起来就是要的结果
      15         }
      16         System.out.println("数字"+single+"公共有"+max+"个数相加的好结果为:"+sum);
      17     }
      18 }
      test8
    9. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如 6=1+2+3.编程找出 1000 以内的所有完数

       1 package com.day2;
       2 public class test9 {
       3     public static void main(String[] args) {
       4         for (int i = 1; i <= 1000; i++) {
       5             int b = 0;//每次都要把b重置
       6             for (int j = 1; j <= i/2; j++) {
       7                 if(i % j == 0)//找到因数,然后相加
       8                 {
       9                     b = b + j;//相加供后边使用
      10                 }
      11             }
      12             if(i == b)//如果是完数,则输出完数
      13                 System.out.println(i);
      14         }
      15     }
      16 }
      test9
    10. 一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10 次落地时,共经过多少米?第 10 次反弹多高?

       1 package com.day2;
       2 import java.util.*;
       3 public class test10 {
       4     public static Scanner input = new Scanner(System.in);
       5     public static void main(String[] args) {
       6         System.out.println("请输入第几次?");
       7         int num = input.nextInt();
       8         double sum = 0, high = 100;
       9         for (int i = 1; i < num; i++) {
      10             if(i == 1)
      11                 sum += high;
      12             else
      13                 sum = sum + 2*high;
      14             if(i < 10)
      15                 high /= 2;
      16         }
      17         System.out.println("第"+num+"次时经过"+sum+"米,第"+num+"次反弹"+high+"米!");
      18     }
      19 }
      test10
       1 package com.day2;
       2 import java.util.*;
       3 public class test10 {
       4     public static Scanner input = new Scanner(System.in);
       5     public static void main(String[] args) {
       6         System.out.println("请输入第几次?");
       7         int num = input.nextInt();
       8         double sum = 100, high = 100;
       9         for (int i = 1; i < num; i++) {//执行9次
      10                 sum += high;
      11                 high /= 2;
      12         }
      13         System.out.println("第"+num+"次时经过"+sum+"米,第"+num+"次反弹"+high+"米!");
      14     }
      15 }
      test10
    11. 有 1、 2、 3、 4 四个数字, 能组成多少个互不相同且无重复数字的三位数?都是多少?
       1 package com.day3;
       2 public class test11 {
       3     public static void main(String[] args) {
       4         int count = 0 ;
       5         for (int i = 1; i < 5; i++) {//最外层循环,控制百位数;
       6             for (int j = 1; j < 5; j++) {//第二层循环控制十位数;
       7                 for (int z =1; z < 5; z++) {//第三层循环控制个位数;
       8                     if(i!=j&&i!=z&&j!=z)//如果三个位上的值互不相等,执行计数操作;
       9                     {
      10                         count++;
      11                         System.out.println(i*100+j*10+z);
      12                     }
      13                 }
      14             }
      15         }
      16         System.out.println("共有"+count+"个这样的数!");
      17     }
      18 }
      test11
    12. 企业发放的奖金根据利润提成。利润(I)低于或等于 10 万元时,奖金可提 10%;利润高于 10 万元,低于 20 万元时,低于 10 万元的部分按 10%提成,高于 10 万元的部分,可可提成 7.5%;20 万到 40 万之间时,高于 20 万元的部分,可提成 5%;40 万到 60 万之间时高于 40 万元的部分, 可提成 3%; 60 万到 100 万之间时, 高于 60 万元的部分, 可提成 1.5%,高于 100 万元时,超过 100 万元的部分按 1%提成,从键盘输入当月利润,求应发放奖金总数?

       1 package com.day3;
       2 import java.util.*;
       3 public class test12 {
       4     public static void main(String[] args) {
       5         double x = 0,y = 0;
       6         System.out.print("输入当月利润(万) :");
       7         Scanner s = new Scanner(System.in);
       8         x = s.nextInt();
       9         if(x > 0 && x <= 10) {
      10             y = x * 0.1;
      11         } else if(x > 10 && x <= 20) {
      12             y = 10 * 0.1 + (x - 10) * 0.075;
      13         } else if(x > 20 && x <= 40) {
      14             y = 10 * 0.1 + 10 * 0.075 + (x - 20) * 0.05;
      15         } else if(x > 40 && x <= 60) {
      16             y = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + (x - 40) * 0.03;
      17         } else if(x > 60 && x <= 100) {
      18             y = 20 * 0.175 + 20 * 0.05 + 20 * 0.03 + (x - 60) * 0.015;
      19         } else if(x > 100) {
      20             y = 20 * 0.175 + 40 * 0.08 + 40 * 0.015 + (x - 100) * 0.01;
      21         }
      22         System.out.println("应该提取的奖金是 " + y + "万");
      23     }
      24 }
      test12
    13. 一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少?

       1 package com.day3;
       2 public class test13 {
       3     public static void main(String[] args) {
       4         long startTime = System.currentTimeMillis(); //获取执行开始时间
       5         int i = 0;
       6         while(true)
       7         {
       8             if(Math.sqrt(i+100) % 1 == 0)
       9                 if(Math.sqrt(i+100+168) % 1 ==0)
      10                 {
      11                     System.out.println(i+"加上100或者168都是完全平方数!");
      12                 }
      13             i++;
      14             if(i > 10000)
      15                 break;
      16         }
      17         long endTime = System.currentTimeMillis(); //获取执行结束时间
      18         System.out.println("time:" + (endTime - startTime));  //打印程序执行时间
      19     }
      20 }
      21 
      22 
      23 程序也可参考以下地址的写法:http://blog.csdn.net/yueqinglkong/article/details/22805293
      test13
    14. 输入某年某月某日,判断这一天是这一年的第几天?
       1 package com.day3;
       2 import java.util.Scanner;
       3 public class test14 {
       4     public static Scanner input = new Scanner(System.in);
       5     public static void main(String[] args) {
       6         int day , month ,year , dayNum = 0;//定义年月日,以及本月之前的总天数
       7         while(true)
       8         {
       9             System.out.println("请输入年:");
      10             year = input.nextInt();
      11             System.out.println("请输入月:");
      12             month = input.nextInt();
      13             System.out.println("请输入日:");
      14             day = input.nextInt();            
      15             if(month < 1 || month > 12 || day < 1 || day > 31)
      16                 continue;
      17             else
      18                 break;
      19         }
      20         for(int i =1; i < month; i++)//通过循环来找到本月之前的总天数;判断月的总天数和闰年等
      21         {
      22             int days = 0;
      23             switch(i)
      24             {
      25             case 1:
      26             case 3:
      27             case 5:
      28             case 7:
      29             case 8:
      30             case 10:
      31             case 12:
      32                     days = 31;
      33                     break;
      34             case 4:
      35             case 6:
      36             case 9:
      37             case 11:
      38                     days = 30;
      39                     break;
      40             case 2://闰年29天,非闰年28天
      41                     if(year % 400 ==0||(year%4 == 0 && year % 100 != 0))
      42                         days = 29;
      43                     else
      44                         days = 28;
      45                     break;
      46             }
      47             dayNum += days;//输入月份之前月份的总天数
      48         }
      49         System.out.println("这是本年的第"+(dayNum+day)+"天");
      50     }
      51 }
      test14
    15. 输入三个整数 x,y,z,请把这三个数由小到大输出。
       1 package com.day3;
       2 import java.util.Arrays;
       3 import java.util.Scanner;
       4 public class test15 {
       5     public static Scanner input = new Scanner(System.in);
       6     public static void main(String[] args) {
       7         long startTime = System.currentTimeMillis(); //获取执行开始时间
       8         sort(44,35,37);
       9         long endTime = System.currentTimeMillis(); //获取执行结束时间
      10         System.out.println("time:" + (endTime - startTime));  //打印程序执行时间
      11     }
      12     public static void sort(int a, int b, int c)
      13     {
      14         if(a > b)
      15         {
      16             a = a ^ b ;
      17             b = a ^ b ;
      18             a = a ^ b ;
      19         }
      20         if(a > c)
      21         {
      22             a = a ^ c ;
      23             c = a ^ c ;
      24             a = a ^ c ;
      25         }
      26         if(b > c)
      27         {
      28             b = b ^ c ;
      29             c = b ^ c ;
      30             b = b ^ c ;
      31         }
      32         System.out.println("从小到大的顺序是:"+a+"<"+b+"<"+c);
      33     }
      34     public static void sort1(int a, int b, int c)
      35     {
      36         int arr[]  = {a,b,c};
      37         Arrays.sort(arr);
      38         System.out.println("从小到大依次是:");
      39         for (int i = 0; i < arr.length; i++) {
      40             System.out.print(arr[i]);
      41             System.out.print(' ');
      42         }
      43     }
      44 }
      test15
    16. 输出 9*9 口诀。
       1 package com.day4;
       2 public class test16 {
       3     public static void main(String[] args) {
       4         for (int i = 1; i < 10 ; i++) {
       5             for (int j = 1; j <= i ; j++) {
       6                 System.out.print(j+"*"+i+"="+i*j+"	");
       7             }
       8             System.out.println();
       9         }
      10     }
      11 }
      test16
    17. 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。 到第10天早上想再吃时, 见只剩下一个桃子了。 求第一天共摘了多少。

       1 package com.day4;
       2 public class test17 {
       3     public static void main(String[] args) {
       4         // TODO Auto-generated method stub
       5         int num = 1;
       6         for (int i = 9; i >= 1; i--) {
       7             num = (num + 1) * 2;
       8         }
       9         System.out.println("猴子第一天摘的桃子的个数是:"+num);
      10     }
      11 
      12 }
      test17
    18. 两个乒乓球队进行比赛,各出三人。甲队为 a,b,c 三人,乙队为 x,y,z 三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a 说他不和 x 比,c 说他不和 x,z 比,请编程序找出三队赛手的名单。

       1 package com.day4;
       2 public class test18 {
       3     static  char[] m ={'a','b','c'};//把要处理的字符放进字符数组中便于处理;
       4     static  char[] n ={'x','y','z'};
       5     public static void main(String[] args) {
       6         for (int i = 0; i < m.length; i++) {//外层循环遍历甲队队员,
       7             for (int j = 0; j < n.length; j++) {//内层循环遍历乙队队员,
       8                 if(m[i] == 'a' && n[j] == 'x')
       9                     continue;
      10                 //根据题意知道c对战y,a不可能对战y;
      11                 else if(m[i] == 'a' && n[j] == 'y')
      12                     continue;
      13                 //根据题意;
      14                 else if((m[i] == 'c' && n[j] == 'x' ) || (m[i] == 'c' && n[j] == 'z'))
      15                     continue;
      16                 //推测出b不可能对战y和z;
      17                 else if((m[i] == 'b' && n[j] == 'y' ) || (m[i] == 'b' && n[j] == 'z'))
      18                     continue;
      19                 else
      20                     System.out.println(m[i]  +"对战"+n[j]);
      21             }
      22         }
      23     }
      24 }    
      test18
    19. 打印出如下图案(菱形)
       1 package com.day4;
       2 import java.util.*; 
       3 public class test19 {
       4     public static Scanner input = new Scanner(System.in);
       5     public static void main(String[] args) {
       6         System.out.println("请输入你要显示的总行数(奇数):");
       7         int num = input.nextInt();
       8         for (int i = 1; i <= (num+1) / 2; i++) {//此循环是控制上层的三角的,包括最中间的一行;
       9             for (int j = 0; j < (num+1) / 2 -i ; j++) {//控制每一行的空格数
      10                 System.out.print(" ");
      11             }
      12             for (int j = 0; j < 2*i - 1; j++) {//控制每一行显示的*符号数
      13                 System.out.print("*");
      14             }
      15             System.out.println();//换行
      16         }
      17         for (int i = 1; i <= (num -1 ) / 2; i++) {//此循环是控制下层的三角的
      18             for (int j = 0; j < i ; j++) {//控制每一行的空格数
      19                 System.out.print(" ");
      20             }
      21             for (int j = 0; j < num - 2*i; j++) {//控制每一行显示的*符号数
      22                 System.out.print("*");
      23             }
      24             System.out.println();//换行
      25         }
      26     }
      27 }
      test19
    20. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前 20 项之和
       1 package com.day4;
       2 import java.util.Scanner;
       3 public class test20 {
       4     public static Scanner input = new Scanner(System.in);
       5     public static void main(String[] args) {
       6         int x = 2 , y = 1;
       7         double sum = 0;
       8         for (int i = 1; i <= 20; i++) {//根据之间的规律来逐项想加
       9             sum = sum + (double)x / y;
      10             x = x ^ y;
      11             y = x ^ y;
      12             x = x ^ y;
      13             x = x + y;
      14         }
      15         System.out.println("前20项想加之和为:"+sum);
      16     }
      17 
      18 }
      test20
    21. 求 1+2!+3!+...+20!的和
       1 package day5;
       2 public class test21 {
       3     public static void main(String[] args) {
       4         long sum = 0 ;long temp = 1;//必须要设置为long类型,不然超过范围;
       5         for (int i = 1; i <= 20; i++) {
       6             temp = 1;
       7             for (int j = 1; j <= i; j++) {
       8                 temp *= j;
       9             }
      10             sum += temp;
      11         }
      12         System.out.println(sum);
      13     }
      14 }
      test21
    22. 利用递归方法求 5!;
       1 package day5;
       2 public class test12 {
       3     public static void main(String[] args) {
       4         System.out.println(rec(5));
       5     }
       6     public static long rec(int n) {//定义函数实现递归
       7         long value = 0 ;
       8         if(n ==1 ) 
       9         {
      10             value = 1;
      11         } 
      12         else
      13         {
      14             value = n * rec(n-1);
      15         }
      16         return value;
      17     }
      18 }
      test22
    23. 有 5 个人坐在一起,问第五个人多少岁?他说比第 4 个人大 2 岁。问第 4 个人岁数,他说比第 3 个人大 2 岁。问第三个人,又说比第 2 人大两岁。问第 2 个人,说比第一个人大两岁。最后问第一个人,他说是 10 岁。请问第五个人多大?

       1 package day5;
       2 public class test23 {
       3     public static void main(String[] args) {
       4         int age = 10;//第一个人的年龄
       5         for (int i = 1; i <= 4; i++) {//依次从第一个人加到第五个人
       6             age += 2;
       7         }
       8         System.out.println("第五个人"+age+"岁");
       9     }
      10 }
      test23
    24. 给一个不多于 5 位的正整数, 要求: 一、 求它是几位数, 二、 逆序打印出各位数字。

       1 package day5;
       2 import java.util.Scanner;
       3     
       4 public class test24 {
       5     public static Scanner input = new Scanner(System.in);
       6     public static void main(String[] args) {
       7         System.out.println("请输入一个不多于五位数的数字:");
       8         Integer num = input.nextInt();//定义Integer类型变量,便于转换成数组;
       9         String numString = Integer.toString(num);//利用Integer的方法转换成字符串;
      10         char [] arrChar = numString.toCharArray();//利用字符串的方法转换成字符数组,便于求长度和输出
      11         System.out.println("您输入的是"+arrChar.length+"位数");
      12         for (int i = 0; i < arrChar.length; i++) {
      13             System.out.println("第"+(i+1)+"个数字是"+arrChar[i]);
      14         }
      15         System.out.println("逆序打印:");
      16         for (int i = arrChar.length - 1; i >= 0; i--) {
      17             System.out.print(arrChar[i]);
      18         }
      19     }
      20 }
      test24  
    25. 一个 5 位数,判断它是不是回文数。即 12321 是回文数,个位与万位相同,十位与千位相同。

      test25
       1 package day5;
       2 import java.util.Scanner;
       3 public class test25_1 {
       4     public static Scanner input = new Scanner(System.in);
       5     public static void main(String[] args) {
       6         boolean isHuiWen = false;
       7         System.out.println("请输入一个数是不是回文数:");
       8         Integer num = input.nextInt();
       9         char[] arrChar = num.toString().toCharArray();//像上一题一样,利用字符数组解决
      10         for (int i = 0; i < arrChar.length / 2; i++) {
      11             if (arrChar[i] == arrChar[arrChar.length - i - 1]) {
      12                 isHuiWen = true;
      13             }else {
      14                 isHuiWen = false;
      15             }
      16         }
      17         if (isHuiWen) {
      18             System.out.println("这个数是回文数!");
      19         }else {
      20             System.out.println("这个数不是回文数!");
      21         }
      22     }
      23 }
      不限制位数
    26. 请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。

       1 package com.day6;
       2 import java.util.Scanner;
       3 public class test26 {
       4     public static Scanner input = new Scanner(System.in);
       5     public static void main(String[] args) {
       6         System.out.println("请输入一个字符串:");
       7         String str = input.nextLine().toUpperCase();//将输入的都转换成大写
       8         switch(str.charAt(0))//利用字符串的charAt方法,取得字符串的第一个字符
       9         {
      10             case 'M':
      11                 System.out.println("Monday");
      12                 break;
      13             case 'W':
      14                 System.out.println("Wednesday");
      15                 break;
      16             case 'F':
      17                 System.out.println("Friday");
      18                 break;
      19             case 'T': {//利用字符串的charAt方法,取得字符串的第二个字符
      20                 if(str.charAt(1)== 'U') {System.out.println("Tuesday"); }
      21                 else if(str.charAt(1)== 'H') {System.out.println("Thursday"); }
      22                 else {System.out.println("无此写法!");
      23             }
      24             };
      25             break;
      26             case 'S': {
      27             if(str.charAt(1) == 'U') {System.out.println("Sunday"); }
      28             else if(str.charAt(1) == 'A') {System.out.println("Saturday"); }
      29             else {System.out.println("无此写法!");
      30             }
      31             };
      32             break;
      33             default:System.out.println("无此写法!");
      34             }
      35         }
      36     }
      test26
    27. 求 100 之内的素数
       1 package com.day6;
       2 
       3 public class Test27 {
       4     public static void main(String[] args) {
       5         System.out.print("2 3 ");
       6         boolean is = false;
       7         for (int i = 4; i <= 100; i++) {
       8             for (int j = 2; j <= Math.sqrt(i); j++) {
       9                 if(i % j == 0)//不是素数,找下一个数
      10                 {
      11                     is = false;
      12                     break;
      13                 }
      14                 else//是素数,设为true;输出此数
      15                     is = true;
      16             }
      17             if (is == true) {
      18                 System.out.print(i+" ");
      19             }
      20         }
      21     }
      22 }
      Test27
    28. 对 10 个数进行排序
       1 package com.day6;
       2 
       3 import java.lang.reflect.Array;
       4 import java.util.Arrays;
       5 import java.util.Scanner;
       6 public class Test28 {
       7     public static Scanner input = new Scanner(System.in);
       8     public static void main(String[] args) {
       9         System.out.println("请输入您要输入的个数");
      10         int num = input.nextInt();
      11         int [] arrInt = new int[num];
      12         System.out.println("输入"+num+"位数进行排序:");
      13         for (int i = 0; i < num; i++) {
      14             arrInt[i] = input.nextInt();
      15         }
      16         //Arrays.sort(arrInt);//利用自带的排序函数进行排序
      17         sort(arrInt);//自定义函数进行排序
      18         for (int i = 0; i < arrInt.length; i++) {
      19             System.out.println(arrInt[i]);
      20         }
      21     }
      22     public static int[] sort(int [] arr)
      23     {
      24         for (int i = 0; i < arr.length; i++) {
      25             for (int j = i; j < arr.length; j++) {
      26                 if(arr[i] > arr[j])
      27                 {
      28                     arr[i] = arr[i] ^ arr[j];
      29                     arr[j] = arr[i] ^ arr[j];
      30                     arr[i] = arr[i] ^ arr[j];
      31                 }
      32             }
      33         }
      34         return arr;
      35     }
      36 }
      Test28
    29. 求一个 3*3 矩阵对角线元素之和
       1 package com.day6;
       2 import java.util.Scanner;
       3 public class Test29 {
       4     public static Scanner input = new Scanner(System.in);
       5     public static void main(String[] args) {
       6         int sum = 0;
       7         System.out.println("请输入9个整数以求对角线之和");
       8         int [][] arrInt = new int[3][3];
       9         for (int i = 0; i < arrInt.length; i++) {
      10             for (int j = 0; j < arrInt.length; j++) {
      11                 arrInt[i][j] = input.nextInt();
      12             }
      13         }
      14         System.out.println("您输入的9位数矩阵为:");
      15         for (int i = 0; i < arrInt.length; i++) {
      16             for (int j = 0; j < arrInt.length; j++) {
      17                 System.out.print(arrInt[i][j]+" ");
      18             }
      19             System.out.println();
      20         }
      21         for (int i = 0; i < arrInt.length; i++) {
      22             for (int j = 0; j < arrInt.length; j++) {
      23                 if (i == j || i == arrInt.length - 1 - j ) {
      24                     sum += arrInt[i][j];
      25                 }
      26                 if (i ==  1 && j == 1) {//最中间的那个数少加一次,要记得加上,如果不是9位矩阵,则需改变
      27                     sum += arrInt[i][j];
      28                 }
      29             }
      30         }
      31         System.out.println("对角线之和为:"+sum);
      32     }
      33 }
      Test29
    30. 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

       1 package com.day6;
       2 import java.util.Scanner;
       3     public class Test30 {
       4     public static Scanner input = new Scanner(System.in);
       5     public static void main(String[] args) {
       6         int[] a = new int[]{1, 2, 6, 14, 25, 36, 37,55};
       7         int[] b = new int[a.length+1];
       8         int i =0;
       9         System.out.print("请输入一个整数:");
      10         int num = input.nextInt();
      11         if(num >= a[a.length-1]) 
      12         {//如果大于最大数,直接加在最后
      13             b[b.length-1] = num;
      14             for(i=0; i<a.length; i++)
      15             {//把a数组复制给b数组
      16                 b[i] = a[i];
      17             }
      18         } 
      19         else 
      20         {//如果不大于最大数
      21             for(i=0; i<a.length; i++)
      22             {
      23                 if(num >= a[i]) 
      24                 {//如果次数大于当前的数
      25                     b[i] = a[i];//加在b对应的的位置
      26                 } 
      27                 else 
      28                 {
      29                     b[i] = num;
      30                     break;
      31                 }
      32             }
      33             for(int j=i+1; j<b.length; j++) 
      34             {//a中的i后边元素都在b中往后移一个位置
      35                 b[j] = a[j-1];
      36             }
      37         }
      38         for (i = 0; i < b.length; i++) 
      39         {//输出数组
      40             System.out.print(b[i] + " ");
      41         }
      42     }
      43 }
      Test30
    31. 将一个数组逆序输出 

       1 package com.day7;
       2 import java.util.Scanner;
       3 public class Test31 {
       4     public static Scanner input = new Scanner(System.in);
       5     public static void main(String[] args) {
       6         int [] arr = new int [100];//初始化定义数组,默认长度为100;        
       7         System.out.println("请输入多个正整数(输入-1结束):");
       8         int i = 0;//定义i是为了知道数组中有多少个元素;
       9         do//用户do while循环是为了控制数组输入的结束;
      10         {
      11             arr[i] = input.nextInt();
      12             i++;
      13         }while(arr[i-1] != -1);//第一次到这里的时候,i已经是1,所以可以减去1
      14         System.out.println("您输入的数组是:");
      15         for (int j2 = 0; j2 < i-1; j2++) {//顺序输入刚才输入的数组
      16             System.out.println(arr[j2]+ " ");
      17         }
      18         System.out.println("您输入的数组逆序输出为:");
      19         for (int j2 = 0; j2 < i-1; j2++) {//逆序输入刚才输入的数组
      20             System.out.println(arr[i-2-j2] + " ");
      21         }
      22     }
      23 }
      Test31
    32. 取一个整数 a 从右端开始的 4~7 位
       1 package com.day7;
       2 import java.util.Scanner;
       3 public class Test32 {
       4     public static Scanner input = new Scanner(System.in);
       5     public static void main(String[] args) {
       6         System.out.println("请输入一个大于7位数的整数:");
       7         long num = input.nextLong();//定义数值类型是long类型,防止越界
       8         String str = Long.toString(num);//将long类型转换成字符串
       9         char[] charStr = str.toCharArray();//利用字符串的方法转换为字符数组
      10         int length = charStr.length;
      11         if (length < 7) {//容错判断
      12             System.out.println("您输入的整数长度有误!");
      13         }
      14         else {//如果输入正确,输入该整数的倒数4-7位
      15             System.out.println("您输入的整数从右端开始的4-7位分别是:"+
      16                     charStr[length-4] +" "+charStr[length-5]+" "
      17                     +charStr[length-6]+" "+charStr[length-7]);
      18         }
      19     }
      20 }
      Test32
    33. 打印出杨辉三角形(手动选择要打印的行数)
       1 package com.day7;
       2 import java.util.Scanner;
       3 public class Test33 {
       4     public static void main(String[] args) {
       5         Scanner input = new Scanner(System.in);
       6         System.out.println("请输入要显示的杨辉三角的行数:");
       7         int num = input.nextInt();//获得要显示的行数
       8         int[][] arr = new int[num][num];//定义二维数组,存储要显示的数字
       9         for (int i = 0; i < arr.length; i++) {
      10             arr[i][i] = 1;//确定每行最后的数字
      11             arr[i][0] = 1;//确定每行开始的数字
      12         }
      13         for (int i = 2; i < arr.length; i++) 
      14         {//获取每一行的开始和结束的数字
      15             for (int j = 1; j < i; j++) {
      16                 arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
      17             }
      18         }
      19         for (int i = 0; i < arr.length; i++) 
      20         {//打印出二维数组
      21             for (int j = 0; j < 2*(arr.length-i)-1; j++) 
      22             {//控制每一行的最前面显示的空格数
      23                 System.out.print(" ");
      24             }
      25             for (int j = 0; j <= i; j++) 
      26             {//打印出数组中的元素,并且以空格隔开
      27                 System.out.print(arr[i][j]+"   ");
      28             }
      29             System.out.println();//每次打印一行结束之后换行;
      30         }
      31         
      32     }
      33 }
      Test33
    34. 输入 3 个数 a,b,c,按大小顺序输出。
       1 package com.day7;
       2 import java.util.Arrays;//引入Arrays,获取排序方法
       3 import java.util.Scanner;
       4 public class Test34 {
       5     public static void main(String[] args) {
       6         Scanner input = new Scanner(System.in);
       7         int [] arr = new int[3];
       8         System.out.println("请输入三个数字,以按照大小输出:");
       9         for (int i = 0; i < arr.length; i++) {
      10             arr[i] = input.nextInt();
      11         }
      12         Arrays.sort(arr);//利用JAVA数组的排序,直接输出数组
      13         for (int i = 0; i < arr.length; i++) {
      14             System.out.println(arr[i]);
      15         }
      16     }
      17 }
      Test34
    35.  输入数组, 最大的与第一个元素交换, 最小的与最后一个元素交换, 输出数组。
       1 package com.day7;
       2 import java.util.Scanner;
       3 public class Test35 {
       4     public static Scanner input = new Scanner(System.in);
       5     public static void main(String[] args) {
       6         System.out.println("请输入要多大的数组:");
       7         int arrLength = input.nextInt();
       8         int [] arr  = new int[arrLength];
       9         for(int i = 0; i < arrLength; i++)
      10         {
      11             arr[i] = input.nextInt();//初始化数组
      12         }
      13         int max = arr[0] , min=arr[0] ,maxIndex = 0,minIndex = 0;
      14         for (int i = 1; i < arr.length; i++) {
      15             if (max < arr[i]) {//找到数组的最大值索引
      16                 max = arr[i];
      17                 maxIndex = i;
      18             }
      19             else if(min > arr[i]) {//找到数组的最小值索引
      20                 min = arr[i];
      21                 minIndex = i;
      22             }
      23         }
      24         if(maxIndex != 0)//如果最大值的索引不是0,交换元素
      25         {
      26             arr[0] = arr[0] ^ arr[maxIndex];
      27             arr[maxIndex] = arr[0] ^ arr[maxIndex];
      28             arr[0] = arr[0] ^ arr[maxIndex];
      29         }
      30         if(minIndex != arrLength - 1 )//如果最大值的索引不是arrLength - 1,交换元素
      31         {    
      32             arr[arrLength - 1] = arr[arrLength - 1] ^ arr[minIndex];
      33             arr[minIndex] = arr[arrLength - 1] ^ arr[minIndex];
      34             arr[arrLength - 1] = arr[arrLength - 1] ^ arr[minIndex];
      35         }
      36         for (int i = 0; i < arr.length; i++) {//输出数组
      37             System.out.println(arr[i]);
      38         }
      39     }
      40 }
      Test35
    36. 有n个整数, 使其前面各数顺序向后移m个位置, 最后m个数变成最前面的m个数
       1 package com.day8;
       2 import java.util.Scanner;
       3 public class Test36 {
       4     public static void main(String[] args) {
       5         Scanner input = new Scanner(System.in);
       6         System.out.println("请输入数组的长度:");//定义数组长度
       7         int num = input.nextInt();
       8         int [] arr = new int[num];
       9         System.out.println("请输入数组元素:");//键入数组元素
      10         for (int i = 0; i < num; i++) {
      11             arr[i] = input.nextInt();
      12         }
      13         System.out.println("您输入的数组是:");//打印数组
      14         for (int j = 0; j < arr.length; j++) {
      15             System.out.print(arr[j] + " " );
      16         }
      17         System.out.println("请输入移动的位数:");//获取移动位数
      18         int m = input.nextInt();
      19         int [] arr2 = new int[num]; 
      20         for (int k = 0; k < m; k++) {//先把移动的转移进新数组
      21             arr2[k] = arr[num - m + k];
      22         }
      23         for (int k2 = 0; k2 < num - m; k2++) {//把向后移的插入到新数组
      24             arr2[m+k2] = arr[k2];
      25         }
      26         System.out.println("移动后的数组为:");
      27         for (int l = 0; l < arr2.length; l++) {
      28             System.out.println(arr2[l]);
      29         }
      30     }
      31 }
      Test36
    37. 有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3的人退出圈子,问最后留下的是原来第几号的那位

       1 package com.day8;
       2 import java.util.Scanner;
       3 public class Test37 {
       4     public static void main(String[] args) {
       5         Scanner input = new Scanner(System.in);
       6         System.out.println("请输入总人数:");//定义数组长度
       7         int num = input.nextInt();
       8         //定义数组,用其中的元素标记是否已经被淘汰,0表示为被淘汰
       9         int [] arr = new int[num];
      10         for (int i = 0; i < num; i++) {//初始化数组元素都是1
      11             arr[i] = 1;
      12         }
      13         for (int i = 0; i < arr.length; i++) {
      14             System.out.println(arr[i]);
      15         }
      16         int index = 0;
      17         int sum = 0;
      18         while(num > 1 )//用来控制剩余的人数
      19         {
      20             if (arr[index] == 1) {
      21                 sum++;
      22                 if (sum == 3) {//如果是3,则重新记,从1开始
      23                     sum = 0; 
      24                     arr[index] = 0; 
      25                     num-- ;
      26                 }
      27             }
      28         index++ ;
      29         if (index == arr.length) {//如果索引是数组的长度,则从0开始
      30             index = 0 ;
      31         }
      32         }
      33         for (int i = 0; i < arr.length; i++) {
      34             System.out.println(arr[i]);
      35         }
      36         for (int i = 0; i < arr.length; i++) {
      37             if (arr[i] == 1) {
      38                 System.out.println("第"+(i+1)+"留了下来");
      39             }
      40         }
      41     }
      42 }
      Test37
    38. 写一个函数, 求一个字符串的长度, 在 main 函数中输入字符串, 并输出其长度。
       1 package com.day8;
       2 import java.util.Scanner;
       3 public class Test38 {
       4     public static void main(String[] args) {
       5         Scanner input = new Scanner(System.in);
       6         System.out.println("请输入一个字符串:");
       7         String str = input.nextLine();
       8         System.out.println("该字符串的长度是:"+getArrLength(str));
       9     }
      10     public static int getArrLength(String str)
      11     {
      12         char[] charStr = str.toCharArray();
      13         return charStr.length;
      14     }
      15 }
      Test38
    39. 编写一个函数,输入 n 为偶数时,调用函数求 1/2+1/4+...+1/n,当输入 n 为奇数时,调用函数 1/1+1/3+...+1/n

       1 package com.day8;
       2 import java.util.Scanner;
       3 public class Test39 {
       4     public static void main(String[] args) 
       5     {
       6         Scanner s = new Scanner(System.in);
       7         System.out.print("请输入一个正整数 n= ");
       8         int n = s.nextInt();
       9         System.out.println("相应数列的和为:" + sum(n));
      10     }
      11     public static double sum(int n) 
      12     {
      13         double res = 0;
      14         if(n % 2 == 0) {
      15             for(int i=2; i<=n; i+=2) {
      16         res += (double)1 / i;
      17         }
      18         } else {
      19         for(int i=1; i<=n; i+=2) {
      20         res += (double)1 / i ;
      21         }
      22         }
      23         return res;
      24     }
      25 }
      Test39
  • 相关阅读:
    reids学习redis的五种基本数据类型
    CentOS下配置Java开发环境安装redis
    CentOS下配置Java开发环境安装Tomcat
    如何去除掉inlineblock元素之间的默认间距
    js按值传递还是按引用传递?
    overflow: hidden用法,不仅仅是隐藏溢出
    关于WinForm中的DataGridView控件显示数据字典的解决方案。
    C#中对Winform中的DataGridView的控制技巧。(单独控制某单元格的按钮不显示、某单元格的ReadOnly)
    改进版网页表格的合并单元格(支持不连续的列合并)
    [共享]MT随机算法(符合正态分布的随机算法)
  • 原文地址:https://www.cnblogs.com/csschn/p/5056139.html
Copyright © 2011-2022 走看看