把一块钱兑换成1分2分5分的硬币,有多少种!C语言编程

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
int a,b,c;
{
for(a=0;a<=20;a++)
for(b=0;b<=50;b++)
c=100-a-b;
if(a*5+b*2+c*1==100)
printf("%d %d %d\n",a,b,c);
}
}这样编写哪里错了? 为什么??

for(a=0; a <= 20; a++) {
for(b=0; b <= 50; b++) {
for(c=0; c <= 100; c++) {
if(a * 5 + b * 2 + c * 1 == 100)
printf("%d %d %d\n",a,b,c);
}
}
}
首先你的逻辑不对,c代表1分,也是要递增的,如果要像你那样写,c应该等于100-5*a-2*b
然后改成
for(a=0; a <= 20; a++) {
for(b=0; b <= 50; b++) {
c=100 - 5 * a - 2 * b;
if(c >= 0)
printf("%d %d %d\n",a,b,c);
}
}
其次你的for循环范围不对,for如果不加括号的话只执行后面一句,你把括号加上才可以把后面的if包括进去
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-11
#include "stdio.h"
void main()
{
int a,b,c;
{
for(a=0;a<=20;a++)
for(b=0;b<=50;b++) {
c=100-a*5-b*2;
if( c >= 0 )printf("%d %d %d\n",a,b,c);
}
}
}
相似回答