【练习四】顺序结构(for)循环相关练习(一共31题)

目录

25:李白无事街上走,提壶去买酒。遇店加一倍,见花喝一斗,五遇花和店,喝光壶中酒,试问李白壶中原有多少斗酒?(使用for循环结构编程实现)

提示:采用逆向思维分析问题。

26:开发一个标题为“FlipFlop”的游戏应用程序。它从1计数到100,遇到3的倍数就替换为单词“Flip”,5的倍数就替换为单词“Flop”,既为3的倍数又为5的倍数则替换为单词“FlipFlop”。

27:生成13位条形码

Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验码。

例如:690123456789

计算其校验码的过程为:

@前十二位的奇数位和6+0+2+4+6+8=26

@前十二位的偶数位和9+1+3+5+7+9=34

@将奇数和与偶数和的三倍相加26+34*3=128

@取结果的个位数:128的个位数为8

@用10减去这个个位数10-8=2

所以校验码为2

(注:如果取结果的个位数为0,那么校验码不是为10(10-0=10),而是0)

实现方法ean13()计算验证码,输入12位条码,返回带验证码的条码。

例:输入:692223361219输出:6922233612192

28:求两个整数的最大公约数和最小公倍数

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

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

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

若有错误,请指正,不胜感激


25:李白无事街上走,提壶去买酒。遇店加一倍,见花喝一斗,五遇花和店,喝光壶中酒,试问李白壶中原有多少斗酒?(使用for循环结构编程实现)

提示:采用逆向思维分析问题。

public class DemoText1 {

    public static void main(String[] args) {
        /*
        简体路程:
        最后                              一开始
        花,酒,花,酒,花,酒,花,酒,花,酒
        */
        double sum=0;
        /*可以看到最后碰到花,喝完了酒,那么在最后一次酒哪里,酒只有二分之一
        (遇店加一倍),所以说,就先+1,再把整体除以二(遇店加一倍),就可
        以求出一开始的了。*/
        for(double i=1;i<=10;i++){
            if(i%2==0){
                sum=sum/2;
                System.out.println(sum);
            }else{
                sum++;
            }
        }
        System.out.println("有酒:"+sum);
    }
}

26:开发一个标题为“FlipFlop”的游戏应用程序。它从1计数到100,遇到3的倍数就替换为单词“Flip”,5的倍数就替换为单词“Flop”,既为3的倍数又为5的倍数则替换为单词“FlipFlop”。

public class DemoText2 {

	public static void main(String[] args) {
		
		System.out.println("------------FlipFlop------------");
		int num=0;
		for(int i=1;i<=100;i++){
			if(i%3==0){
				System.out.print("Flip\t");
			}
			if(i%5==0){
				System.out.print("Flop\t");
			}
			if(i%3==0 && i%5==0){
				System.out.print("FlipFlop\t");
			}
			System.out.print(i+"\t");
			num++;
			if(num%10==0)
				System.out.println();
		}
	}
}

27:生成13位条形码

Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验码。

例如:690123456789

计算其校验码的过程为:

@前十二位的奇数位和6+0+2+4+6+8=26

@前十二位的偶数位和9+1+3+5+7+9=34

@将奇数和与偶数和的三倍相加26+34*3=128

@取结果的个位数:128的个位数为8

@用10减去这个个位数10-8=2

所以校验码为2

(注:如果取结果的个位数为0,那么校验码不是为10(10-0=10),而是0)

实现方法ean13()计算验证码,输入12位条码,返回带验证码的条码。

例:输入:692223361219输出:6922233612192

import java.util.Scanner;

public class DemoText3 {

	public static void main(String[] args) {	
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入12位数字:");
		String str = sc.next();
		int jiShu = 0;
		int ouShu = 0;
		int sum = 0;
//		把偶数和奇数收集起来,用来做后面的乘法操作
		for(int i=0;i<12;i++){
			if(i%2==0){
			jiShu = jiShu+(int)str.charAt(i);
			}else{
			ouShu = ouShu+(int)str.charAt(i);
			}
			}
		sum=(jiShu+ouShu)*3;
//		求出校验位
		int geWei = sum%10;
//		判断是否为零
		if(geWei==0){
			System.out.println("最终结果:");
		System.out.println(str+0);
		}else{
			System.out.println("最终结果:");
			System.out.println(str+(10-geWei));
		}
	}
}

28:求两个整数的最大公约数和最小公倍数

import java.util.Scanner;

public class DemoText4 {

	public static void main(String[] args) {
//		最大公约数:指两个或多个整数共有约数中最大的一个。
//		最小公倍数:在两个或两个以上的自然数中,如果它们有相同的倍数,
//		这些倍数就是它们的公倍数,其中除0以外最小的一个公倍数
		Scanner sc = new Scanner(System.in);
		System.out.println("输入第一个数:");
		int min = sc.nextInt();
		System.out.println("输入第二个数:");
		int max = sc.nextInt();
		int x=0;
		if(max<min){
			x=max;
			max=min;
			min=x;
		}
//		能除尽这两个数,且最大的数,所以说,要从大到小,减少判断
			for(int a=min;a>1;a--){
				if(max%a==0 && min%a==0){
					System.out.println("最大公因数:"+a);
					break;
				}
			}
//		如果最大值是,小的值的倍数,那么,最小公倍数就是最大值的本身
		if(max%min==0){
			System.out.println("最小公倍数:"+max);
		}else{
			
			System.out.println("最小公倍数:"+max*min);
		}
	}

}

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

public class DemoText6 {

		public static void main(String[] args) {
//			将100元兑换为1元、5元、10元的零钱,请问有多少种兑换方法?
			int sum=0;
			for(int i=0;i<=10;i++){
				for(int a=0;a<=20;a++){
					for(int b=0;b<=100;b++){
						if(i*10+a*5+b==100){
							sum++;
						}
					}
					
				}
			}
			System.out.println("一共有:"+sum+"兑换方法。");
		}
}

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

public class DemoText5 {

	public static void main(String[] args) {
//		用100元人民币兑换10元,5元,1元的纸币(每种
//		都要有)共50张,计算有多少种兑换方案
		int sum=0;
//      因为每种都要有,所以,起始都为一
		for(int i=1;i<=10;i++){
			for(int a=1;a<=20;a++){
				for(int b=1;b<=100;b++){
					if(i*10+a*5+b==100){
						sum++;
					}
				}
				
			}
		}
		System.out.println("一共有:"+sum+"兑换方法。");
	}
}

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

public class DemoText7 {

	public static void main(String[] args) {
	
		int num=0;
		int sum=0;
		for(int i=50;i>0;i--){
//			计数,如果num==3,就加一瓶
			num++;
			if(num%3==0){
				i++;
//				num=0;这一句加不加都可以
			}
			sum++;	
		}
		System.out.println(sum);
	}
}

若有错误,请指正,不胜感激

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

老板大气,I am happy

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值