标题:一个零钱拆分问题,即使规定为正数范围,其中一个数却还总是为负数
取消只看楼主
凤凰院凶假
Rank: 2
来 自:春天里
等 级:论坛游民
威 望:1
帖 子:36
专家分:33
注 册:2016-12-22
结帖率:83.33%
 问题点数:0 回复次数:1 
一个零钱拆分问题,即使规定为正数范围,其中一个数却还总是为负数
原题:
将一笔零钱(大于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出现了负数。

搜索更多相关主题的帖子: 规定 正数 负数 one printf 
2017-11-04 11:43
凤凰院凶假
Rank: 2
来 自:春天里
等 级:论坛游民
威 望:1
帖 子:36
专家分:33
注 册:2016-12-22
得分:0 
好吧,层主自己解决了。

没有考虑到one的计算范围,应在第三个for的括号中加入"one<=n-7"


2017-11-04 12:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-482112-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048672 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved