编程:换零钱。把一元钱全兑换成1分2分5分硬币,有多少种兑换方法?包括全1分或者全5分

请只用循环语句。我们暂时还没学其他函数,所以语句中只能有main函数输入输出函数而没有其他自定义的函数。

或者看这程序:

main()

{ int i,j,k,n;

n=100,k=0;

for(i=0;i<=n/5;i++)

for(j=0;j<=(n-i*5)/2;j++)

{ printf(“ 5 cent=%d\t 2 cent=%d\t 1 cent=%d\n”,i,j.n-i*5-j*2);

k++;

}

printf(“total times=%d\n”,k);

}

错在哪,这程序的运行结果中必须至少有5个5分了。这就使结果不全。。。
写出具体的程序。

这程序很好写,不过关键是看算法设计得怎么样,是不是最优的。我只写一个最简单的,自己尝试优化下,这也是编程的乐趣之一。

int fCent; //5分个数
int tCent; //2分个数
int oCent; //1分个数
int count=0; //兑换方法个数
for(fCent=0;fCent<=20;fCent++)
{
for (tCent=0;tCent<=50;tCent++)
{
oCent=100-5*fCent-2*tCent;
if(oCent>=0) count++;
}
}

把上面程序放到main中就可以了,你想要的输出就是count的值。还有看你说的题意,是否2分的不能是0个,如果有这个要求第二个for循环,也就是tCent 从1开始就可以了。
自己再去优化吧。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-15
是那个屏幕显示不了。。。
控制台的那个屏幕貌似只能显示300行吧?本回答被提问者采纳
第2个回答  2021-12-24
printf里面的""要用英文符号,第一个for循环后要加{
#include"stdafx.h"
int main()
{
int i,j,k,n;
n=100,k=0;
for(i=0;i<=n/5;i++)
{
for(j=0;j<=(n-i*5)/2;j++)
{
printf("5 cent=%d,2 cent=%d,1 cent=%d\n",i,j,n-i*5-j*2);
k++;
}
}
printf("total times=%d\n",k);
return 0;
}
相似回答