如何用C语言实现用1角、2角和5角的硬币凑出10元以下的金额
break和continue
只能对它所在的那层循环
方法①:接力break
#include <stdio.h>int main() {int x;int one,two,five;int exit =0;scanf("%d",&x);for(one=1;one<x*10/1;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个一角加%d个2角加%d个5角得到%d元\n",one,two,five,x);exit=1;break;}}if(exit==1)break;}}//if(exit==1) break;}
方法②:goto
C 语言中的goto语句允许把控制无条件转移到同一函数内的被标记的语句。
**注意:**在任何编程语言中,都不建议使用goto语句。因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。任何使用 goto 语句的程序可以改写成不需要使用 goto 语句的写法。
语法
C 语言中goto语句的语法:
goto label;...label: statement;
在这里,label可以是任何除 C 关键字以外的纯文本,它可以设置在 C 程序中goto语句的前面或者后面。
流程图
#include <stdio.h>int main() {int x;int one,two,five;int exit =0;scanf("%d",&x);for(one=1; one<x*10/1; 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个一角加%d个2角加%d个5角得到%d元\n",one,two,five,x);exit=1;goto out;}}//if(exit==1)break;}}out:return 0;//if(exit==1) break;}