C语言换零钱:把一元人民币兑换成硬币,共有多少种兑换方法?

以下是我敲的代码,经Microsoft Visual C++编译后出现两处错误,一处警告,为什么呢?我纠不出来啊
#include<stdio.h>
int main()
{
float a=0.1,b=0.5;
int count=1;
for(i=0;i<=10;i++)
{
for(g=0;g<=2;g++)
if(a*i+b*g==1)
count++;
}
printf("共有%d种兑换方法\n",count);
return 0;
}

第1个回答  2013-02-10
#include<stdio.h>
#define SUM 10//定义总的钱
#define ONE 1//定义一角
#define FIVE 5//定义五角
int main()
{
int i;
int count = 0;//初始化为0
//控制循环数量,考虑兑换不会超过SUM/FIVE,
//所以可以以此控制循环次数,加快运行速度
for(i=0;i<=SUM/FIVE;i++)
if((SUM - FIVE*i)>=0)//判断,只要剩下的是大于等于0的硬币数,即满足要求
count++;
printf("共有%d种兑换方法\n",count);
return 0;
}
第2个回答  2013-02-10
你程序中的问题:
1.i和g这两个循环控制变量要先声明才能使用。
2.count的初始值为0而不是1。
3.a*i+b*g == 1,浮点数不能用==和!=来比较。

帮你改了。
#include<stdio.h>
int main()
{
int a, b, i, j, count;

a = 1;
b = 5;
count = 0;
for (i = 1; i <= 10; i++)
{
for ( j = 1; j <= 2; j++)
if(a*i+b*j == 10)
count++;
}
printf("共有%d种兑换方法\n",count);
return 0;
}追问

i,j不应该由0开始么?

追答

嗯,应该从0开始。没注意呵呵

本回答被提问者采纳
第3个回答  2013-02-10
for(int i = 0 后面不变
for(int g = 0 后面不变

#include<stdio.h>
int main()
{
float a=0.1,b=0.5;
int count=1;
for(int i=0;i<=10;i++)
{
for(int g=0;g<=2;g++)
if(a*i+b*g==1)
count++;
}
printf("共有%d种兑换方法\n",count);
return 0;
}
第4个回答  2013-02-10
int count=1; 改为 int count=0,i,g; 定义变量 i 和 g。

for(i=0;i<=10;i++) 改为 for(i=1;i<=10;i++) 优化
第5个回答  2013-02-10
对我来说,最小面值的硬币就是一元了追问

我用一角和五角的硬币来编写的

相似回答