2019.1.4 任务

作业链接:https://pan.baidu.com/s/1YQW-m91XEeFaPl4vZhP4PQ 

提取码:ioi6

1.

//一个人很倒霉,不小心打碎了一位妇女的一篮子鸡蛋。为了赔偿便询问篮子里有多少鸡蛋。那妇女说,她也不清楚,

// 只记得每次拿两个则剩一个,每次拿3个则剩2个,每次拿5个 

//则剩4个,若每个鸡蛋1元,请你帮忙编程,计算最少应赔多少钱? 要求:用循环语句实现,

package com.homework;

public class Demo {
    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);
                break;
            }
        }
    }
}

2.

//从键盘接收一个整数N,统计出1~N之间能被7整除的整数的个数,以及这些能被7整除的数的和
package com.homework;

import java.util.Scanner;

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

3.

//古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,

//假如兔子都不死,问每个月的兔子对数为多少?

//程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....

package com.homework;

import java.util.Scanner;

public class Demo2 {
    public static void main(String[] args) {
        int rabbit = 1; //上月兔子的数量和
        int newRabbit = 1; //这一月生成兔子的数量和  
        int count; //中间值 用来存数量的
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第几月份:");
        int mon=sc.nextInt();
        for(int i= 3 ;i<=mon; i++){
            count = newRabbit;
            newRabbit = rabbit + newRabbit;
            rabbit = count;
            System.out.println("第"+i+"月份"+"\t兔子总共 "+newRabbit+"对");
        }
    }
}

4.

//一个笼子有35个头,94只脚,问鸡和兔各有多少?
package com.homework;

public class Demo3 {
    public static void main(String[] args) {
        for(int i=0;i<=35;i++) {
            for(int j=0;j<=35;j++) {
                if(i+j==35&&2*i+4*j==94) {
                    System.out.println("鸡有"+i+"只"+"兔有"+j+"只");
                }
            }
        }
    }
}

5.

package com.homework;

public class Demo4 {
    public static void main(String[] args) {
        //马克思手稿中有一道趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆里吃饭共花了50先令,
        //每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,问男人、女人和小孩各有几人?
        for(int man=1;man<30;man++) {
            for(int woman=1;woman<30;woman++) {
                for(int child=1;child<30;child++) {
                    if(3*man+2*woman+child==50&&man+woman+child==30) {
                        System.out.println("男人有"+man+"女人有"+woman+"小孩有"+child);
                    }                    
                }
            }
        }
    }
}

6.

package com.homework;

public class Demo5 {
    public static void main(String[] args) {
        //判断101-200之间有多少个素数,并输出所有素数
        //素数是:只能被1或本身整除的数
        for(int i=101;i<200;i++){
            boolean judeg=false;
            for(int j=2;j<i;j++){
                if(i%j==0){
                    judeg=true;
                    break;
                }
            }   
            if(judeg==false){
                System.out.print(i+" ");
            }
        }
    }
}

7.

package com.homework;

public class Demo6 {
    public static void main(String[] args) {
        //打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
        //例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
        //程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
        int gewei,shiwei,baiwei;
        for(int i=100;i<=999;i++) {
            gewei=i%10;
            shiwei=i/10%10;
            baiwei=i/100;
            if(i==Math.pow(gewei, 3)+Math.pow(shiwei, 3)+Math.pow(baiwei, 3)) {
                System.out.print(i+" ");
            }
        }
    }
}

 

8.

//将一个正整数分解质因数。比如:输入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的值,反复运行第一步。 

package com.homework;

import java.util.Scanner;

public class Demo7 {
    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);
        System.out.println("请输入一个正整数");
        int num=sc.nextInt();
        System.out.print("正整数"+num+"=");
        for(int i=2;i<=num;i++) {
            boolean judeg=false;
            if(num%i==0) {
                System.out.print(i+"*");
                num=num/i;
                for(int j=2;j<num;j++) {    //被除完的数在判断是否为素数
                    if(num%j==0) {
                        judeg=true;
                        break;
                    }
                }
                if(judeg==false) {          //如果是素数就退出循环
                    break;
                }
                i=1;                        //从1开始重新循环 来判断已经除完的数
            }
        }
        System.out.println(num);
    }
}

 

9.

package com.homework;

import java.util.Scanner;

public class Demo8 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学生成绩:");
        int scores=sc.nextInt();
        if(scores>=90) {
            System.out.println("学生成绩为A");
        }else if(scores>=60&&scores<=89) {
            System.out.println("学生成绩为B");
        }else {
            System.out.println("学生成绩为C");
        }
    }
}

10.

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

/**在循环中,仅仅要除数不等于0。用较大数除以较小的数。将小的一个数作为下一轮循环的大数。

取得的余数作为下一轮循环的较小的数。如此循环直到较小的数的值为0,返回较大的数,

此数即为最大公约数,最小公倍数为两数之积除以最大公约数。* /

package com.homework;

import java.util.Scanner;

public class Demo9 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int tmp;
        System.out.println("请输入一个正整数:");
        int num1=sc.nextInt();
        System.out.println("请再输入一个正整数:");
        int num2=sc.nextInt();
        if(num1<num2) {
            tmp=num2;
            num2=num1;
            num1=tmp;
        }
        int n=num1*num2,t=num1%num2;
        while(num1%num2!=0) {
            num1=num2;
            num2=t;
            t=num1%num2;
        }
        System.out.println("最大公约数是"+num2);
        System.out.println("最小公倍数是"+n/num2);
    }
}

 11.

package com.homework;

import java.util.Scanner;

public class Demo10 {
    public static void main(String[] args) {
        //题目:求s=a+aa+aaa+aaaa+aa...a的值。当中a是一个数字。
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入位数值:");
        int cnt = sc.nextInt();
        System.out.println("请输入一个数");
        int s=sc.nextInt();
        System.out.print("sum=");
        int sum=0,nums=0;
        for(int i=1;i<=cnt;i++) {
            nums+=s;
            sum+=nums;
            s=s*10;
            System.out.print(nums+"+");
        }
        System.out.println("0");
        System.out.println("最后的总和是:"+sum);
    }
}

12.

//题目:一个数假设恰好等于它的因子之和,这个数就称为 "完数 "
package com.homework;

public class Demo11 {
    public static void main(String[] args) {
        int sun;
        for(int i=1;i<=1000;i++){
            sun=0;
            for(int j=1;j<i;j++){
                if(i%j==0)
                    sun+=j;
            }
            if(i==sun)
                System.out.println("完全数为:"+i);
        }
    }
}

13.

//题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,

//求它在第10次落地时,共经过多少米?第10次反弹多高

package com.homework;

public class Demo12 {
    public static void main(String[] args) {
        double high=100;
        double nhigh=high/2;
        for(int i=2;i<10;i++) {
            high=(high+nhigh*2);
            nhigh=nhigh/2;
        }
        System.out.println("落地经过" + high +"米");
        System.out.println("反弹高度是" + nhigh + "米");
    }
}

14.

//题目:有1、2、3、4四个数字。能组成多少个互不同样且无反复数字的三位数?都是多少

package com.homework;

public class Demo13 {
    public static void main(String[] args) {
        int t=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) {
                        t+=1;
                        System.out.println(i*100+j*10+k);
                    }
        System.out.println("能组成"+t+"组三位数");
    }
}

15.

//一个整数,它加上100后是一个全然平方数,

//再加上168又是一个全然平方数,请问该数是多少

package com.homework;

public class Demo14 {
    public static void main(String[] args) {
//        int i=0,c=1;
//        while(c!=0)
//        {
//            int x=(int) Math.sqrt(i+100);
//            int y=(int) Math.sqrt(i+168);
//            if(x*x==(i+100)&y*y==(i+168))
//            {
//                System.out.println("这个数是:"+i);
//                c=0;
//            }
//            i++; 
//        }
        for(int i=1;i<1000;i++) {
            for(int j=1;j<1000;j++) {
                if(i+100==j*j) {
                    for(int k=1;k<1000;k++) {
                        if(i+268==k*k) {
                            System.out.println(i);
                        }
                    }
                }
            }
        }
    }
}

16.

//题目:输入某年某月某日,推断这一天是这一年的第几天
package com.homework;

import java.util.Scanner;

public class Demo15 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int sum = 0;
        int day=0;
        System.out.println("输入年;");
        int years=sc.nextInt();
        System.out.println("输入月;");
        int month=sc.nextInt();
        System.out.println("输入日;");
        int days=sc.nextInt();
        for(int i=1;i<month;i++) {
            switch(i) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                day=31;
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                day=30;
                break;
            case 2:
                //普通闰年:能被4整除但不能被100整除的年份为普通闰年。(如2004年就是闰年,1999年不是闰年);
                //世纪闰年:能被400整除的为世纪闰年。(如2000年是闰年,1900年不是闰年);
                if ((years % 100 !=0 &&years % 4 == 0) || (years % 100 == 0 && years%400==0)) {
                    day = 29;
                } else {
                    day = 28;
                }
                break;
            default:
                break;
            }
            sum+=day;
        }
        System.out.println("这是"+years+"年的第"+(sum+days)+"天");
    }

}

17.

//题目:输入三个整数x,y,z。请把这三个数由小到大输出
package com.homework;

import java.util.Scanner;

public class Demo16 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num[]=new int[3];
        for(int i=0;i<num.length;i++) {
            System.out.println("请输入第"+(i+1)+"个值");
            num[i]=sc.nextInt();
        }
        for(int i=0;i<num.length-1;i++) {
            for(int j=0;j<num.length-i-1;j++) {
                int tem;
                if(num[j]>num[j+1]) {
                    tem=num[j];
                    num[j]=num[j+1];
                    num[j+1]=tem;
                }
            }
        }
        System.out.println("比较完后");
        for(int nums:num) {
            System.out.print(nums+" ");
        }
    }
}

18.

//题目:猴子吃桃问题:猴子第一天摘下若干个桃子。当即吃了一半,还不瘾,又多吃了一个     

//第二天早上又将剩下的桃子吃掉一半。又多吃了一个。以后每天早上都吃了前一天剩下     

//的一半零一个。到第10天早上想再吃时,见仅仅剩下一个桃子了。求第一天共摘了多少。  

package com.homework;

public class Demo17 {
    public static void main(String[] args) {
        for(int i=10;i<10000;i++) {
            int a = i;
            for(int j=1;j<=10;j++) {
                a = (a/2 - 1);
            }
            if(a==1) {
                System.out.println("第一天总共摘了"+i+"个桃子.");
                break;
            }
        }
    }
}

19.

//题目:有一分数序列:2/1,3/2,5/3,8/5。13/8。21/13...求出这个数列的前20项之和。
package com.homework;

public class Demo18 {
    public static void main(String[] args) {
        double num1[]=new double[20];
        double num2[]=new double[20];
        double sum=0;
        num1[0]=2;
        num1[1]=3;
        num2[0]=1;
        num2[1]=2;
        for(int i=2;i<=num1.length-1;i++) {
            num1[i]=num1[i-1]+num1[i-2];
            num2[i]=num2[i-1]+num2[i-2];            
        }
        for(int j=0;j<20;j++) {
            sum+=num1[j]/num2[j];
        }
        System.out.println(sum);
    }
}

20.

//求1+2!+3!+...+20!的和 
package com.homework;

public class Demo19 {
    public static void main(String[] args) {
        long sum=0,num=1;         
        for(int i=1;i<=20;i++) {
            num*=i;               
            sum+=num;              
        }
        System.out.println("1+2!+3!+...+20!="+sum);
    }
}

21.

//题目:有5个人坐在一起。问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,

//他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人。说比第一个人大两岁。

//最后问第一个人。他说是10岁。请问第五个人多大

package com.homework;

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

    }
}

22.

 

posted @ 2019-01-04 20:46  毕家唆  阅读(375)  评论(0编辑  收藏  举报