离开多重循环5.2.3

如何用1角2角和5角的钱凑出10元以内的金额?

#include <stdio.h>

int main()
{
	int x;
	int one, two, five;
	scanf("%d", &x);
	for(one=1; one<x*10; one++){
		for(two=1; two<x*10/2; two++){
			for(five=1; five<x*10/5; five++){
				if(one+two*2+five*5==x*10){
					printf("可以用%d个1角加%d个2角加%d个5角得到%d元\n", one, two, five, x);
				}
			}
		}
	}
    return 0;
}

 用了三个循环,很容易理解

输入的数乘于10就是多少角    然后看需要多少个几角的

如何让他有一个结果就输出  这时候加break是没用的  这个break只让他离开了他所在的最内层循环

 让他跳出了第三层循环到了第二层循环    

break和continue都只能对他所在的那一层循环去做  不能一下跳出所有的循环

#include <stdio.h>

int main()
{
	int x;
	int exit=0;
	int one, two, five;
	scanf("%d", &x);
	for(one=1; one<x*10; one++){
		for(two=1; two<x*10/2; two++){
			for(five=1; five<x*10/5; five++){
				if(one+two*2+five*5==x*10){
					printf("可以用%d个1角加%d个2角加%d个5角得到%d元\n", one, two, five, x);
					exit=1;
					break;
				}
			}
			if(exit==1) break;
		}
		if(exit==1) break;
	}
    return 0;
}

 

 不能直接写break 应为这样在不符合条件的时候也会跳出去     加上变量exit之后  在确定有最终结果后exit就会等于1  剩余循环的if语句满足条件才可以跳出   

这种运用break的方法叫做     接力break

还有另外一种方案     goto    更简单   只需在需要离开的地方加上goto语句就行了 

                                goto   写法
#include <stdio.h>
................
...............
...............
    goto out;
............
.........
........
out:
   return 0;
..................

 

#include <stdio.h>

int main()
{
	int x;
	int one, two, five;
	scanf("%d", &x);
	for(one=1; one<x*10; one++){
		for(two=1; two<x*10/2; two++){
			for(five=1; five<x*10/5; five++){
				if(one+two*2+five*5==x*10){
					printf("可以用%d个1角加%d个2角加%d个5角得到%d元\n", one, two, five, x);
					goto out;
				}
			}
		}
	}
out:
    return 0;
}

非常方便  省着加变量

goto out;  他会跳到有out的地方     注意第二个out后面必须有冒号

goto 非常适用于从多重循环跳到循环外面去 其它地方最好不要使用!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值