循环结构练习题(二)

1、我们在控制台里输出以下的图形

    public static void main(String[] args) {
		/*
		 * 			*
		 * 		   ***
		 * 		  *****
		 */
		//外层循环控制行数
		for (int i = 1; i <= 3; i++) {
			//输出每一行前面的空格“ ”
			for (int j = 3-i; j >0; j--) {
				System.out.print(" ");
			}
			//输出每一行的“*”
			for (int k = 2*i-1; k >0; k--) {
				System.out.print("*");
			}
			//换行
			System.out.println();
		}

	}

    public static void main(String[] args) {
		/*
		 * 			   ******
		 * 			  ********
		 * 			 **********
		 * 			************
		 * 		   **************
		 * 		  ****************
		 * 		   **************
		 * 			************
		 * 			 **********
		 * 			  ********
		 * 			   ******
		 */
		//上半截图形:外层循环控制行数
		for (int i = 1; i <= 6; i++) {
			//输出每一行前面的空格“ ”
			for (int j = 6-i; j >0; j--) {
				System.out.print(" ");
			}
			//输出每一行的“*”
			for (int k = 2*i+4; k >0; k--) {
				System.out.print("*");
			}
			//换行
			System.out.println();
		}
		
		//下半截图形:外层循环控制行数
		for (int i = 1; i <= 5; i++) {
			//输出每一行前面的空格“ ”
			for (int j = i; j >0; j--) {
				System.out.print(" ");
			}
			//输出每一行的“*”
			for (int k = 16-2*i; k >0; k--) {
				System.out.print("*");
			}
			//换行
			System.out.println();
		}
		
	}

 

    public static void main(String[] args) {
		/*
		 * 					*
		 * 			   	   * *
		 * 			  	  *   *
		 * 				 *     *
		 * 				*       *
		 * 			   *         *
		 * 			  *           *
		 * 			 *             *
		 * 			*               *
		 * 			 *             * 
		 * 			  *           *
		 * 			   *         *
		 * 				*       *
		 * 				 *     *
		 * 				  *   *
		 * 				   * *
		 * 					*
		 */
		//上半截图形:外层循环控制行数
		System.out.println("        *");
		for (int i = 1; i <= 8; i++) {
			//输出每一行前面的空格“ ”
			for (int j = 8-i; j >0; j--) {
				System.out.print(" ");
			}
			//输出“*”
			System.out.print("*");
			//输出空格“ ”
			for (int k = 2*i-1; k >0; k--) {
				System.out.print(" ");
			}
			//输出“*”
			System.out.println("*");
		}
		
		//下半截图形:外层循环控制行数
		for (int i = 1; i <= 7; i++) {
			//输出每一行前面的空格“ ”
			for (int j = i; j >0; j--) {
				System.out.print(" ");
			}
			//输出“*”
			System.out.print("*");
			//输出空格“ ”
			for (int k = 15-2*i; k >0; k--) {
				System.out.print(" ");
			}
			//输出“*”
			System.out.println("*");
		}
		System.out.println("        *");

	}

 

    public static void main(String[] args) {
		/*
		 * 		***************
		 * 		******* *******
		 * 		******   ******
		 * 		*****     *****
		 * 		****       ****
		 * 		***         ***
		 * 		**           **
		 * 		*             *
		 */
		//外层循环控制行数
		System.out.println("***************");
		for (int i = 1; i <= 7; i++) {
			//输出每一行前面的“*”
			for (int j = 8-i; j >0; j--) {
				System.out.print("*");
			}
			//输出每一行的空格“ ”
			for (int k = 2*i-1; k >0; k--) {
				System.out.print(" ");
			}
			//输出每一行后面的“*”
			for (int m = 8-i; m >0;m--) {
				System.out.print("*");
			}
			//换行
			System.out.println();
		}
		
	}

2、实现双色球的彩票功能。规则:从36个红球中随机选择不重复的6个数,从15个篮球中随机选择1个组成一注彩票。可以选择买多注。

/*
	 * 练习:实现双色球的彩票功能。规则:从33个红球中随机选择不重复的6个数,从16个篮球中随机选择1个组成一注彩票。可以选择买多注。
	 */
	public static void main(String[] args) {

		// 输出篮球
		int blueBall = (int) (Math.random() * 16 + 1);

		// 输出红球
		int redBall1 = (int) (Math.random() * 33 + 1);
		int redBall2 = 0;
		int redBall3 = 0;
		int redBall4 = 0;
		int redBall5 = 0;
		int redBall6 = 0;

		while (true) {
			int redBall = (int) (Math.random() * 33) + 1;
			if (redBall6 != 0) {// redBall6不等于0说明redBall6已经获得值了
				break;// redBall6获得值了就退出循环
			}
			if (redBall != redBall1 && redBall2 == 0) {
				redBall2 = redBall;
			} else if (redBall != redBall1 && redBall != redBall2 && redBall3 == 0) {
				redBall3 = redBall;
			} else if (redBall != redBall1 && redBall != redBall2 && redBall != redBall3 && redBall4 == 0) {
				redBall4 = redBall;
			} else if (redBall != redBall1 && redBall != redBall2 && redBall != redBall3 && redBall != redBall4
					&& redBall5 == 0) {
				redBall5 = redBall;
			} else if (redBall != redBall1 && redBall != redBall2 && redBall != redBall3 && redBall != redBall4
					&& redBall != redBall5 && redBall6 == 0) {
				redBall6 = redBall;
			}
		}

		System.out.println(redBall1 + " " + redBall2 + " " + redBall3 + " " + redBall4 + " " + redBall5 + " " + redBall6
				+ "---" + blueBall);

	}

3、输出斐波那契数列数列的前20项

/*
	 * 练习:输出斐波那契数列数列的前20项
	 * 
	 * 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家莱昂纳多·斐波那契(Leonardoda
	 * Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”, 指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……
	 * 规则:从第三个数开始,每一个数是前面两个数之和
	 */
	public static void main(String[] args) {
		for (int counter = 0; counter <= 10; counter++) {
			System.out.println(fibonacci(counter));
		}
	}

	public static long fibonacci(long number) {
		if ((number == 0) || (number == 1))
			return number;
		else
			return fibonacci(number - 1) + fibonacci(number - 2);
	}

4、将100元兑换为1元、5元、10元的零钱,请问有多少种兑换方法?

    public static void main(String[] args) {

        /*
        * 将100元兑换为1元、5元、10元的零钱,请问有多少种兑换方法?
        * */

        //拿到这题时首先我们要知道1元不需要我们考虑,只要考虑10元和5元就行剩下的交给一元直接补满
        int money = 100;

        //这里定义一个变量用来存储多少种方法
        int num = 0;
        //这里十元的张数用i表示,这里五元的张数用j表示
        for (int i=0;i<=10;i++){
            for (int j=0;j<=20;j++){
                if (i*10+j*5<=money){
                    num++;
                }
            }
        }
        System.out.println("有"+num+"种兑换方法");
    }

5、用100元人民币兑换10元,5元,1元的纸币(每种都要有)共50张,计算有多少种兑换方案

    public static void main(String[] args) {

        /*
         * 用100元人民币兑换10元,5元,1元的纸币(每种都要有)共50张,
         * 计算有多少种兑换方案
         * */

        /*
        * 拿到这题要考虑的东西就比较多了
        *   1元也要加上考虑
        *   10元5元1元都必须有,且总数不超过50张
        *   那么10元和5元之和必须要大于等于60
        * */

        int money = 100;

        //这里定义一个变量用来存储多少种方法
        int num = 0;
        //这里十元的张数用x表示,五元的张数用y表示,一元用z表示
        int x;
        int y;
        int z;
        for (x=1;x<=9;x++){
            for (y=1;y<=17;y++){
                if (x*10+y*5<money){
                    z = money -(x*10+y*5);
                    if (x+y+z<=50){
                        num++;
                    }
                }
            }
        }
        System.out.println("有"+num+"种兑换方法");
    }

6、设计Java程序,假设有50瓶饮料,喝完3个空瓶可以换一瓶饮料,依次类推,请问总共喝了多少瓶饮料?

    public static void main(String[] args) {

        /*
         * 设计Java程序,假设有50瓶饮料,喝完3个空瓶可以换一瓶饮料,依次类推,请问总共喝了多少瓶饮料?
         * */

        /*
        * 这里我们已经知道有50瓶饮料,我们只需要计算一遍喝一遍换能换多少瓶就行。
        * */

        //用来统计换饮料的数量
        int sun = 0;
        //用来统计什么时候可以换饮料
        int a = 0;
        for (int i=1;i<=50+sun;i++){
            a++;
            if (a==3){
                sun++;
                a=0;
            }
        }
        System.out.println("总共喝了"+(sun+50)+"瓶饮料");
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值