2019-1-5,循环算法作业



package com.lianXi; import java.util.Scanner;
/* * 一个人很倒霉,不小心打碎了一位妇女的一篮子鸡蛋。为了赔偿便询问篮子里有多少鸡蛋 * 。那妇女说,她也不清楚,只记得每次拿两个则剩一个,每次拿3个则剩2个,每次拿5个则剩4个, * 若每个鸡蛋1元,请你帮忙编程,计算最少应赔多少钱?  * 要求:用循环语句实现,直接打印出结果不给分。 */ public class lianXi01 { public static void main(String[] args) { for(int i=1;;i++) { if(i%2==1&&i%3==2&&i%5==4) { System.out.println("最小应该赔:"+(i*1)+""); break; } } } }

输出结果图:

第二题:

package com.lianXi;

import java.util.Scanner;

/*
 * 从键盘接收一个整数N,统计出1~N之间能被7整除的整数的个数,以及这些能被7整除的数的和。
 */
public class lianXi02 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);    
        System.out.println("请输入一个整数");
        int n = sc.nextInt();
        int a = 0;
        int b = n/7;
        
        for(int i=1;i<=n;i++) {
            if(i%7==0) {
                a+=i;
            }
        }
        System.out.println("能被7整除的整数的个数为:"+b);
        System.out.println("能被7整除的数的和:"+a);

    }
}

输出结果图:

第三题:

package com.lianXi;

import java.util.Scanner;

/*
 * 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
 * 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,
 * 问每个月的兔子对数为多少?
程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....  //后一个数是前两个数的和
 */
public class lianXi03 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a =1;
        int b =1;
        int c =0;
        System.out.println("请输入要查询几个月的");
        int d = sc.nextInt();
        for(int i=2;i<d;i++) {
            a+=b;      
            c=a;
            a=b;
            b=c;
            System.out.println(""+(i+1)+"个月的兔子数量为:"+c);
        }
    }

}

输出结果图:

第四题:

package com.lianXi;
/*
 一个笼子有35个头,94只脚,问鸡和兔各有多少?
解题:数学方法:设鸡i只,兔j只,方程:i + j = 35 ;  
2 * i + 4 * j = 94。
解题思路:鸡和兔加起来35只,,所以算每一种可能的脚的个数,符合就输出就可以了
 */
public class lianXi04 {

    public static void main(String[] args) {
        for(int i=0;i<100;i++) {
            for(int j=0;j<100;j++) {
                if(i + j == 35&&2 * i + 4 * j == 94) {
                    System.out.println("鸡的个数为:"+i);
                    System.out.println("兔子的个数为:"+j);
                    break;
                }
            }
        }
    }
}

输出结果图:

 第五题:

package com.lianXi;
/*
 * 马克思手稿中有一道趣味数学题:
 * 有30个人,其中有男人、女人和小孩,在一家饭馆里吃饭共花了50先令,
 * 每个男人各花3先令,每个女人各花2先令,
 * 每个小孩各花1先令,问男人、女人和小孩各有几人?
 */
public class lianXi05 {

    public static void main(String[] args) {    
        int d =1;
        for(int a=1;a<30;a++) {
            for(int b=1;b<30;b++) {
                for(int c=1;c<30;c++) {
                    if((a*3+b*2+c*1)==50&&(a+b+c)==30) {
                        System.out.println(""+(d++)+"");
                        System.out.println("男人的数量"+a);
                        System.out.println("女人的数量"+b);
                        System.out.println("小孩的数量"+c);
                        
                    }
                }
            }
        }
    }

}

输出结果图:

 第六题:

package com.lianXi;
/*
 判断101-200之间有多少个素数,并输出所有素数。
程序分析:
  素数是:只能被1或本身整除的数,如:2,3,5,7,11,131... 
 */
public class lianXi {

    public static void main(String[] args) {
        int a = 1;
        for(int i=101;i<=200;i++) {
            for(int j=2;j<i;j++) {
                if(i%j==0) {
                    break;
                }
                if(j<i-1) {
                    continue;
                }else {
                    System.out.println("101~200之间素数第"+(a++)+"个数为:"+i);
                }

            }
        }

输出结果图:

第七题:

package com.lianXi;
/*
 * 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,
 * 其各位数字立方和等于该数本身。例如:153是一个"水仙花数",
 * 因为153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
 */
public class lianXi07 {

    public static void main(String[] args) {
        int i,a,b,c;
        for(i = 100 ; i <= 999 ; i++)
        {
            a = i/100 ;
            b = i/10%10 ;
            c =i%100%10 ;
            if(a*a*a+b*b*b+c*c*c==i) {
                System.out.println(i);
            }
        }
    }

}

输出结果图:

第八题:

package com.lianXi;
/*
 * 将一个正整数分解质因数。比如:输入90,打印出90=2*3*3*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 lianXi08 {

    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int n =sc.nextInt();
        for(int k=2;k<n;k++) {
            while(n!=k) {
                if(n%k==0)
                { 
                    System.out.print(k+"*");
                    n=n/k;
                }
                else
                {
                    break;
                }
            }
        }
        System.out.print(n);
    }

}

输出结果图:

第九题:

package com.lianXi;

import java.util.Scanner;

/*
 * 题目:利用条件运算符的嵌套来完毕此题:
 * 学习成绩> =90分的同学用A表示
 * ,60-89分之间的用B表示
 * ,60分下面的用C表示。
 */
public class lianXi09 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你的成绩");
        int a = sc.nextInt();
        String s =a>=90?"A":a>=60?"B":"C";
        System.out.println(s);
    }

}

输出结果图:

第10题:

package com.lianXi;
/*
 * 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。   
/**在循环中,仅仅要除数不等于0。用较大数除以较小的数。
 * 将小的一个数作为下一轮循环的大数。
 * 取得的余数作为下一轮循环的较小的数。
 * 如此循环直到较小的数的值为0,返回较大的数,此数即为最大公约数
 * ,最小公倍数为两数之积除以最大公约数。* /
 */

import java.util.Scanner;

public class lianXi010 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个整数:");
        int m =sc.nextInt();
        System.out.println("请输入第二个整数:");
        int n =sc.nextInt();
        int a=1;
        int b=0;
        int c=m;
        int d=n;
        for(int i=2;i<=m;i++) {
            for(int j=2;j<=n;j++) {
                if(m%j==0&&n%j==0) {
                    a*=j;
                    System.out.println("这两个的公倍数有:"+j);
                    m=m/j;
                    n=n/j;
                }
            }
        }
        System.out.println("这两个数的最小公倍数是"+a);
        System.out.println("最大公约数是:"+(c/a)*(d/a)*a);
    }

}

输出结果图:

第11题:

package com.lianXi;

import java.util.Scanner;

/*
 * 题目:求s=a+aa+aaa+aaaa+aa...a的值。当中a是一个数字。
 * 解:加的次数就是其本身,每加一次下个要加的数都加上其尾数,直加到满足其本身的次数
 */
public class lianXi011 {

    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);
        long sum = 0;
        System.out.println("请输入一个整数");
        long a  =sc.nextInt();
        long b=a;             //记录尾数
        long c=a;             //加的次数
        for(long i=0;i<c;i++) {    //得出加的最大次数
            sum+=a;           //累加和
            a=a*10;           //向前移一位
            a+=b;             //加尾数
        }
        System.out.println("这个整数的公式结果为:"+sum);
    }

}

输出结果图:

第十二题:

package com.lianXi;

import java.util.Scanner;

/*
 * 题目:一个数假设恰好等于它的因子之和,这个数就称为 "完数 "。
列:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。
*/ public class lianXi012 { public static void main(String[] args) { Scanner sc =new Scanner(System.in); System.out.println("请输入一个整数:"); int a = sc.nextInt(); int c =a; int b =0; System.out.println(a+"的的正约数有:"); for(int i=1;i<=a;i++) { if(a%i==0) { b+=i; System.out.print(i+" ,"); } } System.out.println(); if(c==b-c) { System.out.println("这是一个完数"); }else { System.out.println("这不是一个完数"); } } }

输出结果图:

第十三题:

package com.lianXi;
/*
 * 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;
 * 再落下,求它在     第10次落地时,共经过多少米?第10次反弹多高? 
 */
public class lianXi013 {

    public static void main(String[] args) {
        double a =100;
        double b =0;
        double sum = 0;
        for(int i=0;i<=10;i++) {
            sum+=a;
            b=a/2;
            a=b;
            if(i==10) {
                System.out.println("第10次反弹是:"+a);
            }
            
        }
        System.out.println(" 第10次落地时,共经过多少米"+sum);
    }

}

输出结果图:

第十四题:

package com.lianXi;
/*
 * 题目:有1、2、3、4四个数字。能组成多少个互不同样且无反复数字的三位数?都是多少?  
 */
public class lianXi014 {

    public static void main(String[] args) {
        int n =0;
        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 && ++n != 0)
                        System.out.println("NO."+n+":"+i+""+j+""+k);
        System.out.println("共有:" + n + "");
    }

}

输出结果图:

第十五题:

package com.lianXi;
/*
 * 题目:一个整数,它加上100后是一个全然平方数,
 * 再加上168又是一个全然平方数,请问该数是多少?  
 */
public class lianXi015 {

    public static void main(String[] args) {
        int x;int y;
        for(int i=0;i<1000;i++) {
            x=(int)Math.sqrt(i+100);
            y=(int)Math.sqrt(i+268);
            if(x*x==i+100&&y*y==i+268) {
                System.out.println("1000里面该数有:"+i);
            }
        }

    }
}

输出结果图:

 第十六题:

package com.lianXi;

import java.util.Scanner;

/*
 * 题目:输入某年某月某日,推断这一天是这一年的第几天

1,3,5,7,8,10,12这些月为31天, 2月为29天, 其他为30天
*/
public class lianXi016 {

    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);
        int mt = 0;
        System.out.println("请输入你要查询的月份:");
        int y = sc.nextInt();
        System.out.println("请输入你要查询的第几天:");
        int t = sc.nextInt();
        for(int i=1;i<y-1;i++) {
            if(i==2) {
                mt+=29;
            }
            if(i<=7&&i!=2) {
                if(i%2==0) {
                    mt+=30;
                }else {
                    mt+=31;
                }
            }else {
                if(i%2==0) {
                    mt+=31;
                }else {
                    mt+=30;
                }
            }
        }
        int a =mt+t;
        System.out.println("这一天是这一年的第"+a+"");
    }

}

输出结果图:

第十七题:

package com.lianXi;

import java.util.Arrays;
import java.util.Scanner;

/*
 * 题目:输入三个整数x,y,z。
 * 请把这三个数由小到大输出
 */
public class lianXi017 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] ss = new int[3];
        System.out.println("请输入第一个数");
        ss[0] =sc.nextInt();
        System.out.println("请输入第二个数");
        ss[1] =sc.nextInt();
        System.out.println("请输入第三个数");
        ss[2] =sc.nextInt();
        Arrays.sort(ss);
        System.out.println("这三个数由小到大输出结果为:");
        for(int s:ss) {
            System.out.println(s);
        }
    }

}

输出结果图:

第十八题:

package com.lianXi;
/*
 * 题目:猴子吃桃问题:猴子第一天摘下若干个桃子。
 * 当即吃了一半,还不瘾,又多吃了一个     第二天早上又将剩下的桃子吃掉一半。
 * 又多吃了一个。以后每天早上都吃了前一天剩下     的一半零一个。
 * 到第10天早上想再吃时,见仅仅剩下一个桃子了。求第一天共摘了多少。   
 */
public class lianXi018 {

    public static void main(String[] args) {
        int x=1;
        for(int j=9;j>=1;j--) {
            x=2*(x+1);

        }

        System.out.println("第一天共摘了多少"+x);
    }

}

输出结果图:

 第十九题:

package com.lianXi;
/*
 * 有一分数序列:2/1,3/2,5/3,8/5。13/8。21/13...
 * 求出这个数列的前20项之和。
 */
public class lianXi019 {

    public static void main(String[] args) {
        double a =2;
        double b = 1;
        double c = 0;
        double sum =0;
        for(int i=0;i<20;i++) {
            sum+=a/b;
            c=a;
            a=c+b;
            b=c;
        }
        System.out.println(sum);
    }

}

输出结果图:

 第二十题:

package com.lianXi;
/*
 * 求1+2!+3!+...+20!的和
 * 1+2*1+3*2*1+4*3*2*1+5*4*3*2*1+......+20*19*18*17*16*15...*3*2*1
 */
public class lianXi20 {

    public static void main(String[] args) {
        long sum = 0;
        long a =1;
        for(int i=1;i<=20;i++) {
            a*=i;
            sum+=a;
        }
        System.out.println(sum);
    }

}

输出结果图:

 第二十一题:

package com.lianXi;
/*
 *有5个人坐在一起。问第五个人多少岁?他说比第4个人大2岁。
 *问第4个人岁数,他说比第3个人大2岁。
 *问第3个人,又说比第2人大两岁。
 *问第2个人。说比第一个人大两岁。
最后问第一个人。他说是10岁。请问第五个人多大?   
 */
public class lianxi021 {

    public static void main(String[] args) {
           int n = 10;
            for (int i = 0; i < 4; i++) {
                n = n + 2;
            }
            System.out.println( "第五个人"+n+"" );
    }

}

输出结果图:

 第二十二题:

package com.lianXi;
/*
 * 题目:海滩上有一堆桃子,五仅仅猴子来分。
 * 第一仅仅猴子把这堆桃子凭据分为五份,多了一个,
 * 这仅仅猴子把多的一个扔入海中,拿走了一份。
 * 第二仅仅猴子把剩下的桃子又平均分成五份,又多了一个。
 * 它相同把多的一个扔入海中,拿走了一份,第三、第四、第五仅仅猴子都是这样做的,
 * 问海滩上原来最少有多少个桃子?   
 */
public class lianXi21 {

    public static void main(String[] args) {
        int sum = 0;
        for (int i = 6;; i++) {// 最少6个分最后一次
            sum = i;// 桃子数
            for (int j = 0; j < 5; j++) {// 分的次数循环
                if ((sum - 1) % 5 == 0 && j < 5) {// 如果扔一个后能均分5份,继续分
                    sum = (sum - 1) / 5 * 4;// 每分一次剩余桃子数
                    if (j == 4) {// 如果已分5次,且仍能除尽,输出,退出程序
                        System.out.println(i);
                        System.exit(0);
                    }
                }
            }
        }

    }
}

输出结果图:

代码百度网盘链接:https://pan.baidu.com/s/1_1sU3J_UC8xqRby_eo22FQ
提取码:8y8d

猜你喜欢

转载自www.cnblogs.com/cxlbzdcom/p/10223953.html