描述:
来源:MOOC C语言程序设计 浙江大学 翁老师,有改编
给定人民币整元数值(如1元,5元,10元,100元),将该币值的钱全部兑换为零钱(一角、两角、五角)且每次兑换每种面值的零钱均出现。请给出兑换方案。
输出一种兑换方案:
//代码1
#include <stdio.h>
int main()
{
int x;
int one, two, five;
int exit = 0;
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; //关键字 break作用:
}
}
if ( exit == 1 ) break;
}
if ( exit == 1 ) break;
}
return 0;
}
或 使用关键词 goto
//代码2
#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; //关键字 goto out
}
}
}
}
out: // out
return 0;
}
代码2输出效果:
5
可以用1个1角加2个2角加9个5角得到5元
输出全部兑换方案:
#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);
break; //关键字 break 作用:
}
}
}
}
return 0;
}
拓展:
- 用
do{}while()
或while(){}
重写上述程序