} 【程序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( "键入一个整数: ");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 deff{public int deff(int x, int y) { int t; if(x < y) { t = x; x = y; y = t; } while(y != 0) { if(x == y) return x; else { int k = x % y; x = y; y = k; } } return x;}} 【程序7】 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 packageWuYang; importjava.util.*; publicclass lianxi07 { publicstaticvoid main(String[] args) { int abcCount=0;//英文字母个数 int spaceCount=0;//空格键个数 int numCount=0;//数字个数 int otherCount=0;//其他字符个数 Scanner scan = newScanner(System.in);//扫描器接受控制台的输入信息 System.out.println("输入一组字符"); String str=scan.nextLine();//取出控制台的一行信息,也就是你输入的信息 char[] ch = str.toCharArray();//把取道的字符串变成一个char数组 for(int i=0;i 0 && x <= 10) { y = x * 0.1; } else if(x > 10 && x <= 20) { y = 10 * 0.1 + (x - 10) * 0.075; } else if(x > 20 && x <= 40) { y = 10 * 0.1 + 10 * 0.075 + (x - 20) * 0.05; } else if(x > 40 && x <= 60) { y = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + (x - 40)* 0.03; } else if(x > 60 && x <= 100) { y = 20 * 0.175 + 20 * 0.05 + 20 * 0.03 + (x -60) * 0.015; } else if(x > 100) { y = 20 * 0.175 + 40 * 0.08 + 40 * 0.015 + (x -100) * 0.01; } System.out.println("应该提取的奖金是 " + y + "万");}} 【程序13】 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? public class lianxi13 {public static void main(String[] args) { for(int x =1; x<100000; x++) { if(Math.sqrt(x+100) % 1 == 0) { if(Math.sqrt(x+168) % 1 == 0) { System.out.println(x + "加100是一个完全平方数,再加168又是一个完全平方数"); } } }}}/*按题意循环应该从-100开始(整数包括正整数、负整数、零),这样会多一个满足条件的数-99。但是我看到大部分人解这道题目时都把题中的“整数”理解成正整数,我也就随大流了。*/【程序14】 题目:输入某年某月某日,判断这一天是这一年的第几天? import java.util.*;public class lianxi14 {public static void main(String[] args) { int year, month, day; int days = 0; int d = 0; int e; input fymd = new input(); do { e = 0; System.out.print("输入年:"); year =fymd.input(); System.out.print("输入月:"); month = fymd.input(); System.out.print("输入天:"); day = fymd.input(); if (year < 0 || month < 0 || month > 12 ||day < 0 || 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; } System.out.println( "三个数字由小到大排列为: "+x + " " + y + " " + z);}}class input{public int input() { int value = 0; Scanner s = new Scanner(System.in); value = s.nextInt(); return value;}} 【程序16】题目:输出9*9口诀。 public class lianxi16 {public static void main(String[] args) { for(int i=1; i<10; i++) { for(int j=1; j<=i; j++) { System.out.print(j + "*" + i +"=" + j*i + " " ); if(j*i<10){System.out.print(" ");}} System.out.println(); }}} 【程序17】 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 public class lianxi17 {public static void main(String[] args) { int x = 1; for(int i=2; i<=10; i++) { x = (x+1)*2; } System.out.println("猴子第一天摘了 " + x + " 个桃子");}} 【程序18】 题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。 public class lianxi18 { staticchar[] m = { 'a', 'b', 'c' };static char[] n = { 'x', 'y', 'z' }; publicstatic void main(String[] args) { for (int i = 0; i < m.length; i++) { for (int j = 0; j < n.length; j++) { if (m[i] == 'a' && n[j] == 'x') { continue; } else if (m[i] == 'a' && n[j] =='y') { continue; } else if ((m[i] =='c' && n[j] == 'x') || (m[i]== 'c' && n[j] == 'z')) { continue; } else if ((m[i] =='b' && n[j] == 'z') || (m[i]== 'b' && n[j] == 'y')) { continue; } else System.out.println(m[i] + " vs " + n[j]); } } } } 【程序19】 题目:打印出如下图案(菱形) * *** ***** ******* ***** *** * public class lianxi19 {public static void main(String[] args) { int H = 7, W = 7;//高和宽必须是相等的奇数 for(int i=0; i<(H+1) / 2; i++) { for(int j=0; j=0; i--) { System.out.print(ch[i]); } } }【程序25】 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 import java.util.*;public class lianxi25 {public static void main(String[] args) { Scanner s = new Scanner(System.in); int a; do{ System.out.print("请输入一个5位正整数:"); a = s.nextInt(); }while(a<10000||a>99999); String ss =String.valueOf(a); char[] ch = ss.toCharArray(); if(ch[0]==ch[4]&&ch[1]==ch[3]){ System.out.println("这是一个回文数");} else {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=ch.length; for(int i=0; i'Z') { System.out.println("输入错误,请重新输入"); ch=getChar(); } return 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<100; i+=2) { for(int j=2; j<=Math.sqrt(i); j++) { if(i % j == 0) {b = false; break; } else{b = true;} } if(b == true) {System.out.print(i + " ");} } }}//该程序使用除1位素数得2位方法,运行效率高通用性差。public class lianxi27a {public static void main(String[] args) { int[] a = new int[]{2, 3, 5, 7}; for(int j=0; j<4; j++)System.out.print(a[j] + " "); boolean b =false; for(int i=11; i<100; i+=2) { for(int j=0; j<4; j++) { if(i % a[j] == 0) {b = false; break; } else{b = true;} } if(b == true) {System.out.print(i + " ");} } }}【程序28】 题目:对10个数进行排序 import java.util.*;public class lianxi28 {public static void main(String[] args) {Scanner s = new Scanner(System.in); int[] a = new int[10]; System.out.println("请输入10个整数:"); for(int i=0; i<10; i++) { a[i] = s.nextInt(); } for(int i=0; i<10; i++) { for(int j=i+1; j<10; j++) { if(a[i] > a[j]) { int t = a[i]; a[i] = a[j]; a[j] = t; } } } for(int i=0; i<10; i++) { System.out.print(a[i] + " "); }}}【程序29】 题目:求一个3*3矩阵对角线元素之和 import java.util.*;public class lianxi29 {public static void main(String[] args) { Scanner s = new Scanner(System.in); int[][] a = new int[3][3];System.out.println("请输入9个整数:"); for(int i=0; i<3; i++) { for(int j=0; j<3; j++) { a[i][j] = s.nextInt(); } } System.out.println("输入的3 * 3 矩阵是:"); for(int i=0; i<3; i++) { for(int j=0; j<3; j++) { System.out.print(a[i][j] + " "); } System.out.println(); } int sum = 0; for(int i=0; i<3; i++) { for(int j=0; j<3; j++) { if(i == j) { sum += a[i][j]; } } } System.out.println("对角线之和是:" +sum);}} 【程序30】 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 //此程序不好,没有使用折半查找插入 importjava.util.*; publicclass lianxi30 { publicstaticvoid main(String[] args) { int[] a = newint[]{1, 2, 6, 14, 25, 36, 37,55}; int[] b = newint[a.length+1]; int t1=0, t2 = 0; int i =0; Scanner s= new Scanner(System.in); System.out.print("请输入一个整数:"); int num = s.nextInt(); if(num >= a[a.length-1]) { b[b.length-1] = num; for(i=0; i= a[i]) { b[i] = a[i]; } else { b[i] = num; break; } } for(int j=i+1; j=0; j=j-1) { System.out.print(a[j]+" ");} } }【程序32】 题目:取一个整数a从右端开始的4~7位。 import java.util.*;public class lianxi32 {public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print("请输入一个7位以上的正整数:"); long a = s.nextLong(); String ss = Long.toString(a); char[] ch = ss.toCharArray(); int j=ch.length; if (j<7){System.out.println("输入错误!");} else { System.out.println("截取从右端开始的4~7位是:"+ch[j-7]+ch[j-6]+ch[j-5]+ch[j-4]); } } } 【程序33】 题目:打印出杨辉三角形(要求打印出10行如下图) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 …………public class lianxi33 {public static void main(String[] args) { int[][] a = new int[10][10]; for(int i=0; i<10; i++) { a[i][i] = 1; a[i][0] = 1; } for(int i=2; i<10; i++) { for(int j=1; j max) { max = a[i]; idx1 = i; } // 找出最大的数和其下标 if (a[i] < min) { min = a[i]; idx2 = i; }// 找出最大的数和其下标 } if (idx1 != 0) { int temp = a[0]; a[0] = a[idx1]; a[idx1] = temp; }// 最大的数和第一个数交换位置 if (idx2 != N - 1) { int temp = a[N - 1]; a[N - 1] = a[idx2]; a[idx2] = temp; }// 最小的数和最后一个数交换位置 System.out.println("\n交换后的数组为:"); for (int i = 0; i < N; i++) { System.out.print(a[i] + " "); } } } 【程序36】 题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数 import java.util.Scanner;public class lianxi36 {public static void main(String[] args) { int N =10; int[] a = new int[N]; Scanner s = new Scanner(System.in); System.out.println("请输入10个整数:"); for(int i=0; i=m; i--) { a[i] = a[i-m]; } for(int i=0; i 1) { if(arr[index] == true) { countNum ++; if(countNum == 3) { countNum =0; arr[index] = false; leftCount --; } } index ++; if(index == n) { index = 0; } } for(int i=0; i s2.charAt(i)) { result = false; break; } else if(s1.charAt(i)