一个零钱拆分问题,即使规定为正数范围,其中一个数却还总是为负数
原题:将一笔零钱(大于8分,小于100分)换成5分,2分,1分的硬币,每种硬币至少一枚。输入金额,问有几种换法?针对每种换法,输出各面额数量和总数量。
程序代码:
#include<stdio.h>
int main()
{
int n,one, two, five,i=0;
printf("Enter n(8<=n<=100):");
scanf("%d", &n);
while(n<8 || n>100)
{
printf("Enter n(8<=n<=100):");
scanf("%d", &n);
}
for (five = 1; five <= n / 5; five++)
{
for (two = 1; two <= n / 2; two++)
{
for (one = 1;;one++)
{
if (n == 5 * five + 2 * two + one&&one>0)
{
i++;
printf("\n第%3d种 五分%2d个 两分%2d个 一分%2d个 共%2d个",i,five,two,one,five+two+one);
break;
}
}
}
}
printf("共%d种方法", i);
getchar();
getchar();
return 0;
}
可以看到第13-15出现了负数。


