目录

第一题:兔子问题

1.1题目描述

1.2解题分析

1.3编码实现

第二题:素数问题

2.1题目描述

2.2解题分析

2.3编码实现

第三题:水仙花数题

3.1题目分析

3.2解题分析

3.3编码实现

第四题:正整数分解问题

4.1题目描述

4.2解题分析

4.3编码实现

第五题:成绩问题

5.1题目描述

5.2解题分析

5.3代码实现

第六题:最大最小公倍数问题

6.1题目描述

6.2解题分析

6.3编码实现

第七题:统计字符个数

7.1题目描述

7.2解题分析

7.3编码实现

第八题:累加数问题

8.1题目描述

8.2解题分析

8.3编码实现

9.1题目描述

9.2解题分析

9.3编码实现

第十题:小球弹起问题

10.1题目描述

10.2解题分析

10.3编码实现

第十一题:组合问题

11.1题目描述

11.2解题分析

11.3编码实现

第十二题:企业利润问题

12.1题目描述

12.2解题分析

12.3代码实现

第十三题:完全平方数问题

13.1题目描述

13.2解题分析

13.3编码实现

第十四题:日期问题

14.1题目描述

14.2解题分析

14.3代码实现

第十五题:大小数输出问题

15.1题目描述

15.2解题分析

15.3编码实现

第十六题:输出 9*9 题

16.1题目描述

16.2解题分析

16.3编码实现

第十七题:猴子吃桃问题

17.1题目描述

17.2解题分析

17.3编码实现

第十八题:乒乓球问题

18.1题目描述

18.2解题分析

18.3编码实现

第十九题:菱形问题

19.1题目描述

19.2解题分析

19.3.编码实现

第二十题:分数和

20.1题目描述

20.2解题分析

20.3编码实现

第二十一题:累乘和问题

21.1题目描述

21.2解题分析

21.3编码实现

第二十二题:递归问题

22.1题目描述

22.2解题分析

22.3编码实现

第二十三题:年龄问题

23.1题目描述

23.2解题分析

23.3编码实现

第二十四题:打印数问题

24.1题目描述

24.2解题分析

24.3代码实现

第二十五题:回文数问题

25.1题目描述

25.2解题分析

25.3编码实现

第二十六题:判断星期几题目

26.1题目描述

26.2解题分析

26.3编码实现

第二十七题:素数问题

27.1题目描述

27.2解题分析

27.3编码实现

第二十八题:数排序问题

28.1题目描述

28.2解题分析

28.3编码实现

第二十九题:矩阵问题

29.1题目描述

29.2解题分析

29.3编码实现

第三十题:数组放数问题

30.1题目描述

30.2解题分析

30.3代码实现

第三十一题:数组逆序输出问题

31.1题目描述

31.2解题分析

31.3代码实现

第三十二题:输出整数一些位数问题

32.1题目描述

32.2解题分析

32.3编码实现

第三十三题:杨辉三角形问题

33.1题目描述

33.2解题分析

33.3编码实现

第三十四题:大小数输出问题

34.1题目描述

34.2解题分析

34.3代码实现

第三十五题:数组元素交换问题

35.1题目描述

35.2解题分析

35.3代码实现

第三十六题:数字移动问题

36.1题目描述

36.2解题分析

36.3代码实现

第三十七题:围圈剩人问题

37.1题目描述

37.2解题分析

37.3代码实现

第三十八题:字符串问题

38.1题目描述

38.2解题分析

38.3代码实现

第三十九题:调用函数问题

39.1题目描述

39.2解题分析

39.3代码实现

第四十题:字符串排序问题

40.1题目描述

40.2解题分析

40.3编码实现

第四十一题:猴分桃问题

41.1题目描述

41.2解题分析

41.3编码实现

第四十二题:解方程

42.1题目描述

42.2解题分析

42.3编码实现

第四十三题:求奇数个数问题

43.1题目描述

43.2解题分析

43.3编码实现

第四十四题:偶数表示为奇数和问题

44.1题目描述

44.2解题分析

44.3编码实现

第四十五题:素数整除问题

45.1题目描述

45.2解题分析

45.3代码实现

第四十六题:字符串连接问题

46.1题目描述

46.2解题分析

46.3编码实现

第四十七题:读取并打印问题

47.1题目描述

47.2解题分析

47.3代码实现

第四十八题:电话加密问题

48.1题目描述

48.2解题分析

48.3编码实现

第四十九题:字符串子串问题

49.1题目描述

49.2解题分析

49.3代码实现


第一题:兔子问题

1.1题目描述

题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?

1.2解题分析

兔子的规律为数列 1,1,2,3,5,8,13,21.... 可以发现兔子的增长规律为斐波那契函数:f(n)=f(n-1)+f(n-2),即可设计程序

1.3编码实现

import java.util.Scanner;
​
​
​
public class Demo04{public static void main(String[] args){Scanner sc = new Scanner(System.in);int n = sc.nextInt();System.out.println(" 第"+n+"个月兔子总数为 "+fun(n));}private static int fun(int n){if(n==1 || n==2)return 1;elsereturn fun(n-1)+fun(n-2);}
}

第二题:素数问题

2.1题目描述

判断101-200 之间有多少个素数,并输出所有素数。

2.2解题分析

一个大于1的正整数,如果除了1和它本身以外,不能被其他正整数整除,就叫素数

2.3编码实现

public class SuShu {public static void main(String[] args) {int i,j,count=0; for(i=101;i<=200;i++) {for(j=2;j<=i;j++) {if(i!=j && i%j==0) { break;}if(i==j && i%j==0) { count++; System.out.println(i);}}}System.out.println("101~200之间的素数是"+count+"个");
}
}

第三题:水仙花数题

3.1题目分析

打印出所有的 " 水仙花数 " ,所谓 " 水仙花数 " 是指一个三位数,其各位数字立方和等于该数本身。例 如: 153 是一个 " 水仙花数 " ,因为 153=1 的三次方+ 5 的三次方+ 3 的三次方。

3.2解题分析

利用for循环控制100-999的数,每个数分解出个位,十位,百位。

3.3编码实现

public class Flower {public static void main(String[] args) {int i = 100;          int x, y, z;
​while (i <= 999) {
​x = i % 10;         y = i / 10 % 10;       z = i / 100;
​if (i == x * x * x + y * y * y + z * z * z) {  System.out.println(i);}i++;}}
}

第四题:正整数分解问题

4.1题目描述

将一个正整数分解质因数。例如:输入 90, 打印出 90=233*5 。

4.2解题分析

程序分析:对 n 进行分解质因数,应先找到一个最小的质数 k,然后按下述步骤完成:

(1) 如果这个质数恰等于 n,则说明分解质因数的过程已经结束,打印出即可。

(2) 如果 n<>k,但 n 能被 k 整除,则应打印出 k 的值,并用 n 除以 k 的商 , 作为新的正整数 n, 重复执行第一步。

(3) 如果 n 不能被 k 整除,则用 k+1 作为 k 的值, 重复执行第一步。

4.3编码实现

import java.util.Scanner;
​
public class Num {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();decompose(n);}
​private static void decompose(int n) {for (int i = 2; i < (n + 1); i++) {while (((n % i) == 0) && (n != i)) {n /= i;System.out.print(i + "*");}
​if (n == i) {System.out.println(i);
​break;}}}
}

第五题:成绩问题

5.1题目描述

利用条件运算符的嵌套来完成此题:学习成绩 >=90 分的同学用 A 表示, 60-89 分之间的用 B 表示,60 分以下的用 C表示。

5.2解题分析

(a>b)?a:b 这是条件运算符的基本例子。

5.3代码实现

import java.util.Scanner;
​
public class CJ {public static void main(String[] args) {System.out.println("Please enter the score:");Scanner sc = new Scanner(System.in);int input = sc.nextInt();String result = input >= 90 ? "A" : ((input >= 60 && input < 90) ? "B" : "C");System.out.println(result);}
}

第六题:最大最小公倍数问题

6.1题目描述

输入两个正整数 m 和 n,求其最大公约数和最小公倍数。

6.2解题分析

用俩个方法分别求出最大公约数和最小公倍数

6.3编码实现

package demo03;
​
import java.util.Scanner;
​
public class Test1 {public static void main(String[] args){Scanner in= new Scanner(System.in);System.out.print("请输入第一个数字:");int a = in.nextInt();System.out.print("请输入第二个数字:");int b =in.nextInt();System.out.println("最大公约数是:"+ method(a,b));System.out.println("最小公倍数是:"+ method1(a,b));}
​public static int method(int m, int n){if(m<n){int temp=n;n=m;m=temp;}if(m%n==0){return n;}else{m%=n;return method(m,n);}}
​public static int method1(int p, int s){int i=1;if(p>s){int temp=s;s=p;p=temp;}int method1=p;while (method1%s!=0){method1=p*i;i++;}return  method1;}
​
}

第七题:统计字符个数

7.1题目描述

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

7.2解题分析

通过 scanStr.toCharArray()将字符串变为数组,再进行计算各个字符个数

7.3编码实现

import java.util.Scanner;
​
public class Test2 {public static void main(String[] args){Scanner in = new Scanner(System.in);System.out.println("请输入字符串:");String scanStr = in.nextLine();int countL=0 , countD=0, countS=0,countA=0;char[] scanChar = scanStr.toCharArray();
​
​for(int i=0;i<scanChar.length;i++){if(Character.isLetter(scanChar[i])){countL++;}else if(Character.isDigit(scanChar[i])){countD++;}else if(Character.isSpaceChar(scanChar[i])){countS++;}else {countA++;}}System.out.println();System.out.println("中英文字母个数:"+countL);//汉字也算做了字符System.out.println("数字个数:"+countD);System.out.println("空格个数:"+countS);System.out.println("其他字符个数:"+countA);}
}

第八题:累加数问题

8.1题目描述

求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一个数字。例如 2+22+222+2222+22222(此时共有 5 个数相加 ) ,几个数相加有键盘控制。

8.2解题分析

关键是计算出每一项的值。

8.3编码实现

import java.util.Scanner;
​
public class Test8 {public static void main(String[] args){Scanner sc = new Scanner(System.in);System.out.println("请输入1-9之间的数字:");int shu=sc.nextInt();int a=shu;int sum=0;System.out.println("请输入相加的个数:");int jiShu=sc.nextInt();if (shu>0&&shu<10){System.out.print(shu+"+");for (int i=1;i<jiShu;i++){shu=a+shu*10;sum+=shu;if(i==jiShu-1){System.out.print(shu);}else {System.out.print(shu+"+");}}System.out.println("的值是"+sum+a);}else{System.out.println("请输入1-9之间的数");}
​
​
​}
}
第九题:完数问题

9.1题目描述

一个数如果恰好等于它的因子之和,这个数就称为 " 完数 " 。例如 6=1+2+3. 编程找出 1000 以内的所有完数。

9.2解题分析

找出因数。

9.3编码实现

package demo03;
​
import java.util.Scanner;
​
public class Test9 {public static void main(String[] args){
​for(int i=1;i<=1000;i++){int sum=0;for(int j=1;j<i/2+1;j++){if(i%j==0){sum+=j;}}if (i==sum){System.out.println(i);}}
​}
}

第十题:小球弹起问题

10.1题目描述

一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第 10 次落地时,共经过多少米?第 10 次反弹多高?

10.2解题分析

注意小数和弹起来回距离总和问题。

10.3编码实现

public class Test10 {
​public static void main(String[] args){
​double n =100,s=0;
​
​for(int j =1;j<=10;j++){
​s=s+n+n/2.0;n/=2.0;if(j==10){System.out.println("第十次高度为:"+n);}
​
​}System.out.println("共经过"+(s-n)+"米");
​}
​
}

第十一题:组合问题

11.1题目描述

有 1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

11.2解题分析

注意每个数不一样,三个嵌套循环即可

11.3编码实现

package demo03;
​
public class Test11 {
​public static void main(String[] args){
​int count=0,n =0;
​
​for(int i=1;i<5;i++){
​for(int j=1;j<5;j++){
​if(i==j)
​continue;for(int k=1;k<5;k++){
​if(k!=i && k!=j){
​n=100*i+10*j+k;count++;System.out.print(n+" " );
​
​}
​}
​}
​}
​System.out.println();System.out.println("符合条件的数共:"+count+"个");
​}
​
}

第十二题:企业利润问题

12.1题目描述

企业发放的奖金根据利润提成。利润 (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%提成,从键盘输入当月利润 I ,求应发放奖金总数?

12.2解题分析

I<=10 --> bonus=I10% 10<I<=20 --> bonus=1010%+(I-10)7.5% 20<I<=40 --> bonus=1010%+107.5%+(I-20)5% 40<I<=60 --> bonus=1010%+107.5%+205%+(I-40)3% 60<I<=100 --> bonus=1010%+107.5%+205%+203%+(I-60)1.5% 100<I --> bonus=1010%+107.5%+205%+203%+401.5%+(I-100)*1%

12.3代码实现

import java.util.Scanner;
​
public class Test12 {
​public static void main(String[] args){
​System.out.println("请输入当月利润I:");Scanner sc = new Scanner(System.in);double I = sc.nextInt();double bonus=0;
​if(I<=10){bonus=I*0.1;}else if(10<I && I <=20){bonus=10*0.1+(I-10)*0.075;}else if(20<I && I<=40){bonus=10*0.1+10*0.075+(I-20)*0.05;}else if(40<I && I <=60){bonus=10*0.1+10*0.075+20*0.05+(I-40)*0.03;}else if(60<I && I <=100){bonus=10*0.1+10*0.075+20*0.05+20*0.03+(I-60)*0.015;}else if(I >100){bonus=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(I-100)*0.01;}System.out.println("根据您的输入,当月应得的奖金应为:"+bonus+"万元。");}
​
}

第十三题:完全平方数问题

13.1题目描述

一个整数,它加上100 后是一个完全平方数,再加上168 又是一个完全平方数,请问该数是多少?

13.2解题分析

先将该数加上 100 后再开方,再将该数加上 268 后再开方,如果开方后的结果满足条件,就是结果。

13.3编码实现

public class Test13 {
​public static void main(String[] args){
​for (int i=0;;i++){
​int x=(int)Math.sqrt(i+100);int y=(int)Math.sqrt(i+268);if (i+100==x*x&&i+268==y*y){System.out.println(i);break;}
​}
​}
​
}

第十四题:日期问题

14.1题目描述

输入某年某月某日,判断这一天是这一年的第几天?

14.2解题分析

分离年月日,三种月份的日子

14.3代码实现

import java.util.Scanner;
​
public class Test14 {
​
​public static void main(String[] args){
​int d=0;int day=0;Scanner sc = new Scanner(System.in);System.out.println("请输入年份:");int year = sc.nextInt();if (year<0){System.out.println("输入错误,请重新输入!");System.exit(0);}System.out.println("请输入月份:");int month = sc.nextInt();if (month<0 || month>12){System.out.println("输入错误,请重新输入!");System.exit(0);}
​System.out.println("请输入日:");int days= sc.nextInt();
​if(day<=0 ||day>31){System.out.println("输入错误,请重新输入!");System.exit(0);}
​
​for (int i=1;i<=month;i++){switch(i){
​case 1:case 3:case 5:case 7:case 8:case 10:case 12:day=31;break;case 4:case 6:case 9:case 11:day = 30;break;case 2:if((year%400==0)||(year%4==0&&year%100!=0)){day = 29;}else{day=28;}break;}d+=day;
​
​}System.out.println(year+"年"+month+"月"+day+"日是当年的第"+(d+day) +"天。");
​}
​}

第十五题:大小数输出问题

15.1题目描述

输入三个整数 x,y,z ,请把这三个数由小到大输出。

15.2解题分析

我们想办法把最小的数放到 x 上,先将 x 与 y 进行比较,如果 x>y 则将 x 与 y 的值进行交换,然后再用 x 与 z 进行比较,如果 x>z 则将 x 与 z 的值进行交换,这样能使 x 最小。

15.3编码实现

​
import java.util.Scanner;
​
public class Test15 {
​public static void main(String[] args){
​Scanner sc = new Scanner(System.in);System.out.print("请输入x的值:");int x = sc.nextInt();System.out.print("请输入y的值:");int y = sc.nextInt();System.out.print("请输入z的值:");int z = sc.nextInt();
​if (x>z){int temp=0;temp = x;x=z;z=temp;
​}
​if (x>y){int temp=0;temp = x;x = y;y= temp;}
​if (y>z){int temp = 0;temp = y;y = z;z = temp;}System.out.println("这三个数排序为:"+x+" "+y+" "+z);
​}
​
}

第十六题:输出 9*9 题

16.1题目描述

输出 9*9 口诀。

16.2解题分析

考虑分行与列,共 9 行 9 列, i 控制行, j 控制列。

16.3编码实现

​
public class Test16 {
​public static void main(String[] main){
​for (int i =1;i<=9;i++){for (int j=1; j<=i;j++){
​System.out.print(j+"*"+i+"="+i*j+" ");
​}
​System.out.println(" ");
​}
​}
​
}

第十七题:猴子吃桃问题

17.1题目描述

猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半, 又多吃了一个。 以后每天早上都吃了前一天剩下的一半零一个。 到第 10 天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

17.2解题分析

反着推

17.3编码实现

package demo03;
​
public class Test17 {
​public static void main(String[] args) {int x = 1;for (int i = 1; i < 10; i++) {x = 2 * (x + 1);}System.out.println(x);}
​
}

第十八题:乒乓球问题

18.1题目描述

两个乒乓球队进行比赛,各出三人。甲队为 a,b,c 三人,乙队为 x,y,z 三人。已抽签决定比赛名单。有人向队员打听比赛的名单。 a 说他不和 x 比, c 说他不和 x,z 比,请编程序找出三队赛手的名单。

18.2解题分析

排除题目给出的情况,剩下的即为答案

18.3编码实现

public class Test18 {
​public static void main(String[] args){
​
​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.1题目描述

打印出如下图案(菱形)

19.2解题分析

先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for 循环,第一层控制行,第二层控制列。

19.3.编码实现

public class Test19 {public static void main(String[] args) {for (int i = 1; i <= 4; i++) {for (int x = 1; x <= 4 - i; x++) {System.out.print(" ");}for (int j = 1; j <= 2 * i - 1; j++) {System.out.print("*");}System.out.println();}for (int i = 3; i >= 0; i--) {for (int x = 1; x <= 4 - i; x++) {System.out.print(" ");}for (int j = 1; j <= 2 * i - 1; j++) {System.out.print("*");}System.out.println();}}}

第二十题:分数和

20.1题目描述

有一分数序列: 2/1 ,3/2 ,5/3 ,8/5 ,13/8 ,21/13... 求出这个数列的前 20 项之和。

20.2解题分析

找出分子与分母的变化规律。

20.3编码实现

​public class Test20 {
​public static void main(String[] args){
​
​double s=0;double x=1;double y=2;
​
​for(double n =1;n<=20;n++){
​
​s+=y/x;double temp = 0;temp = y;y=x+y;x=temp;
​}System.out.println("该数列前20项和为:" +s );
​
​}
​
}

第二十一题:累乘和问题

21.1题目描述

求 1+2!+3!+...+20! 的和

21.2解题分析

分解每个累乘再相加

21.3编码实现

public class Test21 {
​public static void main(String[] args){
​int n = 1;long s = 0,m = 1;for(int i=1;i<=20;i++){
​m=i*m;s+=m;
​}
​System.out.println("1+2!+3!+..+20!和为:"+ s);
​}
​
}

第二十二题:递归问题

22.1题目描述

利用递归方法求 5! 。

22.2解题分析

程序调用自身的编程技巧称为递归。

22.3编码实现

import java.util.Scanner;
​
public class Test22 {
​public static void main(String[] args){
​Scanner sc = new Scanner(System.in);System.out.print("请输入num值:");int num = sc.nextInt();
​int n = factory(num);System.out.println("num!的值为:"+n);
​}
​public static int factory(int i){
​if (i==1){return i;}else {
​return (i*factory(i-1));
​}
​}
​
}

第二十三题:年龄问题

23.1题目描述

有 5 个人坐在一起,问第五个人多少岁?他说比第 4 个人大 2 岁。问第 4 个人岁数,他说比第 3 个人大 2 岁。问第三个人,又说比第 2人大两岁。问第 2 个人,说比第一个人大两岁。最后问第一个人,他说是 10 岁。请问第五个人多大?

23.2解题分析

利用逆向思维加递归算法

23.3编码实现

public class Test23 {
​public static void main(String[] args){
​
​int age = method(5,2);System.out.println("第五个人的年龄为:"+ age);
​}
​public static int method(int a,int b){
​if(a == 1){
​return 10;
​}else {
​
​return (method(a-1,b)+b);
​
​}
​}
​
}

第二十四题:打印数问题

24.1题目描述

给一个不多于 5 位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

24.2解题分析

先用字符函数把它变成字符,然后放入数组逆向输出

24.3代码实现

import java.util.Scanner;
​
public class Test24 {
​public static void main(String[] args){
​Scanner sc = new Scanner(System.in);System.out.println("请输入一个不多余5位的正整数:");int  num = sc.nextInt();if (num>=100000 || num<=0){
​System.out.println("您输入有误,请重新输入!");
​System.exit(0);}
​String str = String.valueOf(num);System.out.println("它的位数为:"+str.length());char[] numS = str.toCharArray();for (int i = str.length()-1;i>=0;i--){System.out.print(numS[i]+" ");}
​}
​
}

第二十五题:回文数问题

25.1题目描述

一个 5 位数,判断它是不是回文数。即 12321 是回文数,个位与万位相同,十位与千位相同。

25.2解题分析

先变成字符,再放入数组,看04和13相同判断是否为回文数

25.3编码实现

import java.util.Scanner;
​
public class Test25 {
​public static void main(String[] args){
​Scanner sc = new Scanner(System.in);System.out.println("请输入要判断的数:");int num = sc.nextInt();if(num<10000 || num >=100000){System.out.println("您输入有误,请重新输入!");System.exit(0);}
​String str = String.valueOf(num);char[] numS = str.toCharArray();
​if(numS[0]==numS[4] && numS[1]==numS[3]){
​System.out.println("该数是回文数。");
​}else{
​System.out.println("该数不是回文数。");
​}
​}
​
}

第二十六题:判断星期几题目

26.1题目描述

请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

26.2解题分析

字符全变为大写或者小写,然后swith依次判断

26.3编码实现

import java.util.Scanner;
​
public class Test26 {
​public static void main(String[] args){
​Scanner scanner = new Scanner(System.in);System.out.println("请输入星期的首字母(不区分大小写):");String str1 = scanner.nextLine().toUpperCase();
​switch (str1) {case "M":System.out.println("Monday");break;case "T":System.out.println("请输入星期的次字母(不区分大小写):");String str2 = scanner.nextLine().toUpperCase();if (str2.equals("U")) {System.out.println("Tuesday");} else if (str2.equals("H")) {System.out.println("Thursday");} else {System.out.println("您输入的数据有误!");}break;case "W":System.out.println("Wednesday");break;case "F":System.out.println("Friday");break;case "S":System.out.println("请输入星期的次字母(不区分大小写):");String str3 = scanner.nextLine().toUpperCase();if (str3.equals("U")) {System.out.println("Sunday");} else if (str3.equals("A")) {System.out.println("Saturday");} else {System.out.println("您输入的数据有误!");}break;default:System.out.println("您输入的数据有误!");
​}
​}
}

第二十七题:素数问题

27.1题目描述

求100以内的素数

27.2解题分析

设置判断条件,如果可以整除就改变条件值,最后依旧判断条件输出。

27.3编码实现

public class Test27 {
​public static void main(String[] args) {
​
​for (int n = 2; n <= 100; n++) {int m = 0;
​for (int i = 2; i < n; i++) {
​if ((n % i) == 0) {
​m = 1;
​}}if (m == 0) {
​System.out.print(n + " ");
​}
​}
​}
}

第二十八题:数排序问题

28.1题目描述

对 10 个数进行排序

28.2解题分析

冒泡法

28.3编码实现

import java.util.Scanner;
​
public class Test28 {
​public static void main(String[] args){
​
​int[] a  = new int[10];Scanner sc = new Scanner(System.in);for(int i = 0;i<10;i++ ){
​System.out.print("请输入第"+i+"数:");
​a[i]=sc.nextInt();
​
​}
​for(int m=0;m<a.length-1;m++){
​for(int n=0;n<a.length-1-m;n++)if (a[n] > a[n + 1]) {int temp = a[n];a[n] = a[n + 1];a[n + 1] = temp;}
​}System.out.println("从小到大排序后的结果是:");for(int k=0;k<a.length;k++)System.out.print(a[k]+" ");
​
​}
​
}

第二十九题:矩阵问题

29.1题目描述

求一个 3*3 矩阵对角线元素之和

29.2解题分析

构造二维数组,用循环把各个点上的数相加

29.3编码实现

package demo03;
​
import java.util.Scanner;
​
public class Test29 {
​public static void main(String[] args){
​int[][] arr = new int[3][3];int sum = 0;Scanner console = new Scanner(System.in);for(int i = 0; i < 3; i++){for(int j = 0; j < 3; j++){arr[i][j] = console.nextInt();if(i == j)sum += arr[i][j];if((i == 0 && j ==2) || (i == 2 && j == 0))sum += arr[i][j];}}System.out.println("对角线元素和为:"+sum);
​
​}
​
}

第三十题:数组放数问题

30.1题目描述

有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

30.2解题分析

先定义数组,再扩大随便放入要插入的数,再全体排序

30.3代码实现

​import java.util.Arrays;
import java.util.Scanner;
​
public class Test30 {
​public static void main(String[] args) {int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };System.out.print("定义的数组为:");for (int i = 0; i < array.length; i++) {System.out.print(array[i] + " ");}System.out.println();Scanner sc = new Scanner(System.in);System.out.print("请输入一个数:");int addNumber = sc.nextInt();array = Arrays.copyOf(array, array.length + 1);array[array.length - 1] = addNumber; int i = 0;if (array[i] <= array[array.length - 2]) {Arrays.sort(array);System.out.print("插入一个数后的数组为:");for (i = 0; i < array.length; i++) {System.out.print(array[i] + " ");}} else {Arrays.sort(array);System.out.print("插入一个数后的数组为:");for (i = array.length - 1; i >= 0; i--) {System.out.print(array[i] + " ");}}}
​
}

第三十一题:数组逆序输出问题

31.1题目描述

将一个数组逆序输出。

31.2解题分析

建立一个数组,逆向遍历输出

31.3代码实现

package demo03;
​
import java.util.Scanner;
​
public class Test31 {
​public static void main(String[] args) {
​
​int[] a = new int[5];Scanner sc = new Scanner(System.in);for(int i = 0;i<5;i++ ){
​System.out.print("请输入第"+i+"数:");
​a[i]=sc.nextInt();
​
​}method(a);
​
​}
​public  static void method(int[] b){
​for (int i=b.length-1;i>=0;i--){
​System.out.print(b[i]+" ");
​}
​}
​
}

第三十二题:输出整数一些位数问题

32.1题目描述

取一个整数 a 从右端开始的 4~7 位。

32.2解题分析

输入数字转化成字符,再转化为数组,即可方便输出所需数

32.3编码实现

import java.util.Scanner;
​
public class Test32 {
​public static void main(String[] args) {
​Scanner sc = new Scanner(System.in);System.out.println("请输入一个大于等于七位的整数:");long num = sc.nextInt();String ss = String.valueOf(num);char[] ch = ss.toCharArray();int b = ch.length;if (b<7){System.out.println("输入错误!");}else {System.out.println("截取从右端开始的4~7位是:"+ch[b-7]+ch[b-6]+ch[b-5]+ch[b-4]);}
​
​}
​
}

第三十三题:杨辉三角形问题

33.1题目描述

打印出杨辉三角形(要求打印出 10 行如下图)

33.2解题分析

创建一个二维数组,只输出杨辉三角的数字

33.3编码实现

import java.util.Scanner;
​
public class Test33 {
​public static void main(String[] args) {
​
​//定义了一个长度为10,高度为10的二维数组,数组中的值都为0;int[][] arr=new int[10][10];for(int i=0;i<arr.length; i++) {//由于只是给杨辉三角内的位置赋值,所以是j<=ifor(int j=0;j<=i;j++) {//根据规律,使用if else 赋值if(j==0||j==i) {arr[i][j]=1;}else {arr[i][j]=arr[i-1][j-1]+arr[i-1][j];}/*由于只是输出杨辉三角范围内的值,所以在内层循环就输出,这种方法不能全部赋值完之后再输出"\t"的原因是10和小于10的数组的宽度不同,所以使用\t制表符能使数与数之间距离相等*/System.out.print(arr[i][j]+"\t");}System.out.println();}
​}
​
}

第三十四题:大小数输出问题

34.1题目描述

输入 3 个数 a,b,c ,按大小顺序输出。

34.2解题分析

分别比较一下即可

34.3代码实现

import java.util.Scanner;
​
public class Test34 {
​public static void main(String[] args) {
​Scanner sc = new Scanner(System.in);System.out.print("请输入第一个数:");int a = sc.nextInt();System.out.print("请输入第二个数:");int b = sc.nextInt();System.out.print("请输入第三个数:");int c = sc.nextInt();
​
​if(a<b){int t = a;a = b;b = t;}if(a<c){int t = a;a = c;c = t;}if(b<c){int t = b;b = c;c = t;}
​System.out.println("三数从大到小输出为:" + a+" " + b + " " + c);}
​
}

第三十五题:数组元素交换问题

35.1题目描述

输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

35.2解题分析

定义俩变量,遍历数组,最大的给一个,最小的给一个,改变数组值即可

35.3代码实现

import java.util.Scanner;
​
public class Test35 {
​public static void main(String[] args) {
​Scanner a = new Scanner(System.in);System.out.print("请输入数组长度:");int q = a.nextInt();int max = 0;int min = 0;int[] b = new int[q];
​for(int c = 0;c<q;c++){System.out.print("请输入数组的第"+(c+1)+"个元素:");int d = a.nextInt();//b[c] = d;}for(int e = 0;e<b.length;e++){if(b[e]>b[min]){min=e;}else if(b[max]>b[e]){max=e;}}
​int f = b[0];b[0] = b[min];b[min] = f;
​
​int g= b[q-1];b[q-1] = b[max];b[max] = g;for(int h = 0;h<b.length;h++){System.out.print(b[h]+" ");}
​}
​

第三十六题:数字移动问题

36.1题目描述

有 n 个整数,使其前面各数顺序向后移 m个位置,最后 m个数变成最前面的 m个数

36.2解题分析

放进一个数组,会移到最前的老数组的数放在一个新数组,然后向后移动,再把新数组得数放进老数组

36.3代码实现

import java.util.Scanner;
​
public class Test36 {
​public static void main(String[] args) {int array[];System.out.print("请输入整数的个数:");Scanner sc=new Scanner(System.in);int  n=sc.nextInt();array = new int[n];for (int i = 0; i < n; i++) {System.out.print("输入第" + (i + 1) + "个数据:");array[i] = sc.nextInt();}System.out.print("你输入的数组为:");for(int i=0;i<n;i++) {System.out.print(array[i] + " ");}System.out.print("\n请输入向后移动的位数:");int m = sc.nextInt();int[] b = new int[m];for(int i=0; i<m; i++) {b[i] = array[n-m+i];}for(int i=n-1; i>=m; i--) {array[i] = array[i-m];}for(int i=0; i<m; i++) {array[i] = b[i];}System.out.print("位移后的数组是:");for(int i=0; i<n; i++) {System.out.print(array[i] + " ");}}
}

第三十七题:围圈剩人问题

37.1题目描述

有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子,问最后留下的是原来第几号的那位。

37.2解题分析

给每个人状态值,走的人改变状态值,状态值为初始值的时候变量加1,加到3的人状态值改变,剩下的状态值没变的即是答案

37.3代码实现

import java.util.Scanner;
​
public class Test37 {
​public static void main(String[] args) {
​Scanner sc = new Scanner(System.in);System.out.print("请输入数字个数:");int n = sc.nextInt();int[] arr = new int[n];for (int i = 0; i <arr.length; i++) {arr[i] = 1;}method(arr);//方法执行后,此时这个圈子只剩下一个人了for (int i = 0; i < arr.length; i++) {if(arr[i]==1){System.out.println("第"+(i+1)+"人剩下");}}}
​
​public static void method(int[] arr) {int count = 0;//循环三个计数int x=arr.length;//标识1的总数int i=0;    //数组角标while(x>1){if(arr[i]==1){count++;}
​if(count==3){arr[i]=0;//遇到数3的人了,退出圈子,标识立马变为0x--;    //标记为1的人数少一个count=0;//计数器归零,重新计数}
​if(i==arr.length-1){i=-1;}
​i++;//让人动起来}
​
​}
​
}

第三十八题:字符串问题

38.1题目描述

写一个函数,求一个字符串的长度,在 main 函数中输入字符串,并输出其长度。

38.2解题分析

放入一个数组即可

38.3代码实现

import java.util.Scanner;
​
public class Test38 {
​public static void main(String[] args) {
​Scanner sc = new Scanner(System.in);System.out.print("请输入一个字符:");String str = sc.nextLine();
​char[] ch = str.toCharArray();System.out.println("该字符长度为:"+(ch.length));
​}
​
}

第三十九题:调用函数问题

39.1题目描述

编写一个函数,输入 n 为偶数时,调用函数求 1/2+1/4+...+1/n, 当输入 n 为奇数时,调用函数1/1+1/3+...+1/n( 利用指针函数 )

39.2解题分析

写俩函数调用一下即可,注意数值类型

39.3代码实现

import java.util.Scanner;
​
public class Test39 {
​public static void main(String[] args) {
​Scanner sc = new Scanner(System.in);System.out.print("请输入n的值:");int n = sc.nextInt();
​if(n%2==0){System.out.println("结果:"+method(n));}else {System.out.println("结果:"+method1(n));}
​}
​
​static double method(int m){
​double sum = 0;for(int i=2 ; i<=m;i+=2){
​sum+=1.0/(2*i);
​}return sum;
​}
​static double method1(int m){double sum = 0;for(int i=1 ; i<m+1;i+=2){
​sum+=1.0/(i);
​}return sum;
​}
​
}

第四十题:字符串排序问题

40.1题目描述

字符串排序

40.2解题分析

比较对应位置字母的ASCII码值的大小

40.3编码实现

public class Test40 {
​public static void main(String[] args) {
​String[] input=new String[] {"tmc","aPad","apache","niHao","niHaoA"};String[] output=arraySort(input);for (String out:output) {System.out.println(out);}}
​public static String[] arraySort(String[] input){for (int i=0;i<input.length-1;i++){for (int j=0;j<input.length-i-1;j++) {if(isBiggerThan(input[j],input[j+1])){String temp=input[j];input[j]=input[j+1];input[j+1]=temp;}}}return input;}
​
​private static boolean isBiggerThan(String first, String second){if(first==null||second==null||"".equals(first) || "".equals(second)){System.out.println("字符串不能为空!");return false;}char[] arrayFirst=first.toCharArray();char[] arraySecond=second.toCharArray();int minSize = Math.min(arrayFirst.length, arraySecond.length);for (int i=0;i<minSize;i++) {if((int)arrayFirst[i]>(int)arraySecond[i]){return true;}else if((int)arrayFirst[i] < (int)arraySecond[i]){return false;}}if(arrayFirst.length>arraySecond.length){return true;}else {return false;}
​}
​
}

第四十一题:猴分桃问题

41.1题目描述

海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

41.2解题分析

倒着推

41.3编码实现

public class Test41 {
​public static void main(String[] args) {
​int n;n = fun(0);System.out.println(" 原来有 "+n+" 个桃子 ");}private static int fun(int i){if(i==5)return 1;elsereturn fun(i+1)*5+1;}}

第四十二题:解方程

42.1题目描述

809??=800??+9*??+1

42.2解题分析

编个解方程式子,给个取值范围

42.3编码实现

public class Test42 {
​public static void main(String[] args) {
​int n = 0;boolean flag = false;for (int i = 10; i < 100; i++) {if (809 * i == 800 * i + 9 * i + 1) {flag = true;n = i;break;}}
​if (flag) {System.out.println(n);}else{System.out.println(" 无符合要求的数! ");}​}
}

第四十三题:求奇数个数问题

43.1题目描述

求 0—7 所能组成的奇数个数。

43.2解题分析

暴力求解

43.3编码实现

class Odd07 {
​public static int oddNum(int num) {int sum = 0;for (int i = 1; i <= num + 1; i++) {if (i == 1) {sum += (num + 1) / 2;} else if (i == 2) {sum += (num - 1) * (num + 1) / 2;} else {int multi = (num - 1) * (num + 1) / 2;for (int j = num - 1; j > num - i + 1; j--) {multi *= j;}sum += multi;}}return sum;}
​public static void main(String[] args) {System.out.println(oddNum(7));}
}

第四十四题:偶数表示为奇数和问题

44.1题目描述

一个偶数总能表示为两个素数之和。

44.2解题分析

除了2的素数都是奇数,俩奇数和为偶数

44.3编码实现

import java.util.Scanner;
​
public class Test44 {
​public static void main(String[] args) {System.out.print(" 请输入一个偶数: ");Scanner scan = new Scanner(System.in);int n = scan.nextInt();scan.close();if(n%2!=0){System.out.println(" 您输入的不是偶数! ");return;}twoAdd(n);}
// 偶数分解为素数之和private static void twoAdd(int n){for(int i=2;i<n/2+1;i++){if(isPrime(i)&&isPrime(n-i)){System.out.println(n+"="+(i)+"+"+(n-i));break;}}}
// 判断素数private static boolean isPrime(int m){boolean flag = true;for(int i=2;i<Math.sqrt(m)+1;i++){if(m%i==0){flag = false;break;}}return flag;
​}
​
}

第四十五题:素数整除问题

45.1题目描述

判断一个素数能被几个 9 整除

45.2解题分析

输入素数除9

45.3代码实现

import java.util.Scanner;
​
public class Test45 {
​public static void main(String[] args) {System.out.print("请输入一个数:");Scanner scan = new Scanner(System.in);long l = scan.nextLong();long n = l;scan.close();int count = 0;while (n > 8) {n /= 9;count++;}System.out.println(l + "能被" + count + "个9整除。");}
​
​
}

第四十六题:字符串连接问题

46.1题目描述

俩个字符串连接程序

46.2解题分析

直接➕

46.3编码实现

public class Test46 {
​public static void main(String[] args){String str1 = "guoYang";String str2 = " 老司机 ";String str = str1+str2;System.out.println(str);}}

第四十七题:读取并打印问题

47.1题目描述

读取 7 个数( 1—50)的整数值,每读取一个值,程序打印出该值个数的*。

47.2解题分析

输入数组,for循环输出星号

47.3代码实现

import java.util.Scanner;
​
public class Test47 {
​public static void main(String[] args){System.out.print(" 请输入 7 个整数 (1-50) :");Scanner scan = new Scanner(System.in);int n1 = scan.nextInt();int n2 = scan.nextInt();int n3 = scan.nextInt();int n4 = scan.nextInt();int n5 = scan.nextInt();int n6 = scan.nextInt();int n7 = scan.nextInt();scan.close();printStar(n1);printStar(n2);printStar(n3);printStar(n4);printStar(n5);printStar(n6);printStar(n7);}static void printStar(int m){System.out.println(m);for(int i=0;i<m;i++)System.out.print("*");System.out.println();}
​
}

第四十八题:电话加密问题

48.1题目描述

某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每

位数字都加上 5, 然后用和除以 10 的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。

48.2解题分析

用数组

48.3编码实现

public class Test48 {
​public static void main(String[] args){int n = 1234;int[] a = new int[4];for(int i=3;i>=0;i--){a[i] = n%10;n /= 10;}for(int i=0;i<4;i++)System.out.print(a[i]);System.out.println();for(int i=0;i<a.length;i++){a[i] += 5;a[i] %= 10;}int temp1 = a[0];a[0] = a[3];a[3] = temp1;int temp2 = a[1];a[1] = a[2];a[2] = temp2;for(int i=0;i<a.length;i++)System.out.print(a[i]);}
​
​
​

第四十九题:字符串子串问题

49.1题目描述

计算字符串中子串出现的次数

49.2解题分析

字符串放进数组,分别比较asiii值

49.3代码实现

public class Test49 {
​public static void main(String[] args){String str = "I come from County WuHu Province AnHui.";char[] ch = str.toCharArray();int count = 0;for(int i=0;i<ch.length;i++){if(ch[i]==' ')count++;}count++;System.out.println(" 共有 "+count+" 个字串 ");}
​
}

java基础笔试题(50题)相关推荐

  1. Java基础编程练习50题(转载)

    JAVA基础编程练习50题 本文对50道经典的java程序题进行详细解说,对于初学者可以跳过一些逻辑性太强的题目,比如第一题用到了方法的递归,初学者可能不理解,最好先看那些有if.for.while可 ...

  2. Java进阶篇(六)——Swing程序设计(上),java面试题,java基础笔试题,BAT

    写在最前面,我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家.扫码加微信好友进[程序员面试学习交流群],免费领取.也欢迎各位一起在群里探讨技术. Sw ...

  3. Java基础笔试题干货

    Java基础方面: 1.作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域           当前类       同一package  子孙类      ...

  4. Java序列化机制原理,java面试题,java基础笔试题,BAT

    写在最前面,我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家.扫码加微信好友进[程序员面试学习交流群],免费领取.也欢迎各位一起在群里探讨技术. Ja ...

  5. 常见Java基础笔试题之二

    1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"?  Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字 ...

  6. java面试笔试题50道及答案

    [程序1]    题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? //这是一个菲波拉契数列问题 p ...

  7. java 基础 笔试题_非常全面的java基础笔试题

    1.下列说法正确的是() (程序结构) A java程序的main方法必须写在类甩面 B java程序中可以有多个main方法 C.java程序中类名必须与文件名一样 D.JAVA程序的main方法中 ...

  8. Java基础笔试题(五)

    线程同步的方式 为何要使用同步? java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成 ...

  9. java基础笔试题一

    Java填空题 已知代码,最后输出结果a的值为__21____, b的值为______39____ Int a = 10; int b = 20; If(a++ >10 || --b<20 ...

  10. 冒死潜入某个外包公司获得的珍贵Java基础笔试题(附答案)

    前言 大家好,我是程序员manor,上次货拉拉面试太打击心情,于是我决定找些小boss打打让自己愉悦起来,于是就有了下面

最新文章

  1. CTFHUB HTTP请求方式 HTTP 请求方法, HTTP/1.1协议中共定义了八种方法(也叫动作)来以不同方式操作指定的资源。
  2. 参加拥抱HTML5大会及TOPGEEK社区活动纪实
  3. 业界 | 每天1.4亿小时观看时长,Netflix怎样存储这些时间序列数据?
  4. php公用一个尾部,19.2 共用显示部分 - 19.2.2 共用尾部页面 - 《零基础学PHP+MySQL (零基础学编程)》 - D云...
  5. windows 7安装sql server2005以及com (-1073737712错误)+ 8004e00f错误
  6. 最长回文子序列(算法导论15-2
  7. 网络 IPC 套接字socket
  8. 【Day12】整个前端性能提升大致分几类
  9. 【声传播】——球面波的反射
  10. jQuery 的第一个例子
  11. 在线qmc0转换mp3工具_音乐格式转换
  12. 最简单的Qt配置opencv教程
  13. python知识图谱构建
  14. uni-app 简介
  15. 「环卫吸粪车」天河区抽化粪池抽泥浆抽污水来了,解决黑臭水体!
  16. 瑞吉外卖项目(一)软件开发流程设计及环境搭建
  17. 我的世界科学计算机,在我的世界打造一台计算机有多难?复旦大神花了一年
  18. Xrm.Utility.openEntityForm 时404.15 maxQueryString 错误 和 长度超过maxQueryStringLength值 错误
  19. GDR(Gradual Decoder Refresh)帧
  20. Minecraft服务器搭建(官方服务器端)

热门文章

  1. APP测试点总结(表格形式)
  2. 某大型连锁超市库存管理系统分析报告
  3. c语言erf函数,c/c++开发分享精确计算缩放互补误差函数,erfcx()
  4. mysql绿化,Mysql精简与绿化版本
  5. adobe 不适应 Max to分屏软件的修改
  6. Python爬虫系列(二)——Python爬虫批量下载百度图片
  7. class文件反编译后的汉字乱码问题
  8. 母亲节第二期|有哪些母亲节祝福贺卡的素材灵感来源?
  9. 跨过野蛮生长的直播电商下一步该走向何方?
  10. ESP8266通过VS1838B 解码红外遥控器