【程序1】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
//这是一个菲波拉契数列问题
import java.util.Scanner;
public class Demo1{
public static void main(String[] args){
System.out.println("请输入你想要输入的月份:");
Scanner sc = new Scanner(System.in);
int month = sc.nextInt(); // 月份
int count = f(month) * 2; // 数量
System.out.println(month + "个月后,兔子总数为:" + count);
}
// 递归:计算n个月后,兔子的对数
public static int f(int n){
if(n == 1 || n == 2){
return 1;
} else if(n > 2){
return (f(n - 1) + f(n - 2));
}
return 0;
}
}
【程序2】
题目:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
public class Demo2{
public static void main(String[] args){
System.out.println("101-200之间的素数");
method();
}
// 判断101-200之间有多少个素数,并输出所有素数。
public static void method(){
int count = 0;
for(int i = 101;i < 200;i += 2){
boolean flag = false;
for(int j = 2;j <= Math.sqrt(i);j++){
if(i % j == 0){
flag = false;
break;
} else {
flag = true;
}
}
if(flag){
System.out.print(i + "\t");
count++;
}
}
System.out.println();
System.out.println("101-200之间有" + count + "个素数");
}
}
【程序3】
题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。
public class Demo3{
public static void main(String[] args){
System.out.println("打印出所有的 \"水仙花数 \"");
method();
}
// 打印出所有的 "水仙花数 "
public static void method(){
int num; // 数
int sum; // 和
for(int i = 1;i <= 9;i++){
for(int j = 0;j <= 9;j++){
for(int k = 0;k <= 9;k++){
num = i * 100 + j * 10 + k;
sum = i * i * i + j * j * j + k * k * k;
if(num == sum){
System.out.print(num + "\t");
}
}
}
}
}
}
【程序4】
题目:将一个正整数分解质因数。例如:输入90,打印出90=233*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
import java.util.Scanner;
public class Demo4{
public static void main(String[] args){
System.out.println("请输入你想要分解的正整数:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
System.out.print(num + "=");
method(num);
}
// 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。???
public static void method(int n){
int k = 2;
while(n > k){
if(n % k == 0){
System.out.print(k + "*");
n /= k;
} else {
k++;
}
}
System.out.println(k);
}
}
【程序5】
题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
import java.util.Scanner;
public class Demo5{
public static void main(String[] args){
System.out.println("请输入你的分数:");
Scanner sc = new Scanner(System.in);
int score = sc.nextInt();
method(score);
}
// 输出学习成绩等级
public static void method(int score){
if(score >= 90){
System.out.println("A");
} else if(score >= 60 && score < 90){
System.out.println("B");
} else if(score < 60){
System.out.println("C");
}
}
}
【程序6】
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
/*在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。 /
import java.util.Scanner;
public class Demo6{
public static void main(String[] args){
System.out.println("请输入两个正整数m和n:");
Scanner sc = new Scanner(System.in);
System.out.print("m:");
int m = sc.nextInt();
System.out.print("n:");
int n = sc.nextInt();
int num1 = method(m,n); // 最大公约数
int num2 = m * n / num1; // 最小公倍数
System.out.println(num1);
System.out.println(num2);
}
// 求其最大公约数和最小公倍数
public static int method(int m,int n){
int temp;
// 让m为输入的两个数中的最大数
if(m < n){
temp = m;
m = n;
n = temp;
}
while(n != 0){
if(m == n){
return m;
} else {
int k = m % n;
m = n;
n = k;
}
}
return m;
}
}
【程序7】
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
import java.util.Scanner;
public class Demo7{
public static void main(String[] args){
System.out.println("请输入一行字符:");
Scanner sc = new Scanner(System.in);
String s = sc.nextLine(); // next()和nextLine()的区别
method(s);
}
// 统计出其中英文字母、空格、数字和其它字符的个数
public static void method(String s){
int word = 0;
int space = 0;
int digital = 0;
int other = 0;
char[] c = s.toCharArray();
for(int i = 0;i < c.length;i++){
if((c[i] >= 'A' && c[i] <= 'Z') || (c[i] >= 'a' && c[i] <= 'z')){
word++;
} else if(c[i] == ' '){
space++;
} else if(c[i] >= '0' && c[i] <= '9'){
digital++;
} else {
other++;
}
}
System.out.println("数字个数是:" + word);
System.out.println("空格个数是:" + space);
System.out.println("英文个数字母是:" + digital);
System.out.println("其他字符是:" + other);
}
}
【程序8】
题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
import java.util.Scanner;
public class Demo8{
public static void main(String[] args){
System.out.println("求s=a+aa+aaa+aaaa+aa...a的值");
Scanner sc = new Scanner(System.in);
System.out.println("请输入a的值:");
int a = sc.nextInt();
System.out.println("请输入个数n的值:");
int n = sc.nextInt();
int s = method(a,n);
System.out.println(s);
}
// 求s=a+aa+aaa+aaaa+aa...a的值
public static int method(int a,int n){
int count = 0; // 计数器
int s = 0; // 和
while(count < n){
s += a;
a += a * 10;
count++;
}
return s;
}
}
【程序9】
题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3.编程 找出1000以内的所有完数。
public class Demo9{
public static void main(String[] args){
System.out.println("1000以内的所有完数");
method();
}
// 1000以内的所有完数
public static void method(){
for(int i = 1;i <= 1000;i++){
int temp = 0;
for(int j = 1;j < i;j++){
if(i % j == 0){
temp += j;
}
}
if(i == temp){
System.out.print(i + "\t");
}
}
}
}
【程序10】
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
public class Demo10{
public static void main(String[] args){
System.out.println("10次落地时,共经过多少米?第10次反弹多高?");
int n = 10; // 次数
method(n);
}
// 10次落地时,共经过多少米?第10次反弹多高?
public static void method(int n){
float s = 100.0f; //小球第一次落地经过的距离
float h = 50.0f; //小球第一次反弹的高度
for(int i = 2;i <= 10;i++){
s += h * 2;
h /= 2;
}
System.out.println(n + "次落地时,共经过" + s + "米,第10次反弹" + h + "米");
}
}
【程序11】
题目:有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
public class Demo11{
public static void main(String[] args){
System.out.println("有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少????");
int count = method();
System.out.println();
System.out.println("能组成" + count + "个互不相同且无重复数字的三位数");
}
// 有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数
public static int method(){
int count = 0;
for(int i = 1;i <= 4;i++){
for(int j = 1;j <= 4;j++){
for(int k = 1;k <= 4;k++){
if(i != j && j != k && i != k){
count++;
System.out.print(i * 100 + j * 10 + k + "\t");
}
}
}
}
return count;
}
}
【程序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%提成,从键盘输入当月利润,求应发放奖金总数?
import java.util.Scanner;
public class Demo12{
public static void main(String[] args){
System.out.println("企业发放的奖金根据利润提成");
Scanner sc = new Scanner(System.in);
System.out.println("请输入利润:" + "万元");
double profit = sc.nextDouble(); //利润
double bonus = method(profit); //奖金
System.out.println("奖金为:" + bonus + "万元");
}
// 企业发放的奖金根据利润提成
public static double method(double profit){
double bonus = 0;
if(profit <= 10){
bonus = profit * 0.1;
} else if(profit > 10 && profit <= 20){
bonus = (profit - 10) * 0.075 + 1;
} else if(profit > 20 && profit <= 40){
bonus = (profit - 20) * 0.05 + 1.75;
} else if(profit > 40 && profit <= 60){
bonus = (profit - 40) * 0.03 + 2.75;
} else if(profit > 60 && profit <= 100){
bonus = (profit - 60) * 0.015 + 3.35;
} else if(profit > 100){
bonus = (profit - 100) * 0.01 + 3.95;
}
return bonus;
}
}
【程序13】
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
public class Demo13{
public static void main(String[] args){
System.out.println("一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数");
int num = method();
System.out.println(num);
}
// 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数
public static int method(){
int num = 0; // 所求整数
boolean flag = false;
while(!flag){
num++;
int x = (int)Math.sqrt(num + 100);
int y = (int)Math.sqrt(num + 268);
if(x * x == (num + 100) && y * y == (num + 268)){
flag = true;
}
}
return num;
}
}
【程序14】
题目:输入某年某月某日,判断这一天是这一年的第几天?
import java.util.Scanner;
public class Demo14{
public static void main(String[] args){
System.out.println("输入某年某月某日,判断这一天是这一年的第几天");
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份:");
int year = sc.nextInt();
System.out.println("请输入月份:");
int month = sc.nextInt();
System.out.println("请输入天:");
int day = sc.nextInt();
int days = method(year,month,day);
System.out.println("这一天是" + year + "年的第" + days + "天");
}
// 输入某年某月某日,判断这一天是这一年的第几天
public static int method(int year,int month,int day){
int days = day; // 第几天
for(int i = 1;i < month;i++){
switch(i){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days += 31;
break;
case 4:
case 6:
case 9:
case 11:
days += 30;
break;
case 2:
//判断是否闰年
if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)){
days += 29;
} else {
days += 28;
}
default:
break;
}
}
return days;
}
}
【程序15】
题目:输入三个整数x,y,z,请把这三个数由小到大输出。
import java.util.Scanner;
public class Demo15{
public static void main(String[] args){
System.out.println("输入三个整数x,y,z,请把这三个数由小到大输出");
Scanner sc = new Scanner(System.in);
System.out.println("请输入x:");
int x = sc.nextInt();
System.out.println("请输入y:");
int y = sc.nextInt();
System.out.println("请输入z:");
int z = sc.nextInt();
method(x,y,z);
}
// 输入三个整数x,y,z,请把这三个数由小到大输出(冒泡排序)
public static void method(int x,int y,int z){
int[] a = { x, y, z };
int temp = x;
for(int i = 0;i < a.length - 1;i++){
for(int j = 0;j < a.length - 1 - i;j++){
if(a[j] > a[j + 1]){
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for(int i = 0;i < a.length;i++){
System.out.print(a[i] + " ");
}
}
}
【程序16】
题目:输出9*9口诀。
public class Demo16{
public static void main(String[] args){
System.out.println("输出9*9口诀");
method();
}
// 输出9*9口诀
public static void method(){
for(int i = 1;i <= 9;i++){
for(int j = 1;j <= i;j++){
System.out.print(i + " * " + j + " = " + i*j + "\t");
}
System.out.println();
}
}
}
【程序17】
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
public class Demo17{
public static void main(String[] args){
System.out.println("猴子吃桃问题:");
method();
}
// 猴子吃桃问题:
public static void method(){
int count = 1; //数量
for(int i = 1;i < 10;i++){
count = (count + 1) * 2;
}
System.out.println("第一天共摘了" + count);
}
}
【程序18】
题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
public class Demo18{
public static void main(String[] args){
System.out.println("两个乒乓球队进行比赛");
method();
}
// 两个乒乓球队进行比赛
public static void method(){
for(char a = 'x';a <= 'z';a++){
for (char b = 'x';b <= 'z';b++){
for (char c = 'x';c <= 'z';c++){
if(a != 'x' && c != 'x' && c != 'z' && a != b && a != c && b != c){
System.out.println("a vs " + a);
System.out.println("b vs " + b);
System.out.println("c vs " + c);
}
}
}
}
}
}
【程序19】
题目:打印出如下图案(菱形)
*
***
*****
*******
*****
***
*
public class Demo19{
public static void main(String[] args){
System.out.println("打印出如下图案(菱形) ");
method();
}
// 打印出如下图案(菱形)
public static void method(){
for(int i = 1;i <= 4;i++){
for(int j = 4 - i;j > 0;j--){
System.out.print(" ");
}
for(int j = 1;j <= 2 * i - 1;j++){
System.out.print("*");
}
System.out.println();
}
for(int i = 1;i < 4;i++){
for(int j = 1;j <= i;j++){
System.out.print(" ");
}
for(int j = 5;j >= 2 * i - 1;j--){
System.out.print("*");
}
System.out.println();
}
}
}
【程序20】
题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
public class Demo20{
public static void main(String[] args){
System.out.println("求出这个数列的前20项之和");
method();
}
// 求出这个数列的前20项之和
public static void method(){
int x = 2; //分母
int y = 1; //分子
double sum = 0; //和
for(int i = 1;i <= 20;i++){
sum += (double)x / y;
int temp = x;
x += y;
y = temp;
}
System.out.println(sum);
}
}
【程序21】
题目:求1+2!+3!+…+20!的和
public class Demo21{
public static void main(String[] args){
System.out.println("求1+2!+3!+...+20!的和");
long sum = method();
System.out.println(sum);
}
// 求1+2!+3!+...+20!的和
public static long method(){
long n = 1;
long sum = 0;
for(int i = 1;i <= 20;i++){
n *= i;
sum += n;
}
return sum;
}
}
【程序22】
题目:利用递归方法求5!。
public class Demo22{
public static void main(String[] args){
System.out.println("利用递归方法求5!");
int sum = method(5);
System.out.println(sum);
}
// 利用递归方法求5!
public static int method(int num){
if(num == 1){
return 1;
} else if(num > 1){
return num * method(num - 1);
}
return 0;
}
}
【程序23】
题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
public class Demo23{
public static void main(String[] args){
System.out.println("第五个人多大?");
int age = method(5);
System.out.println(age);
}
// 第五个人多大?
public static int method(int num){
if(num == 1){
return 10;
} else if(num > 1){
return method(num - 1) + 2;
}
return 0;
}
}
【程序24】
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
//使用了长整型最多输入18位
import java.util.Scanner;
public class Demo24{
public static void main(String[] args){
System.out.println("一、求它是几位数,二、逆序打印出各位数字");
Scanner sc = new Scanner(System.in);
String num = sc.next();
System.out.println("它是" + num.length() + "位数");
System.out.println("逆序前:");
System.out.println(num);
num = method(num);
System.out.println("逆序后:");
System.out.println(num);
}
// 逆序打印出各位数字
public static String method(String num){
String s = "";
char[] ch = num.toCharArray();
for (int i = num.length() - 1; i >= 0 ; i--) {
s += ch[i];
}
return s;
}
}
【程序25】
题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
public class Demo25{
public static void main(String[] args){
System.out.println(method("12321"));
}
//题目:一个5位数,判断它是不是回文数
public static boolean method(String num){
char[] a = num.toCharArray();
if(a[0] == a[4] && a[1] == a[3]){
return true;
}
return false;
}
}
【程序26】
题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。
import java.util.Scanner;
public class Demo26{
public static void main(String[] args){
day();
}
//请输入星期几的第一个字母来判断一下是星期几
public static void day(){
Scanner sc = new Scanner(System.in);
char c = sc.next().charAt(0);
switch (c){
case 'M':
System.out.println("星期一");
break;
case 'T':
char c1 = sc.next().charAt(0);
if(c1 == 'u'){
System.out.println("星期二");
} else if(c1 == 'h'){
System.out.println("星期四");
} else {
System.out.println("输入有误!");
}
break;
case 'W':
System.out.println("星期三");
break;
case 'F':
System.out.println("星期五");
break;
case 'S':
char c2 = sc.next().charAt(0);
if(c2 == 'a'){
System.out.println("星期六");
} else if(c2 == 'u'){
System.out.println("星期日");
} else {
System.out.println("输入有误!");
}
break;
default:
System.out.println("输入有误!");
}
}
}
【程序27】
题目:求100之内的素数
public class Demo27{
public static void main(String[] args){
primeNum(100);
}
//求100之内的素数
public static void primeNum(int num){
for (int i = 2; i < num; i++) {
boolean flag = true;
for(int j = 2;j <= Math.sqrt(i);j++){
if(i % j == 0){
flag = false;
break;
}
}
if(flag){
System.out.print(i + "\t");
}
}
}
}
【程序28】
题目:对10个数进行排序
public class Demo28{
public static void main(String[] args){
selSort(1,4,3,6,9,0,2,5,8,7);
}
//题目:对10个数进行排序
public static void selSort(int... a){
for (int i = 0; i < a.length; i++) {
int temp = i; //待定的位置
for (int j = i + 1; j < a.length; j++) {
if(a[j] < a[temp]){
temp = j;
}
}
if(temp != i){
int temp2 = a[i];
a[i] = a[temp];
a[temp] = temp2;
}
}
for(int i = 0;i < a.length;i++){
System.out.print(a[i] + " ");
}
}
}
【程序29】
题目:求一个3*3矩阵对角线元素之和
public class Demo29{
public static void main(String[] args) {
int[][] a = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
System.out.println(add(a));
}
//求一个3*3矩阵对角线元素之和
public static int add(int[][] a){
int sum1 = 0;
int sum2 = 0;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
if(i == j){
sum1 += a[i][j];
}
if(i + j == 2){
sum2 += a[i][j];
}
}
}
return (sum1 + sum2);
}
}
【程序30】
题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
public class Demo30{
public static void main(String[] args) {
int[] a = { 1, 2, 3, 5 };
int[] b = insert(a,4);
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
System.out.println();
System.out.println("-------插入----------");
for (int i = 0; i < b.length; i++) {
System.out.print(b[i] + " ");
}
System.out.println();
System.out.println("-------删除----------");
int[] c = delete(a,1);
for (int i = 0; i < c.length; i++) {
System.out.print(c[i] + " ");
}
}
//有一个已经排好序的数组,插入一个数
public static int[] insert(int[] a,int num){
int[] b = new int[a.length + 1];
if(num > a[a.length - 1]){
b[a.length + 1] = num;
for(int i = 0;i < a.length;i++) {
b[i] = a[i];
}
} else {
for(int i = 0;i < a.length;i++) {
if(num < a[i]){
for(int j = 0;j < i;j++){
b[j] = a[j];
}
for(int k = i;k < a.length;k++){
b[k + 1] = a[k];
}
b[i] = num;
break;
}
}
}
return b;
}
//删除一个数
public static int[] delete(int[] a,int index){
int[] b = new int[a.length - 1];
for (int i = 0; i < a.length; i++) {
if(i < index){
b[i] = a[i];
} else if(i > index){
b[i - 1] = a[i];
}
}
return b;
}
}
【程序31】
题目:将一个数组逆序输出。
public class Demo31{
public static void main(String[] args) {
int[] a = { 1, 2, 3, 4, 5 };
reversed(a);
}
//将一个数组逆序输出。
public static void reversed(int[] a){
for (int i = a.length - 1;i >= 0;i--) {
System.out.print(a[i] + " ");
}
}
}
【程序32】
题目:取一个整数a从右端开始的4~7位。
public class Demo32{
public static void main(String[] args) {
fetch(12345678);
}
//取一个整数a从右端开始的4~7位。
public static void fetch(int num){
String s = "" + num;
char[] c = s.toCharArray();
for (int i = 3; i < 7; i++) {
System.out.print(c[i]);
}
}
}
【程序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 Demo33{
public static void main(String[] args) {
pTriangle(10);
}
//打印出杨辉三角形
public static void pTriangle(int num){
int[][] a= new int[num][num];
for (int i = 0; i < num; i++) {
for(int j = num - i; j > 0; j--){
System.out.print(" ");
}
for(int j = 0; j < i; j++){
if(i == j || j == 0){
a[i][j] = 1;
} else {
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
}
System.out.print(a[i][j] + " ");
}
System.out.println();
}
}
}
【程序34】
题目:输入3个数a,b,c,按大小顺序输出。
public class Demo34{
public static void main(String[] args) {
sort(3, 5, 4);
}
//输入3个数a,b,c,按大小顺序输出。
public static void sort(int... a){
int temp;
for (int i = 0; i < a.length - 1; i++) {
for (int j = 0; j < a.length - 1 - i; j++) {
if(a[j] > a[j + 1]){
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for (int e: a) {
System.out.print(e + "\t");
}
}
}
【程序35】
题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
public class Demo35{
public static void main(String[] args) {
exchange(3, 4, 8, 5, 0, 2);
}
//输入数组,最大的与第一个元素交换,最小的与最后一个元素交换
public static void exchange(int... a){
int indexMax = 0;
int indexMin = 0;
for (int i = 0; i < a.length; i++) {
if(a[indexMax] < a[i]){
indexMax = i;
}
if(a[indexMin] > a[i]){
indexMin = i;
}
}
int temp = a[0];
a[0] = a[indexMax];
a[indexMax] = temp;
int temp2 = a[a.length - 1];
a[a.length - 1] = a[indexMin];
a[indexMin] = temp2;
for (int e: a) {
System.out.print(e + "\t");
}
}
}
【程序36】
题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
public class Demo36{
public static void main(String[] args) {
exchange(1,1, 2, 3, 4);
}
//有n个整数,使其前面各数顺序向后移m个位置
public static void exchange(int m, int... a){
int[] b = new int [a.length];
for (int i = 0; i < m; i++) {
b[i] = a[a.length - m + i];
}
for (int i = m,j = 0; i < a.length; i++,j++) {
b[i] = a[j];
}
for (int e:b) {
System.out.print(e + "\t");
}
}
}
【程序37】
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
import java.util.Scanner;
public class Demo37 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("请输入排成一圈的人数:");
int n = s.nextInt();
boolean[] arr = new boolean[n];
for(int i=0; i<arr.length; i++) {
arr[i] = true;
}
int leftCount = n;
int countNum = 0;
int index = 0;
while(leftCount > 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<n; i++) {
if(arr[i] == true) {
System.out.println("原排在第"+(i+1)+"位的人留下了。");
}
}
}
}
【程序38】
题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
import java.util.Scanner;
public class Demo38{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
System.out.println(length(s));
}
//输出其长度
public static int length(String s){
char[] c = s.toCharArray();
return c.length;
}
}
【程序39】
题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数1/1+1/3+…+1/n(利用指针函数)
public class Demo39{
public static void main(String[] args) {
System.out.println(add(6));
}
//编写一个函数
public static double add(int num){
if(num == 1){
return 1.0;
} else if(num == 2) {
return (double)1 / 2;
} else {
return add(num - 2) + (double)1 / num;
}
}
}
【程序40】
题目:字符串排序。
public class Demo40{
public static void main(String[] args) {
sort("asdf");
}
//字符串排序
public static void sort(String s){
char[] c = s.toCharArray();
for (int i = 0; i < c.length - 1; i++) {
for (int j = 0; j < c.length - 1 -i; j++) {
if(c[j] > c[j + 1]){
char temp = c[j];
c[j] = c[j + 1];
c[j + 1] = temp;
}
}
}
for (int i = 0; i < c.length; i++) {
System.out.print(c[i]);
}
}
}
【程序41】
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
public class Demo41 {
public static void main (String[] args) {
int i,m,j=0,k,count;
for(i=4;i<10000;i+=4)
{ count=0;
m=i;
for(k=0;k<5;k++)
{
j=i/4*5+1;
i=j;
if(j%4==0)
count++;
else break;
}
i=m;
if(count==4)
{System.out.println("原有桃子 "+j+" 个");
break;}
}
}
}
【程序42】
题目:809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
//题目错了!809x=800x+9x+1 这样的方程无解。去掉那个1就有解了。
public class Demo42{
public static void main(String[] args) {
solution();
}
//809*??=800*??+9*??+1
public static void solution(){
int number = 0;
boolean flag = false;
for (int i = 10; i < 100; i++) {
if((809 * i) == (800 * i + 9 * i + 1)){
if ((8 * i < 100) && (9 * i >= 100)){
number = i;
flag =true;
}
}
}
if(flag){
System.out.println(809 * number);
} else {
System.out.println("无解!");
}
}
}
【程序43】
题目:求0—7所能组成的奇数个数。
//组成1位数是4个。
//组成2位数是74个。
//组成3位数是784个。
//组成4位数是7884个。
//…
public class Demo43{
public static void main(String[] args) {
System.out.println(form(3));
}
//求0—7所能组成的奇数个数
public static int form(int num){
if(num == 1){
return 4;
} else if(num == 2){
return form(num - 1) * 7;
} else if(num > 2){
return form(num - 1) * 8;
}
return 0;
}
}
【程序44】
题目:一个偶数总能表示为两个素数之和。
public class Demo44{
public static void main(String[] args) {
guess(10);
}
//一个偶数总能表示为两个素数之和
public static void guess(int num){
for (int i = 2; i <= num / 2; i++) {
if(primeNum(i) && primeNum(num - i)){
System.out.println(num + " = " + i + " + " + (num - i));
}
}
}
//一个偶数总能表示为两个素数之和
public static boolean primeNum(int num){
for (int i = 2; i <= Math.sqrt(num); i++) {
if(num % i == 0){
return false;
}
}
return true;
}
}
【程序45】
题目:判断一个素数能被几个9整除
//题目错了吧?能被9整除的就不是素数了!所以改成整数了。
public class Demo45{
public static void main(String[] args) {
judge(81);
}
//判断一个整数能被几个9整除
public static void judge(int num){
int count = 0;
if(num % 9 != 0){
System.out.println("该数不能被9整除!");
return;
}
while (num >= 9){
num /= 9;
count++;
}
System.out.println(count);
}
}
【程序46】
题目:两个字符串连接程序
public class Demo46{
public static void main(String[] args) {
System.out.println(connect("abc","def"));
}
//两个字符串连接程序
public static String connect(String s1,String s2){
return s1 + s2;
}
}
【程序47】
题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。
import java.util.Random;
public class Demo47{
public static void main(String[] args) {
read(7);
}
//读取7个数(1—50)的整数值
public static void read(int num){
Random r = new Random();
for (int i = 0; i < num; i++) {
print(r.nextInt(50) + 1);
}
}
//打印出该值个数的*
public static void print(int num){
System.out.println(num);
for (int i = 0; i < num; i++) {
System.out.print("*");
}
System.out.println();
}
}
【程序48】
题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
public class Demo48{
public static void main(String[] args) {
System.out.println(encrypt(1234));
}
//加密
public static String encrypt(int num){
String a = (num / 1000 + 5) % 10 + ""; //千位
String b = (num % 1000 / 100 + 5) % 10 + ""; //百位
String c = (num % 100 / 10 + 5) % 10 + ""; //十位
String d = (num % 10 + 5) % 10 + ""; //个位
return d + c + b + a;
}
}
【程序49】
题目:计算字符串中子串出现的次数
import java.util.*;
public class Demo49 {
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();
int count=0;
if(str1.equals("")||str2.equals(""))
{
System.out.println("你没有输入字符串或子串,无法比较!");
System.exit(0);
}
else
{
for(int i=0;i<=str1.length()-str2.length();i++)
{
if(str2.equals(str1.substring(i, str2.length()+i)))
//这种比法有问题,会把"aaa"看成有2个"aa"子串。
count++;
}
System.out.println("子串在字符串中出现: "+count+" 次");
}
}
}
【程序50】
题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,把原有的数据和计算出的平均分数存放在磁盘文件 "stud "中。
import java.io.*;
import java.util.*;
public class Demo50 {
public static void main(String[] args){
Scanner ss = new Scanner(System.in);
String [][] a = new String[5][6];
for(int i=1; i<6; i++) {
System.out.print("请输入第"+i+"个学生的学号:");
a[i-1][0] = ss.nextLine();
System.out.print("请输入第"+i+"个学生的姓名:");
a[i-1][1] = ss.nextLine();
for(int j=1; j<4; j++) {
System.out.print("请输入该学生的第"+j+"个成绩:");
a[i-1][j+1] = ss.nextLine();
}
System.out.println("\n");
}
//以下计算平均分
float avg;
int sum;
for(int i=0; i<5; i++) {
sum=0;
for(int j=2; j<5; j++) {
sum=sum+ Integer.parseInt(a[i][j]);
}
avg= (float)sum/3;
a[i][5]=String.valueOf(avg);
}
//以下写磁盘文件
String s1;
try {
File f = new File("C:\\stud");
if(f.exists()){
System.out.println("文件存在");
}else{
System.out.println("文件不存在,正在创建文件");
f.createNewFile();//不存在则创建
}
BufferedWriter output = new BufferedWriter(new FileWriter(f));
for(int i=0; i<5; i++) {
for(int j=0; j<6; j++) {
s1=a[i][j]+"\r\n";
output.write(s1);
}
}
output.close();
System.out.println("数据已写入c盘文件stud中!");
} catch (Exception e) {
e.printStackTrace();
}
}
}