我无法获得正确的循环输出c ++

时间:2017-02-16 10:55:52

标签: c++

我使用此代码查找汇率

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    double r, c;

    cout<<"Input Exchange Rate: US Dollar to Yen: ";
    cin>>r;
    cout<<"Input cash on hand: ";
    cin>>c;
    cout<<fixed<<setprecision(2);
    cout<<"\tUS Dollar\tYen\n";
    for (int u=1; u<=c; u++)
    cout<<'\t'<<u<<'\t'<<u*r<<endl;
    return 0;
}

我希望我的输出首先出现,然后是数十,然后出现数百 但我得到的是enter image description here

3 个答案:

答案 0 :(得分:1)

要以1到10的步长生成输出,步长为10到100等,您可以更换循环

for (int u=1; u<=c; u++)
cout<<'\t'<<u<<'\t'<<u*r<<endl;

通过以下代码:

int factor = 1;
do
{
    for (int u=1; u < 10; u++)
    {
        int dollars = u * factor;
        if(dollars > c)
            break;
        cout<<'\t'<<dollars <<'\t'<<dollars * r<<endl;
    }
    factor *= 10;
}
while(factor <= c);

答案 1 :(得分:1)

如果我理解了您想要达到的目标,可以尝试<iomanip> std::setw来创建&#34;列&#34;。

另请查看std::left or std::right

答案 2 :(得分:0)

我想也许这就是你要找的东西:

double sum = c * r;
double value = fmod(sum, 10);
std::cout << "Ones: " << value << std::endl;

sum -= value;
value = fmod(sum, 100);
std::cout << "Tens: " << value / 10.0 << std::endl;

sum -= value;
value = fmod(sum, 1000);
std::cout << "Hundreds: " << value / 100.0 << std::endl;