【C语言学习04】跳出嵌套循环

  • Post author:
  • Post category:其他

问题描述

用C语言实现“用1角2角和5角拼成几元几元”并只输出一个结果

这个问题可以使用“break”跳出循环,也可以使用“goto”跳出循环

一、“break”跳出循环

1.程序代码

#include<stdio.h>
int main(){
	int x;
	scanf("%d", &x);
	int one, two, five;
	int exit = 0;
	for (one=1; one<x*10; one++ ) { //用1角2角和5角拼成几元几元
		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;
}

2.运行结果
在这里插入图片描述

break只能跳出当前循环,并不能直接跳出嵌套,所以要用三个“break”

二、 “goto”跳出循环

1.程序代码

#include<stdio.h>
int main(){
	int x;
	scanf("%d", &x);
	int one, two, five;
	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;
}

2.运行结果
在这里插入图片描述
“goto”语句注意事项
1.“goto”可以跳出多重循环,使程序直接跳到“out:”标号位置正常执行;
2.goto来回这么跳,在程序庞大后,在调试时很难找到错误,所以goto语句使用较少,也使得代码更容易阅读;
3.goto容易出错,但其仍然有存在的价值,在单个函数中使用goto基本不可能出错,goto在程序反操作上很好用。


版权声明:本文为m0_51325544原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。