目录
第一题:兔子问题
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代码实现
题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
兔子的规律为数列 1,1,2,3,5,8,13,21.... 可以发现兔子的增长规律为斐波那契函数:f(n)=f(n-1)+f(n-2),即可设计程序
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;
else
return fun(n-1)+fun(n-2);
}
}
判断101-200 之间有多少个素数,并输出所有素数。
一个大于1的正整数,如果除了1和它本身以外,不能被其他正整数整除,就叫素数
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+"个");
}
}
打印出所有的 " 水仙花数 " ,所谓 " 水仙花数 " 是指一个三位数,其各位数字立方和等于该数本身。例 如: 153 是一个 " 水仙花数 " ,因为 153=1 的三次方+ 5 的三次方+ 3 的三次方。
利用for循环控制100-999的数,每个数分解出个位,十位,百位。
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++;
}
}
}
将一个正整数分解质因数。例如:输入 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 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;
}
}
}
}
利用条件运算符的嵌套来完成此题:学习成绩 >=90 分的同学用 A 表示, 60-89 分之间的用 B 表示,60 分以下的用 C表示。
(a>b)?a:b 这是条件运算符的基本例子。
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);
}
}
输入两个正整数 m 和 n,求其最大公约数和最小公倍数。
用俩个方法分别求出最大公约数和最小公倍数
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(ms){
int temp=s;
s=p;
p=temp;
}
int method1=p;
while (method1%s!=0){
method1=p*i;
i++;
}
return method1;
}
}
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
通过 scanStr.toCharArray()将字符串变为数组,再进行计算各个字符个数
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
求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一个数字。例如 2+22+222+2222+22222(此时共有 5 个数相加 ) ,几个数相加有键盘控制。
关键是计算出每一项的值。
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
一个数如果恰好等于它的因子之和,这个数就称为 " 完数 " 。例如 6=1+2+3. 编程找出 1000 以内的所有完数。
找出因数。
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
一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第 10 次落地时,共经过多少米?第 10 次反弹多高?
注意小数和弹起来回距离总和问题。
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)+"米");
}
}
有 1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
注意每个数不一样,三个嵌套循环即可
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+"个");
}
}
企业发放的奖金根据利润提成。利润 (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 ,求应发放奖金总数?
I<=10 --> bonus=I10% 10 bonus=1010%+(I-10)7.5% 20 bonus=1010%+107.5%+(I-20)5% 40 bonus=1010%+107.5%+205%+(I-40)3% 60 bonus=1010%+107.5%+205%+203%+(I-60)1.5% 100 bonus=1010%+107.5%+205%+203%+401.5%+(I-100)*1%
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(10100){
bonus=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(I-100)*0.01;
}
System.out.println("根据您的输入,当月应得的奖金应为:"+bonus+"万元。");
}
}
一个整数,它加上100 后是一个完全平方数,再加上168 又是一个完全平方数,请问该数是多少?
先将该数加上 100 后再开方,再将该数加上 268 后再开方,如果开方后的结果满足条件,就是结果。
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;
}
}
}
}
输入某年某月某日,判断这一天是这一年的第几天?
分离年月日,三种月份的日子
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) +"天。");
}
}
输入三个整数 x,y,z ,请把这三个数由小到大输出。
我们想办法把最小的数放到 x 上,先将 x 与 y 进行比较,如果 x>y 则将 x 与 y 的值进行交换,然后再用 x 与 z 进行比较,如果 x>z 则将 x 与 z 的值进行交换,这样能使 x 最小。
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 口诀。
考虑分行与列,共 9 行 9 列, i 控制行, j 控制列。
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(" ");
}
}
}
猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半, 又多吃了一个。 以后每天早上都吃了前一天剩下的一半零一个。 到第 10 天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
反着推
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);
}
}
两个乒乓球队进行比赛,各出三人。甲队为 a,b,c 三人,乙队为 x,y,z 三人。已抽签决定比赛名单。有人向队员打听比赛的名单。 a 说他不和 x 比, c 说他不和 x,z 比,请编程序找出三队赛手的名单。
排除题目给出的情况,剩下的即为答案
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);
}
}
}
}
}
}
打印出如下图案(菱形)
先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for 循环,第一层控制行,第二层控制列。
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();
}
}
}
有一分数序列: 2/1 ,3/2 ,5/3 ,8/5 ,13/8 ,21/13... 求出这个数列的前 20 项之和。
找出分子与分母的变化规律。
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 );
}
}
求 1+2!+3!+...+20! 的和
分解每个累乘再相加
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);
}
}
利用递归方法求 5! 。
程序调用自身的编程技巧称为递归。
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));
}
}
}
有 5 个人坐在一起,问第五个人多少岁?他说比第 4 个人大 2 岁。问第 4 个人岁数,他说比第 3 个人大 2 岁。问第三个人,又说比第 2人大两岁。问第 2 个人,说比第一个人大两岁。最后问第一个人,他说是 10 岁。请问第五个人多大?
利用逆向思维加递归算法
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);
}
}
}
给一个不多于 5 位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
先用字符函数把它变成字符,然后放入数组逆向输出
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]+" ");
}
}
}
一个 5 位数,判断它是不是回文数。即 12321 是回文数,个位与万位相同,十位与千位相同。
先变成字符,再放入数组,看04和13相同判断是否为回文数
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("该数不是回文数。");
}
}
}
请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
字符全变为大写或者小写,然后swith依次判断
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("您输入的数据有误!");
}
}
}
求100以内的素数
设置判断条件,如果可以整除就改变条件值,最后依旧判断条件输出。
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 + " ");
}
}
}
}
对 10 个数进行排序
冒泡法
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[n + 1]) {
int temp = a[n];
a[n] = a[n + 1];
a[n + 1] = temp;
}
}
System.out.println("从小到大排序后的结果是:");
for(int k=0;k
求一个 3*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);
}
}
有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
先定义数组,再扩大随便放入要插入的数,再全体排序
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] + " ");
}
}
}
}
将一个数组逆序输出。
建立一个数组,逆向遍历输出
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]+" ");
}
}
}
取一个整数 a 从右端开始的 4~7 位。
输入数字转化成字符,再转化为数组,即可方便输出所需数
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]);
}
}
}
打印出杨辉三角形(要求打印出 10 行如下图)
创建一个二维数组,只输出杨辉三角的数字
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
输入 3 个数 a,b,c ,按大小顺序输出。
分别比较一下即可
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
输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
定义俩变量,遍历数组,最大的给一个,最小的给一个,改变数组值即可
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;cb[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
有 n 个整数,使其前面各数顺序向后移 m个位置,最后 m个数变成最前面的 m个数
放进一个数组,会移到最前的老数组的数放在一个新数组,然后向后移动,再把新数组得数放进老数组
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=m; i--) {
array[i] = array[i-m];
}
for(int i=0; i
有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子,问最后留下的是原来第几号的那位。
给每个人状态值,走的人改变状态值,状态值为初始值的时候变量加1,加到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 1){
if(arr[i]==1){
count++;
}
if(count==3){
arr[i]=0;//遇到数3的人了,退出圈子,标识立马变为0
x--; //标记为1的人数少一个
count=0;//计数器归零,重新计数
}
if(i==arr.length-1){
i=-1;
}
i++;//让人动起来
}
}
}
写一个函数,求一个字符串的长度,在 main 函数中输入字符串,并输出其长度。
放入一个数组即可
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));
}
}
编写一个函数,输入 n 为偶数时,调用函数求 1/2+1/4+...+1/n, 当输入 n 为奇数时,调用函数1/1+1/3+...+1/n( 利用指针函数 )
写俩函数调用一下即可,注意数值类型
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
字符串排序
比较对应位置字母的ASCII码值的大小
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(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;
}
}
}
海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
倒着推
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;
else
return fun(i+1)*5+1;
}
}
809??=800??+9*??+1
编个解方程式子,给个取值范围
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(" 无符合要求的数! ");
}
}
}
求 0—7 所能组成的奇数个数。
暴力求解
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));
}
}
一个偶数总能表示为两个素数之和。
除了2的素数都是奇数,俩奇数和为偶数
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
判断一个素数能被几个 9 整除
输入素数除9
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整除。");
}
}
俩个字符串连接程序
直接➕
public class Test46 {
public static void main(String[] args){
String str1 = "guoYang";
String str2 = " 老司机 ";
String str = str1+str2;
System.out.println(str);
}
}
读取 7 个数( 1—50)的整数值,每读取一个值,程序打印出该值个数的*。
输入数组,for循环输出星号
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
某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每
位数字都加上 5, 然后用和除以 10 的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
用数组
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
计算字符串中子串出现的次数
字符串放进数组,分别比较asiii值
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