2021.10.21关于循环语句的一些练习

  1. 有1020个西瓜,第一天卖掉总数的一半后又多卖出两个,以后每天卖剩下的一半多两个,问几天以后能卖完?
    public class zuoye1 {
        public static void main(String[] args) {
            int num=1020;
            int day=0;
            while(num>0){
                num=(num/2-2);//每天剩余西瓜数量
                day++;
                System.out.println("经过"+day+"天"+"剩余"+num+"个");
            }
            System.out.println("经过"+day+"天卖完");
        }
    }

  2. 猴子吃桃问题: 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃了一半,又多吃一个,以后每天都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子。求第一天共摘了多少个?
    public class zuoye2 {
        public static void main(String[] args) {
            int peach=1;//每天桃子的数量是(第二天的数量加1)的两倍
            for(int day=9;day>=1;day--){//第九天个数就是(第十天的个数加1)*2
                peach=(peach+1)*2;
                System.out.println("第"+(day)+"天,"+"有"+peach+"个桃子");
            }
        }
    }

  3. 有个人想知道,一年之内一对兔子能繁殖多少对?于是就筑了一道围墙把一对兔子关在里面。已知一对兔子每个月可以生一对小兔子,而一对兔子从出生后第3个月起每月生一对小兔子。假如一年内没有发生死亡现象,那么,一对兔子一年内(12个月)能繁殖成多少对?  分析:兔子的规律为数列,1,1,2,3,5,8,13,21
    public class zuoye3 {
        public static void main(String[] args) {
            //前两位数之和等于第三位
            int a=1;
            int b=1;
            int sum=0;
            for(int i=3;i <=12;i++){
    //            int c=a+b;//把b赋值给a,c赋值给b,这样又得到一个c=a+b,进行循环
    //            a=b;
    //            b=c;
                sum=a+b;
                a=b;
                b=sum;
                System.out.println("经过"+i+"个月,"+"兔子个数:"+sum);
            }
            System.out.println("经过12个月,兔子总个数:"+sum);
        }
    }
    

    4. 任意输入一个整数(小于10位),输出它一共有多少位

    public class zuoye4 {
        public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入一个整数:");
            int num=sc.nextInt();
            int weishu=1;
            while (num>=10){
                num/=10;
                weishu++;
            }
            System.out.println("这是"+weishu+"位数");
        }

    5. 计算1000以内所有不能被7整除的整数之和

    public class zuoye5 {
        public static void main(String[] args) {
            int i=1;
            int sum=0;
            while(i<1000) {
                if(i%7!=0) {
                    sum += i;
                }
                i++;
                }
            System.out.println(sum);
        }
    }
    

    6. 本金10000元存入银行,年利率是千分之三,每过1年,将本金和利息相加作为新的本金。计算5年后,获得的本金是

    public class zuoye6 {
        public static void main(String[] args) {
            int sum=10000;
            double diyinian=sum*1.003;
            double diernian=diyinian*1.003;
            double disannian=diernian*1.003;
            double disinian=disannian*1.003;
            double diwunian=disinian*1.003;
            System.out.println("五年后本金是:"+diwunian);
        }
    }

    7. 计算 1+2-3+4-5+6-7....+100的结果//注意审题

    public class zuoye7 {
            public static void main(String[] args) {
                int sum=1;
                for(int i=2;i<=100;i++)    {
                    if(i%2==0){
                        sum+=i;
                    }else{
                        sum-=i;
                    }
                }
                System.out.println("结果为:"+sum);
            }
    }
    

    8.  一张纸的厚度大约是0.08mm,对折多少次之后能达到或超过珠穆朗玛峰的高度(8848.13米)

    public class zuoye8 {
        public static void main(String[] args) {
            double sum=0.08;
            int c=0;
            while(sum<=8848130){
                sum*=2;
                c++;
            }
            System.out.println("需要折叠"+c+"次");
        }
    }

  4. 从控制台输入一个正整数,计算该数的阶乘。例如输入5,阶乘为 5*4*3*2*
  5. public class zuoye9 {
        public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入一个正整数:");
            int num=sc.nextInt();
            int sum=1;
            for(int b=num;b>1;b--){
                sum*=b;
            }
            System.out.println("阶乘结果是:"+sum);
        }
    }

Guess you like

Origin blog.csdn.net/kkkyzp/article/details/120894004