循环练习1

目录

题目1:打印出所有的 水仙花数 

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

题目3:输入两个正整数m和n,求其最大公约数和最小公倍数

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

 题目5:求s = a + aa + aaa + aaaa + aa...a的值,其中a是一个数字

题目6:编程找出1000以内的所有完数

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

 题目8:企业发放的奖金根据利润提成

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

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


题目1:打印出所有的 水仙花数 

import java.util.Scanner;

public class test01 {
    public static void main(String[] args) {
        shuiXian();
    }

    //打印出所有的 水仙花数 ,所谓 水仙花数 是指一个三位数,
    //其各位数字立方和等于该数本身。
    //例如:153是一个 水仙花数 ,因为153=1的三次方+5的三次方+3的三次方。
    public static void shuiXian() {
        for (int i = 100; i < 1000; i++) {
            int gw = i % 10;
            int sw = i / 10 % 10;
            int bw = i / 100 % 10;
            if (i == (gw * gw * gw + bw * bw * bw + sw * sw * sw)) {
                System.out.print(i + "\t");
            }
        }

    }
}

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

import java.util.Scanner;

public class test02 {
    public static void main(String[] args) {
        fenJie();
    }

    //将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
    //1.程序分析:对n进行分解质因数,应先找到一个最小的质数i,然后按下述步骤完成:
    //(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
    //(2)如果n > i,但n能被i整除,则应打印出i的值,并用n除以i的商,作为新的正整数你,重复执行第一步。
    //(3)如果n不能被i整除,则用i+1作为i的值,重复执行第一步
    public static void fenJie(){
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入一个整数:");
        int num=sc.nextInt();
        int m=num;
        System.out.print(num+"=");
        for (int i = 2; i <m ; i++) {
            if (num%i == 0) {
                System.out.print(i);
                if (i!=num){
                    System.out.print("*");
                }
                num=num/i;
                i--;
            }
        }
    }
}

题目3:输入两个正整数m和n,求其最大公约数和最小公倍数

import java.util.Scanner;

public class test03 {
    public static void main(String[] args) {
        yueShu();
    }

    //题目3:输入两个正整数m和n,求其最大公约数和最小公倍数。
    public static void yueShu() {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入两个正整数:");
        int num1 = sc.nextInt();
        int num2 = sc.nextInt();
        int a = num1;
        int b = num2;

        while (true) {
            if (num1 > num2) {
                num1 = num1 - num2;
                if (num1 < num2) {
                    num2 = num2 - num1;
                } else if (num1 > num2) {
                    num1 = num1 - num2;
                } else {
                    break;
                }

            } else if (num1 < num2) {
                num2 = num2 - num1;
                if (num1 < num2) {
                    num2 = num2 - num1;
                } else if (num1 > num2) {
                    num1 = num1 - num2;
                } else {
                    break;
                }

            } else {
                break;
            }
        }

        int c = a * b / num1;
        System.out.println("最大公约数为:" + num1);
        System.out.println("最小公倍数为:" + c);

    }
}

 

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

import java.util.Scanner;

public class test04 {
    public static void main(String[] args) {
        tongJi();
    }

    //输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
    public static void tongJi() {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入一行字符串:");
        String srt = sc.nextLine();
        char arr[] = srt.toCharArray();
        int english=0;   //a~z:97~122;   A~Z:65~90
        int space=0;    //32
        int number=0;   //0~9:48~57
        int other=0;
        for (int i = 0; i < arr.length; i++) {
                if (arr[i]>=48&&arr[i]<=57){
                    number++;
                }
                else if ((arr[i]>=65&&arr[i]<=90)||(arr[i]>=97&&arr[i]<=122)){
                    english++;
                }
                else if (arr[i]==32){
                    space++;
                }
                else {
                    other++;
                }

        }
        System.out.println("共有英文字母:"+english+"个");
        System.out.println("共有空格:"+space+"个");
        System.out.println("共有数字:"+number+"个");
        System.out.println("共有字符"+other+"个");
    }
}

 
题目5:求s = a + aa + aaa + aaaa + aa...a的值,其中a是一个数字

import java.util.Scanner;

public class test05 {
    public static void main(String[] args) {
        ss();
    }

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

    public static void ss() {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入一个数字:");
        int n = sc.nextInt();
        System.out.print("请输入你要相加的个数:");
        int m = sc.nextInt();
        int sum=0;
        String s = String.valueOf(n);
        for (int i = 0; i < m; i++) {
            int a=Integer.valueOf(s);
            sum+=a;
            s=n+s;
        }
        System.out.println(sum);
    }
}

 

题目6:编程找出1000以内的所有完数

public class test06 {
    public static void main(String[] args) {
        ss();
    }
    //一个数如果恰好等于它的因子之和,这个数就称为"完数"。
    // 例如6=1+2+3。编程找出1000以内的所有完数。

    public static void ss() {

        for (int a=1;a<1000;a++) {
            int sum = 0;
            for (int i = 1; i < a; i++) {
                if (a % i == 0) {
                    sum = sum + i;
                }
            }
            if (a == sum) {
                System.out.println(a);
            }
        }

    }
}

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

public class test07 {
    public static void main(String[] args) {
        ss();
    }

    //有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
    public static void ss() {
        int i = 0;
        int j = 0;
        int k = 0;
        int count = 0;
        for (i = 1; i <= 4; i++) {
            for (j = 1; j <= 4; j++) {
                for (k = 1; k <= 4; k++) {
                    if (i != j && i != k && j != k) {
                        System.out.print(i + "" + j + "" + k+"\t");
                        count++;
                    }
                }
            }
        }
        System.out.println();
        System.out.println("共有:" + count);
    }
}

 题目8:企业发放的奖金根据利润提成

import java.util.Scanner;

public class test08 {
    public static void main(String[] args) {
        ss();
    }

    //企业发放的奖金根据利润提成。利润(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%提成,从键盘输入当月利润lirun,求应发放奖金总数sum?
    public static void ss() {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入当月的利润是多少(万):");
        double lirun = sc.nextDouble();
        double sum = 0;
        for (; ; ) {
            if (lirun <= 10) {
                sum = sum + lirun * 0.1;
                System.out.println("共发放奖金:" + sum);
                break;
            } else if (lirun <= 20) {
                double a = lirun - 10;
                sum = sum + a * 0.075;
                lirun = lirun - a;
            } else if (lirun <= 40) {
                double b = lirun - 20;
                sum = sum + b * 0.05;
                lirun = lirun - b;
            } else if (lirun <= 60) {
                double c = lirun - 40;
                sum = sum + c * 0.03;
                lirun = lirun - c;
            } else if (lirun <= 100) {
                double d = lirun - 60;
                sum = sum + d * 0.015;
                lirun = lirun - d;
            } else if (lirun >= 100) {
                double e = lirun - 100;
                sum = sum + e * 0.01;
                lirun = lirun - e;
            }
        }
    }
}

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

public class test09 {
    public static void main(String[] args) {
        ss();
    }

    //一个整数,它加上100后是一个完全平方数,加上168又是一个完全平方数,请问该数是多少?
    public static void ss() {
        for (int i = 0; i < 10000; i++) {
            int x = (int) Math.sqrt(i + 100);
            int y = (int) Math.sqrt(i + 100 + 168);
            if (x * x == i + 100 && y * y == i + 100 + 168) {
                System.out.println(i);
            }

        }
    }
}

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

import java.util.Scanner;

public class test10 {
    public static void main(String[] args) {
        ss();
    }

   public static void ss(){
        //输入某年某月某日,判断这一天是这一年的第几天?
       Scanner sc=new Scanner(System.in);
       System.out.print("请输入年月日(格式:xxxx xx xx):");
       int year=sc.nextInt();
       int month=sc.nextInt();
       int day=sc.nextInt();
       int sum=0;
       if ((year%4==0&year%100!=0)||year%400==0) {
           for ( int i= 0; i <month ; i++) {
               if (i==1||i==3||i==5||i==7||i==8||i==10||i==12){
                   sum=sum+31;
               }
               else if (i==2){
                   sum=sum+29;
               }else if(i==0){
                   continue;
               }
               else {
                   sum=sum+30;
               }
           }
           System.out.println("所以这是今年的第"+(sum+day)+"天");
       }
       else {
           for ( int i= 0; i <month ; i++) {
               if (i==1||i==3||i==5||i==7||i==8||i==10||i==12){
                   sum=sum+31;
               }
               else if (i==2){
                   sum=sum+28;
               }else if(i==0){
                   continue;
               }
               else {
                   sum=sum+30;
               }
           }
           System.out.println("所以这是今年的第"+(sum+day)+"天");
       }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值