While循环以及do-while循环_练习

1 定义一个数,判断是否为回文数。回文数即 一个五位数,它的第一位与最后一位相等 ,第二位与倒数第二位相等。12321

public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入一个数字");
        int number = scan.nextInt();//123321
        int wei=1;
        while(number/(int)Math.pow(10,wei)!=0){
            wei++;
        }
        boolean c = true;
        for(int i=0;i<wei/2;i++){
            int num1 = number/(int)Math.pow(10,wei-1-i)%10;
            int num2 = number/(int)Math.pow(10,i)%10;

            if(num1!=num2){
                c=false;
                break;
            }
        }
        if(c){
            System.out.println("回文数");
        }else{
            System.out.println("不是回文数");
        }
    }

2 以下程序的运行结果是

public static void main(String[] args) {
        int i,n;
        for(i=1;i<=100;i++)
        {
            n=i;
            if(++n%2==0)
                if(++n%3==0)
                    if(++n%11==0)
                        System.out.printf("%d\n",n);
        }
    }
    
    22
    88

3 定义一个正整数如:1205 统计它的各位数字中零的个数,并求各位数字中的最大者。

public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入一个数字");
        int number = scan.nextInt();
        int wei=1;
        while(number/(int)Math.pow(10,wei)!=0){
            wei++;
        }
        int sum=0;
        int max = number%10;
        for(int i=0;i<wei;i++){
            int num = number/(int)Math.pow(10,i)%10;
            if(num==0){
                sum++;
            }
            if(num>max){
                max=num;
            }
        }
        System.out.println("零的个数是:"+sum);
        System.out.println("每一位中最大值是:"+max);
    }

4 有1020个西瓜,第一天卖掉总数的一半后又多卖出两个,以后每天卖剩下的一半多两个,问几天以后能卖完

public static void main(String[] args) {
        int sum=1020;
        int day=0;
        while(sum>0){
            sum=sum/2-2;
            day++;
        }
        System.out.println("一共卖了:"+day+"天");
    }

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

X=(1+1)*2
X=(x+1)*2;
public static void main(String[] args) {
        int sum=1;
        int day=9;
        while(day>0){
            sum=(sum+1)*2;
            day--;
        }
        System.out.println("猴子一共摘了:"+sum+"个桃子");
    }

6用while做 求10到20的累加和

public static void main(String[] args) {
        int sum=0;
        int number = 10;
        while(number<=20){
            sum+=number;
            number++;
        }
        System.out.println("sum:"+sum);
    }

7用while做 求1000元钱可以买到38元的钢笔多少只?

public static void main(String[] args) {
        //第一种算法
        int sum=0;

        while(1000-sum*38>=38){
            sum++;
        }

        //第二种算法
        /*int sum=0;
        int money=1000;
        while(money>=38){
            money-=38;
            sum++;
        }*/
        System.out.println(sum);
    }

8用while做 鸡兔同笼。鸡兔一共有50只,脚一共有160只,问鸡和兔各多少只?要求鸡兔至少一样一只。

public static void main(String[] args) {
        int ji=1;

        while(ji<=49){
            int tu=1;
            while(tu<=49){
                if(ji+tu==50&&ji*2+tu*4==160){
                    System.out.println("鸡 :"+ji+",兔子:"+tu);
                }
                tu++;
            }
            ji++;
        }
    }

9用while和while的嵌套,做 输出一个直角三角形的图案。

            *
    		**
			***
			****
			*****
			******
			*******
			********
			*********
public static void main(String[] args) {
        int hang=1;
        while(hang<=9){
            int lie = 1;
            while(lie<=hang){
                System.out.print("*");
                lie++;
            }
            hang++;
            System.out.println();
        }
    }

10用while和while的嵌套,做 输出九九乘法表。

public static void main(String[] args) {
        int hang=1;
        while(hang<=9){
            int lie = 1;
            while(lie<=hang){
                System.out.print(hang+"*"+lie+"="+(hang*lie)+" ");
                lie++;
            }
            hang++;
            System.out.println();
        }
    }

11计算1+4+7+...+301,写出算法的程序.

public static void main(String[] args) {
        //第一种做法
        int number=1;
        int sum=0;
        while(number<=301){
            sum+=number;
            number+=3;
        }
        System.out.println(sum);
        //第二种做法
        int num=0;
        for(int i=1;i<=301;i+=3){
            num+=i;
        }
    }

12、计算50以内的偶数之积,写出算法的程序.

public static void main(String[] args) {
        //第一种算法
        int number=1;
        int sum=1;
        while(number<=20){
            if(number%2==0){
                sum*=number;
            }
            number++;
        }
        //第二种算法
        int number=2;
        int sum=1;
        while(number<=20){
            sum*=number;
            number+=2;
        }
    }

13、计算2/1+3/2+4/3+…+(n+1)/n,写出算法的程序.

public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入要计算到的位数:");
        int n = scan.nextInt();
        int num=1;
        int sum=0;
        while(num<=n){
            sum+=(num+1)/num;
            num++;
        }
        System.out.println(sum);
    }

14、2000年我国人口为13亿,如果人口每年的自然增长率为7%,那么多少年 后我国人口将达到15亿?设计一个算法的程序

public static void main(String[] args) {
        double sum=13.0;//(单位:亿);
        int year=0;
        while(sum<15){
            sum=sum+sum*0.07;
            year++;
        }
        System.out.println(year);
    }

15、给出50个数,1,2,4,7,11,„,其规律是:第1个数是1,第2个数比第1个数大1,第3个数比第2个数大2,第4个数比第3个数大3,„,以此类推. 要求计算这50个数的和. 先将下面给出的程序框图,再根据程序框图写出程序.

public static void main(String[] args) {
        int i=1;
        int number=1;//11
        int num=1;//5
        int sum=0;
        while(i<=50){
            sum+=number;//0+1+2+4+7+11
            number+=num;//
            num++;//
            i++;
        }
        System.out.println(sum);
    }
posted @ 2020-03-11 17:31  SunMoonSky  阅读(1342)  评论(0编辑  收藏  举报
/**/