1. 程式人生 > >2019-1-5,迴圈演算法作業

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