我正在研究这个货币项目,它应该输出有多少种化妆方式, 例如,当我输入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;
}
答案 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;