public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入要查询兔子对数的月份");
int morth = sc.nextInt();
int n = RabbitNumber(morth);
}
public static int RabbitNumber(int morth){
if (morth<=2){
return 1;
}else {
return RabbitNumber(morth-1)+RabbitNumber(morth-2);
}
}
2、100~200素数
public static void main(String[] args) {
int j=0;
int sum = 0;
for (int i = 100; i <= 200; i++) {
for ( j = 2; j < i; j++) {
if (i%j==0){
break;
}
}
if (j==i){
System.out.printf("%d ",i);
sum++;
}
}
System.out.println("n总共有"+sum);
}
3、水仙花
public static void main(String[] args) {
int sum = 0;
for (int i = 100; i < 1000; i++) {
int ge = i%10;
int shi = i/10%10;
int bai = i/100;
if (Math.pow(ge,3)+Math.pow(shi,3)+Math.pow(bai,3)==i){
System.out.printf("%d ",+i);
sum++;
}
}
System.out.println("n总共有"+sum+"个");
}
4、正整数分解成质因数
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int number = sc.nextInt();
System.out.printf("%d=",number);
for (int i = 2; i <= number; i++) {
while (number%i==0 && number!=i){
System.out.printf("%d*",i);
number/=i;
}
if (number==i){
System.out.printf("%d",i);
number/=i;
}
}
}
5、给成绩分等级
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入分数");
int score = sc.nextInt();
char rs = score >= 90 ? 'A' : score > 60 ? 'B' : 'C';
System.out.println(rs);
}
6、最大公约数和公倍数
public static void main(String[] args) {
int divisor = 0;
int MoM = 0;//公约数,公倍数
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
int n = sc.nextInt();
if (m
7、字符统计
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String rs = sc.nextLine();//!!!!!
char[] a = rs.toCharArray();
int num = 0;int letter = 0;int space = 0;int other = 0;
for (int i = 0; i < a.length; i++) {
if (a[i]>=48 && a[i]<=57){
num++;
}else if (a[i]>=65 && a[i]<=90 || a[i]>=97 && a[i]<=122){
letter++;
}else if (a[i]==32){
space++;
}else {
other++;
}
}
System.out.printf("数字个数:%dn字母个数%dn空格个数%dn其他字符%dn",num,letter,space,other);
}
8、求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字
public static void main(String[] args) {
//该题也可以用数组做出,定义int[] arr=new int[n];但是空间浪费太大
Scanner sc = new Scanner(System.in);
System.out.println("请输入a的值");
int a = sc.nextInt();int key=a;
System.out.println("请输入有几个数相加");
int n = sc.nextInt();
int s = a;
System.out.print(a);
for (int i = 0; i < n-1; i++) {
s+=function(a,key);
System.out.print("+"+function(a,key));
a=function(a,key);
}
System.out.print("="+s);
}
public static int function(int a ,int key){
return key+a*10;
}
9、完数
public static void main(String[] args) {
for (int i = 1; i <= 1000; i++) {
int sum = 0;
for (int j = 1; j < i; j++) {
if (i%j == 0){
sum+=j;
}
}
if (sum==i){
System.out.print(i+" ");
}
}
}
10、球落地反弹
public static void main(String[] args) {
int hight = 100;
int n = 10;
int sum = hight;
for (int i = 0; i < n; i++) {
sum+=hight;
hight/=2;
}
System.out.println("在落地了"+n+"次后,经过了"+sum+"米");
System.out.println("第"+n+"反弹了"+hight+"米");
}
11、1~4组成3位数
public static void main(String[] args) {
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 ){
break;
}
System.out.printf("%d ",(i*100+j*10+k));
System.out.printf("%d ",(k*100+j*10+i));
}
}
}
}
12、利润提成
13、完全平方数
public static void main(String[] args) {
for (int i = 0; i < 10000; i++) {
if (number(i)){
System.out.println(i);
break;
}
}
}
public static boolean number(int num ){
if (num<0){
return false;
}
for (int i = 0; i < num/2.0; i++) {
if (i*i == num){
return true;
}
}
return false;
}
14、根据日期判断是这年的哪一天
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Calendar cal = Calendar.getInstance();
System.out.println("请输入年份");
int year = sc.nextInt();
cal.set(Calendar.YEAR,year);
System.out.println("请输入月份");
int morth = sc.nextInt();
//注意:因为这里读月份是从0开始,所以要减一
cal.set(Calendar.MONTH,(morth-1));
System.out.println("请输入是几号");
int day = sc.nextInt();
cal.set(Calendar.DAY_OF_MONTH,day);
System.out.println("今天是第"+cal.get(Calendar.DAY_OF_YEAR)+"天");
}
15、3个整数比较大小
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入三个数");
int x = sc.nextInt();
int y = sc.nextInt();
int z = sc.nextInt();
if (x>y){
int a = x^y;
x = a^x;
y = a^y;
}
if (y>z){
int a = y^z;
y = a^y;
z = a^z;
}//冒泡排序,此时z是最大值
if (x>y){
int a = x^y;
x = a^x;
y = a^y;
}
System.out.printf("%d %d %d",x,y,z);
}
16、乘法表
//输出9*9口诀
public static void main(String[] args) {
for (int i = 1; i < 10; i++) {
for (int j = 1; j <= i; j++) {
System.out.printf("%d*%d=%-3d",j,i,i*j);
}
System.out.println();
}
}
17、猴子吃桃子
// 10-1 9-4 8-10 7-22 6-46 5-94 4-190 3-382 2-766 1-1534
public static void main(String[] args) {
int num = 1;
for (int i = 1; i < 10; i++) {
num+=1;
num*=2;
}
System.out.println("第一天一共摘了 "+num+"个桃");
}
18、比赛名单
public static void main(String[] args) {
printList();
}
private static void printList(){
char[] teamA={'a','b','c'};
char[] teamB={'x','y','z'};
char tempA='d';
char tempB='d';
for(int i=0;i
19、菱形
public static void main(String[] args) {
int N=3;
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N-i+1; j++) {//因为要配合下面四行,所以多大一个空格
System.out.print(" ");
}
for (int j = 1; j <= 2*i-1; j++) {
System.out.print("*");
}
System.out.println();
}
int n = 4;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i-1; j++) {
System.out.print(" ");
}
for (int j = 1; j <= (2*n+1)-2*i; j++) {
System.out.print("*");
}
System.out.println();
}
}
20、分数相加(后面运行数度很慢,数值很大)
public static void main(String[] args) {
int n = 20;
int sum = 0;
for (int i = 0; i < n; i++) {
double a = 2.0;
double b = 1.0;
sum += a/b;
a += b;
b = a;
}
System.out.println(sum);
}
21、阶乘求和
public static void main(String[] args) {
int sum =0 ;
for (int i = 1; i <= 20; i++) {
sum+=fun(i);
}
System.out.println(sum);
}
public static int fun(int a){
int x = 1;
while (a>1){
x*=a;
a--;
}
return x;
}
22、递归求阶乘
//利用递归方法求5!
public static void main(String[] args) {
System.out.println(function(5));
}
public static int function(int x){
if (x<=1) {
return 1;
}
return x*function(x-1);
}
23、5个人的年龄
public static void main(String[] args) {
int old = 10;
for (int i = 1; i < 5; i++) {
old+=2;
}
System.out.println(old);
}
24、随机生成一个8位数以内的多位数,输出是几位数,并倒序输出每一位数上的数字
//给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个不多于5位的正整数");
int Number = 0;
int digits = 0;
int number = 0;
//判断数字是否符合条件
while (true){
number = sc.nextInt();
Number = number;
digits = 0;
while (number!=0) {
number/=10;
digits++;
}
if (digits>=5){
System.out.println("输入错误,请重新输入不多于5位数的正整数");
}else {
break;
}
}
//倒着打印各位数字
for (int i = 0; i < digits; i++) {
System.out.printf("%d ",Number%10);
Number/=10;
}
System.out.println("n它是"+digits+"位数");
}
25、随机生成一个多位数(1~5位数),判断是否是回文数
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个五位数");
int number = sc.nextInt();
int[] arr = new int[5];
for (int i = 0; i < arr.length; i++) {
arr[i] = number%10;
number/=10;
}
if (arr[0]==arr[4] && arr[1]==arr[3]){
System.out.println("是回文数");
}else {
System.out.println("不是回文数");
}
}
26、根据首字母或者前两个字母判断是周几
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入星期几");
String rs = null;
char week;
while (true) {
rs = sc.next();
week = rs.charAt(0);
if (week=='M'||week=='m'){
System.out.println("星期一");
break;
}
if (week=='T'||week=='t'){
if (rs.charAt(1)=='u'){
System.out.println("星期二");
break;
}else if (rs.charAt(1)=='h'){
System.out.println("星期四");
break;
}
}
if (week=='W'||week=='w'){
System.out.println("星期三");
break;
}
if (week=='S'||week=='s'){
if (rs.charAt(1)=='a'){
System.out.println("星期六");
break;
}else if (rs.charAt(1)=='u'){
System.out.println("星期日");
break;
}
}
if (week=='f'||week=='F'){
System.out.println("星期五");
break;
}
System.out.println("输入错误,请重新输入");
}
}
27、100以内的素数
public static void main(String[] args) {
int sum = 0;
int j ;
for (int i = 1; i <= 100; i++) {
for (j = 2; j <= Math.sqrt(i) ; j++) {//节省运算次数,提高算法的高效性
if (i%j==0){
break;
}//如果都不能整除,那么j在结束后会大于Math.sqrt(i)
}
if (j>Math.sqrt(i)){
System.out.print(i+" ");
sum++;
}
}
System.out.println("n总数为"+sum);
}
28、10个整数进行排序
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入10个数");
int[] arr = new int[10];
for (int i = 0; i < arr.length; i++) {
arr[i]=sc.nextInt();
}
//冒泡排序
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-i-1; j++) {
if (arr[j]>arr[j+1]){
int x = arr[j];
arr[j]=arr[j+1];
arr[j+1]=x;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
29、求矩阵对角线之和
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[][] arr = new int[3][3];
System.out.println("输入9个数");
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[0].length; j++) {
arr[i][j] = sc.nextInt();
}
}
System.out.print("第一条对角线的元素和"+(arr[0][0]+arr[1][1]+arr[2][2]));
System.out.print("第二条对角线的元素和"+(arr[0][2]+arr[1][1]+arr[2][0]));
}
30、插入一个数后按照原数组的顺序进行排序
public static void main(String[] args) {
int[] arr = {8,21,26,53,73};
int[] arr1 = new int[arr.length+1];
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数");
int number = sc.nextInt();
if (arr[0]>arr[1]){//降序
if (number>=arr[0]){
arr1[0]=number;
for (int i = 1; i < arr1.length; i++) {
arr1[i]=arr[i-1];
}
}else if (number<= arr[arr.length-1]){
arr1[arr1.length-1]=number;
for (int i = 0; i < arr1.length - 1; i++) {
arr1[i]=arr[i];
}
}else {
arr1=function(arr,number);
}
}else {//升序
if (number<=arr[0]){
arr1[0]=number;
for (int i = 1; i < arr1.length; i++) {
arr1[i]=arr[i-1];
}
}else if (number >= arr[arr.length-1]){
arr1[arr1.length-1]=number;
for (int i = 0; i < arr1.length - 1; i++) {
arr1[i]=arr[i];
}
}else {
arr1=function(arr,number);
}
}
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i]+" ");
}
}
public static int[] function(int[] arr ,int number){
int[] arr1 = new int[arr.length+1];
int i;
for (i = 0; i < arr.length-1; i++) {
if (number<=arr[i]&&number>=arr[i+1]){
break;
}
if (number>=arr[i]&&number<=arr[i+1]){
break;
}
}
for (int j = 0; j < arr1.length; j++) {
arr1[j]=arr[j];
if (j==i){
break;
}
}
arr1[i+1]=number;
for (int j = i+1; j < arr1.length-1; j++) {
arr1[j+1]=arr[j];
}
return arr1;
}
31、数组排序
public static void main(String[] args) {
int[] arr = {21,412,512,74,231,52,1};
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[arr.length - i - 1]+" ");
}
System.out.println();
for (int i = arr.length-1 ; i >= 0; i--) {
System.out.print(arr[i]+" ");
}//也是一样的
}
32、取一个多位数(7位到9位)其中的任意位上的数值
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个不少于7位数的整数");
long a ;
while (true){
a = sc.nextLong();
if (a<1000000){
System.out.println("输入错误,请重新输入");
}else
break;
}
System.out.println("第4位数 "+a/1000%10);
System.out.println("第7位数 "+a/1000000%10);
}
33、杨辉三角形
public static void main(String[] args) {
int n = 10;
int[][] arr = new int[100][100];
for (int i = 0; i < n; i++) {
arr[i][0] = 1;
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < 2 * n - 2 * i; j++) {
System.out.print(" ");
}
for (int j = 1; j <= i; j++) {
arr[i][j] = arr[i-1][j-1]+arr[i-1][j];
}
for (int j = 0; j <= i; j++) {
System.out.printf("%4d",arr[i][j]);
}
System.out.println();
}
}
34、输入一串数字比较大小
//输入3个数a,b,c,按大小顺序输出。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
if (a>b && a>c){
System.out.printf("%d ",a);
if (b>c){
System.out.printf("%d %d",b,c);
}else {
System.out.printf("%d %d",c,b);
}
}else if (b>a && b>c){
System.out.printf("%d ",b);
if (a>c){
System.out.printf("%d %d",a,c);
}else {
System.out.printf("%d %d",c,a);
}
}else {
System.out.printf("%d ",c);
if (a>b){
System.out.printf("%d %d",a,b);
}else {
System.out.printf("%d %d",b,a);
}
}
}
35、找到一个数组的最大值和最小值并分别交换到首尾位置
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入数组的长度");
int n = sc.nextInt();
int[] arr = new int[n];
for (int i = 0; i < arr.length; i++) {
System.out.print("输入第"+(i+1)+"个元素n");
arr[i]=sc.nextInt();
}
int max = funtion(arr,'M');//获取最大的数的索引
int min = funtion(arr,'m');//获取最小的数的索引
int tem = arr[0];
arr[0]=arr[max];
arr[max]=tem;
tem = arr[arr.length-1];
arr[arr.length-1]=arr[min];
arr[min]=tem;
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
public static int funtion(int[] arr,char index){
int x = 0;
if (index=='M') {//找最大值的索引
for (int i = 0; i < arr.length - 1; i++) {
if (arr[x] > arr[i + 1]) {
x = x;
} else {
x = i+1;
}
}
}else if (index=='m') {
for (int i = 0; i < arr.length - 1; i++) {
if (arr[x] < arr[i + 1]) {
x = x;
} else {
x = i+1;
}
}
}else {
System.out.println("输入参数错误");
}
return x;
}
36、有n个整数,将最后m个数移到最前面,其余数依次后移m个位置
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入n的值");
int n = sc.nextInt();
int[] arr = new int[n];
System.out.println("请输入"+n+"个数字");
for (int i = 0; i < arr.length; i++) {
arr[i]=sc.nextInt();
}
System.out.println("请输入m的值");
int m = sc.nextInt();
//把后面m个数储存起来
int[] arr1 = new int[m];
for (int i = 0; i < arr1.length; i++) {
arr1[i]=arr[i+n-m];
}
//把前面的数移动m个位置到后面去
for (int i = 0; i < n - m; i++) {
arr[n-i-1]=arr[n-m-1-i];
}
//把原来后面m个数变到前面去
for (int i = 0; i < arr1.length; i++) {
arr[i]=arr1[i];
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
}
37、报数游戏
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入有几个人围成一圈");
int n =sc.nextInt();
boolean[] IsNum = new boolean[n];
for (int i = 0; i < IsNum.length; i++) {
IsNum[i]=true;
}
int gs = 0;
while (n>1){
for (int i = 0; i < IsNum.length; i++) {
if (IsNum[i]){
gs++;
}
if (gs==3){
IsNum[i]=false;
n--;
gs=0;
}
}
}
for (int i = 0; i < IsNum.length; i++) {
if (IsNum[i]){
System.out.println("最后留下的是第 "+(i+1)+"号位");
}
}
}
38、统计不同类型的字符
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
System.out.println(Length(str));
}
public static int Length(String str){
return str.length();
}
39、编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数1/1+1/3+…+1/n
40、给输入的字符串排序
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串");
String rs = sc.next();
System.out.println("请输入升序:1 or 降序:0");
int flag = sc.nextInt();
char[] arr = new char[rs.length()];
System.out.println(Short(rs ,flag));
}
public static String Short(String rs ,int flag ){
//定义一个char数组,并且来接收字符串,来排序
char[] arr = new char[rs.length()];
for (int i = 0; i < rs.length(); i++) {
arr[i] = rs.charAt(i);
}
if (flag==1) {//升序,把接收的字符数组排序
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j]>arr[j+1]){
char tem = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tem;
}
}
}
}else if(flag==0){//降序
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j]
41、5只猴子分桃子
public static void main(String[] args) {
for (int i = 0;; i++) {
if (i%5==1)
if (Number(5,i)){
System.out.println("原来最少有 "+i+"个桃子");
break;
}
}
}
public static boolean Number(int monkey ,int number){
if (number%5==1){
number-=1;
number-=number/5;
monkey--;
}else {
return false;
}
if (monkey==0){
return true;
}
return Number(monkey,number);
}
42、求809*??=800*??+9*??+1中的??
// i*8<100 i>100/9.0
public static void main(String[] args) {
boolean flag = true;
for (double i = (100/9.0); i < 100/8.0; i++) {
if (809*i==800*i+9*i+1){
System.out.println(i+"n"+"809*"+i+" = "+i*809);
flag = flag;
break;
}
}
if (flag){
System.out.println("没有这个数");
}
}
43、数组求解0~7的奇数个数
public static void main(String[] args) {
int sum = 0;
int n = 8;//0~7;八个数
for (int i = 0; i < n; i++) {
sum+=JustNumber(n,i);//i位能组成的个数的奇数
}
}
public static int JustNumber(int a, int i){
if (i==0){
return a/2;
}
int sum = a-1;
while (i>0){
sum*=a;
i--;
}
return sum/2;
}
44、证明:一个偶数等于两个素数之和。
public static void main(String[] args) {
int num = 0;int x =0;
for(num=2;num<100;num+=2) {
x++;
int N = num/2 + 1;
int n = num/2 - 1;
if (JustMuth(num / 2)) {
System.out.printf("%d = %d+%-4d", num, num / 2, num / 2);
continue;
}
while (n > 0) {
if (JustMuth(n)&&JustMuth(N)){
System.out.printf("%d = %d+%-4d",num,n,N);
break;
}
n--;N++;
}
if (x==10){
System.out.println();
x=0;
}
}
}
public static boolean JustMuth(int n){
for (int i = 2; i < n; i++) {
if (n%i==0)
return false;
if (i==n-1)
return true;
}
return true;
}
45、判断一个素数能被几个9整除
public static void main(String[] args) {
for (int i = 10; i < 100; i++) {
if (JustNum(i)){
System.out.println(i+"能被 "+function(i)+"个9整除");
}
}
System.out.println("出这道题的脑子是瓦特了?能被整除叫素数?");
}
public static boolean JustNum(int n){
for (int i = 2; i < n; i++) {
if (n%i==0)
return false;
if (i==n-1)
return true;
}
return false;
}
public static int function(int n){
int sum = 0;
if (n%9==0 && n!=0){
sum++;
n/=9;
return function(n);
}
return sum;
}
46、拼接2@[TOC](个字符串
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入两个字符串");
String rs1 = sc.next();
String rs2 = sc.next();
String rs = rs1+rs2;
System.out.println(rs);
}
47、随机从[1,50]生成7个数,并且打印对应个数的*号
public static void main(String[] args) {
Random r = new Random();
for (int i = 0; i < 7; i++) {
int a = r.nextInt(50) + 1;
System.out.print(a+" ");
for (int j = 0; j < a; j++) {
System.out.printf("*");
}
System.out.println();
}
}
48、4位数的加密问题
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入4位数的整数");
int num = 0;
while (true){
num = sc.nextInt();
if (num/1000>0 && num/1000<10){
break;
}
}
//加密
int ge = num%10;
int shi = num/10%10;
int bai = num/100%10;
int qian = num/1000%10;
ge = (ge+5)%10;
shi = (shi+5)%10;
bai = (bai+5)%10;
qian = (qian+5)%10;
ge = qian;
shi = bai;
System.out.println(ge+shi*10+bai*100+qian*1000);
}
49、统计字符串子串在父串中出现的次数
50、学生成绩



