| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1317 人关注过本帖
标题:一个零钱拆分问题,即使规定为正数范围,其中一个数却还总是为负数
只看楼主 加入收藏
凤凰院凶假
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
快速回复:一个零钱拆分问题,即使规定为正数范围,其中一个数却还总是为负数
数据加载中...
 
   



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

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