1、12017 年 Java 基础编程经典练习题 50 道【程序 1】 题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? /这是一个菲波拉契数列问题public class lianxi01 public static void main(String args) System.out.println(“第 1 个月的兔子对数: 1“);System.out.println(“第 2 个月的兔子对数: 1“);int f1 = 1, f2 = 1, f, M=24;for(int i=3; i
2、k,但 n 能被 k 整除,则应打印出 k 的值,并用 n 除以 k 的商,作为新的正整数你 n,重复执行第一步。 (3)如果 n 不能被 k 整除,则用 k+1 作为 k 的值,重复执行第一步。 import java.util.*;public class lianxi04 public static void main(String args) Scanner s = new Scanner(System.in);System.out.print( “请键入一个正整数: “); int n = s.nextInt();int k=2; System.out.print(n + “=“ )
3、;while(k =90 分的同学用 A 表示,60-89 分之间的用 B 表示,60 分以下的用 C 表示。 import java.util.*;public class lianxi05 public static void main(String args) int x;char grade;Scanner s = new Scanner(System.in);System.out.print( “请输入一个成绩: “); x = s.nextInt(); 3grade = x = 90 ? A: x = 60 ? B:C;System.out.println(“等级为:“+grade
4、); 【程序 6】 题目:输入两个正整数 m 和 n,求其最大公约数和最小公倍数。 /*在循环中,只要除数不等于 0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为 0,返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。* /import java.util.*;public class lianxi06 public static void main(String args) int a ,b,m;Scanner s = new Scanner(System.in);System.out.print(
5、 “键入一个整数: “); a = s.nextInt();System.out.print( “再键入一个整数: “); b = s.nextInt();deff cd = new deff();m = cd.deff(a,b);int n = a * b / m;System.out.println(“最大公约数: “ + m);System.out.println(“最小公倍数: “ + n); class deffpublic int deff(int x, int y) int t;if(x 0 System.out.println(“应该提取的奖金是 “ + y + “万“);【程
6、序 13】 题目:一个整数,它加上 100 后是一个完全平方数,再加上 168 又是一个完全平方数,请问该数是多少? public class lianxi13 public static void main(String args) for(int x =1; x 12 | day 31) System.out.println(“输入错误,请重新输入!“);e=1 ; while( e=1);for (int i=1; i y) int t = x;x = y;y = t;if(x z) int t = x;x = z;z = t;if(y z) int t = y;y = z;z = t;
7、System.out.println( “三个数字由小到大排列为: “+x + “ “ + y + “ “ + z);class inputpublic int input() int value = 0;Scanner s = new Scanner(System.in);10value = s.nextInt();return value; 【程序 16】题目:输出 9*9 口诀。 public class lianxi16 public static void main(String args) for(int i=1; i=0; i-) System.out.print(chi);14
8、【程序 25】 题目:一个 5 位数,判断它是不是回文数。即 12321 是回文数,个位与万位相同,十位与千位相同。 import java.util.*;public class lianxi25 public static void main(String args) Scanner s = new Scanner(System.in);int a;doSystem.out.print(“请输入一个 5 位正整数:“);a = s.nextInt();while(a99999);String ss =String.valueOf(a);char ch = ss.toCharArray();
9、if(ch0=ch4else System.out.println(“这不是一个回文数“);/这个更好,不限位数import java.util.*;public class lianxi25a public static void main(String args) Scanner s = new Scanner(System.in);boolean is =true;System.out.print(“请输入一个正整数:“);long a = s.nextLong();String ss = Long.toString(a);char ch = ss.toCharArray();int j
10、=ch.length;for(int i=0; iZ) System.out.println(“输入错误,请重新输入“);ch=getChar();16return ch; 【程序 27】 题目:求 100 之内的素数 /使用除 sqrt(n)的方法求出的素数不包括 2 和 3public class lianxi27 public static void main(String args) boolean b =false;System.out.print(2 + “ “);System.out.print(3 + “ “);for(int i=3; i aj) int t = ai;ai
11、= aj;aj = t;for(int i=0; i= aa.length-1) bb.length-1 = num;for(i=0; i= ai) bi = ai; else bi = num;break;for(int j=i+1; j=0; j=j-1) System.out.print(aj+“ “);【程序32】 题目:取一个整数a从右端开始的47位。 import java.util.*;public class lianxi32 public static void main(String args) Scanner s = new Scanner(System.in);Syst
12、em.out.print(“请输入一个7位以上的正整数:“);long a = s.nextLong();String ss = Long.toString(a);char ch = ss.toCharArray();int j=ch.length;if (j max) max = ai;idx1 = i;22/ 找出最大的数和其下标if (ai =m; i-) ai = ai-m;for(int i=0; i 1) if(arrindex = true) countNum +; if(countNum = 3) countNum =0;arrindex = false;leftCount -
13、;index +;if(index = n) index = 0;24for(int i=0; i s2.charAt(i) result = false;break; else if(s1.charAt(i) =100)System.out.println (“809*“+i+“=“+“800*“+i+“+“+“9*“+i+“=“+b);27 【程序 43】 题目:求 07 所能组成的奇数个数。 /组成 1 位数是 4 个。/组成 2 位数是 7*4 个。/组成 3 位数是 7*8*4 个。/组成 4 位数是 7*8*8*4 个。/public class lianxi43 public s
14、tatic void main (String args) int sum=4;int j;System.out.println(“组成 1 位数是 “+sum+“ 个“);sum=sum*7;System.out.println(“组成 2 位数是 “+sum+“ 个“);for(j=3;j=6 偶数,不是,重新输入fun fc = new fun();for(i=2;i=6 偶数,不是,重新输入for(int i=3;i50);for(int i=1;i9999); int a=new int4; a0 = num/1000; /取千位的数字 a1 = (num/100)%10; /取百位
15、的数字 a2 = (num/10)%10; /取十位的数字 a3 = num%10; /取个位的数字 for(int j=0;j4;j+) aj+=5; aj%=10; for(int j=0;j=1;j+) temp = aj; aj = a3-j; a3-j =temp; System.out.print(“加密后的数字为:“); for(int j=0;j4;j+) System.out.print(aj); 【程序 49】 题目:计算字符串中子串出现的次数 import java.util.*;public class lianxi49 public static void main(String args)Scanner s = new Scanner(System.in);System.out.print(“请输入字符串:“);String str1 = s.nextLine();System.out.print(“请输入子串:“);String str2 = s.nextLine();