为什么我无法通过结果输出用户输入

时间:2014-05-01 03:38:21

标签: c++ arrays

我正在研究这个货币项目,它应该输出有多少种化妆方式, 例如,当我输入2美元时,程序应输出293种方式。 我让程序工作,但无法让程序打印出正确的结果 例如,我希望程序打印出来

There are [the number of ways] ways to make up [user input]

但我的程序没有打印出最后一部分[用户输入]

以下代码的输出是[输入2时]

有293种方法可以弥补//用户输入缺失

#include <iostream>
#include <cmath>
using namespace std;

int currency[11] = { 10000, 5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 5 };
int f20(int n, int j)
{
    int i = 0, t;
    if (n == 0) return 1;
    else
    {
        if (n<5) return 0;
    }
    for (t = 0; t<11; t++)
        if (n >= currency[t] && j >= currency[t])
            i += f20(n - currency[t], currency[t]);
    return i;
}

int main(void){
    int counter;
    float usernum;

    do{
        cout << "Enter Total amount:";
        cin >> usernum;
        usernum = usernum * 100;
        for (counter = 0; counter<11; counter++)
            if (currency[counter] <= usernum)
            {
                printf("There are %d ways to make up  \n\n", f20(usernum, currency[counter]), usernum); break;

            }

    } while (usernum != 0);
    return 0;
}

3 个答案:

答案 0 :(得分:0)

问题出在你的if语句中。货币[0]等于10000.如果usernum = 2,那么usernum * 100 = 200.现在,10000&lt; 200?不,所以评估为false,并且不显示您的回答。反思你的情况。

答案 1 :(得分:0)

你认为不应该 -

printf("There are %d ways to make up %d \n\n", f20(usernum, currency[counter]), usernum); break;

而不是 -

printf("There are %d ways to make up  \n\n", f20(usernum, currency[counter]), usernum); break;

您错过了%d

答案 2 :(得分:0)

感谢大家的帮助,我接受了ooga的建议并摆脱了printf并插入了cout而不是解决问题。

cout << "There are " << f20(usernum, currency[counter]) << " ways to make up : " << usernum / 100 << "\n\n"; break;