问题描述
用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++ ) {
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在程序反操作上很好用。
|