问题:
如何用1角2角5角硬币凑出10元以内的整数呢?
直接上代码:
#include<stdio.h>
int main()
{
int x;
int one, two, five;//one two five 分别代表一角两角五角
scanf("%d",&x);
for(one = 0;one <= x*10;one++){//如果x为两块,x*10为20角(换算单位)
for(two = 0;two <=x*10/2;two++){//如果x为两块,x*10/2为20角
for(five = 0;five <=x*10/5;five++ ){//如果x为两块,x*10/5为20角
if(one + two*2 + five*5 == x*10){//循环条件 为三种硬币凑起来刚好为x*10角
printf("可以用%d个1角加%d个2角加%d个五角得到%d元\n",one,two,five,x);
}
}
}
}
return 0;
}
运行结果:
如果只输出1种结果呢
我们可以用goto
C 语言中的 goto 语句允许把控制无条件转移到同一函数内的被标记的语句。
上代码
#include<stdio.h>
int main()
{
int x;
int one, two, five;//one two five 分别代表一角两角五角
scanf("%d",&x);
for(one = 0;one <= x*10;one++){//如果x为两块,x*10为20角(换算单位)
for(two = 0;two <=x*10/2;two++){//如果x为两块,x*10/2为20角
for(five = 0;five <=x*10/5;five++ ){//如果x为两块,x*10/5为20角
if(one + two*2 + five*5 == x*10){//循环条件 为三种硬币凑起来刚好为x*10角
printf("可以用%d个1角加%d个2角加%d个五角得到%d元\n",one,two,five,x);
goto out;
}
}
}
}
out:
return 0;
}
运行结果: