使用c ++格式化问题有人可以帮助我吗?

时间:2016-09-16 22:07:52

标签: c++ formatting

我是新来的,试图用c ++编写代码。 我的程序第1天有格式化问题,有人可以帮助我吗? 谢谢!

以下是作业详情。

对于这项任务,编写一个程序,计算一个人在有限(随机)时间段内如果他/她的工资是第一天的随机金额并且每天继续加倍,将计算多少。

因此,如果一个人的起薪是0.04美元,他们将在第一天工作时获得0.04美元,第二天工作时获得0.08美元,第三天工作时获得0.16美元等等。三天,这个人将获得0.28美元。

如果这个例子再持续几天,那么这个人第四天的收入为0.32美元,第五天的收入为1.04美元(薪水为0.64美元,奖金为0.40美元),第六天为1.28美元, 6天的工作总计2.92美元。

#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>

using namespace std;

int main()


{

srand(1);

srand(time(0));


    float salary = 0, bonus = 0, totalpay = 0;
    int days = 0, salary2;

salary = rand() % 6 + 1;
salary = salary / 100;
days = rand() % 31;
totalpay = salary;

    cout << "Starting salary: " << salary << endl
         << "Days worked: " << days << endl
         << "************************************" << endl
         << setw(30) << "Daily Salary" << setw(30) << "Amount Earned" << setw(30) << endl;

    for (int d = 0; d < days; d++)
    {

        cout << "Day " << d + 1 << ":" << '\t'
        << fixed << setprecision(2) << setw(18) << salary << '\t'
        << setw(18)<< (totalpay+bonus) << endl;

        salary *= 2;

        if ((d+1) % 5 == 0)
            bonus = salary * 10;
        else
            bonus = 0.00;

        totalpay += salary;



    }



return 0;        

    enter code here

}

*****这是我的输出****

Starting salary: 0.02
Days worked: 20
************************************
                  Daily Salary                 Amount Earned
                          Day 1:                      0.02                    0.
02
Day 2:                0.04                    0.06
Day 3:                0.08                    0.14
Day 4:                0.16                    0.30
Day 5:                0.32                    0.62
Day 6:                0.64                    7.66
Day 7:                1.28                    2.54
Day 8:                2.56                    5.10
Day 9:                5.12                   10.22
Day 10:              10.24                   20.46
Day 11:              20.48                  245.74
Day 12:              40.96                   81.90
Day 13:              81.92                  163.82
Day 14:             163.84                  327.66
Day 15:             327.68                  655.34
Day 16:             655.36                 7864.30
Day 17:            1310.72                 2621.42
Day 18:            2621.44                 5242.86
Day 19:            5242.88                10485.74
Day 20:           10485.76                20971.50

--------------------------------
Process exited after 0.1105 seconds with return value 0
Press any key to continue . . .

2 个答案:

答案 0 :(得分:1)

尝试此更改:

-         << setw(30) << "Daily Salary" << setw(30) << "Amount Earned" << setw(30) << endl;
+         << setw(30) << "Daily Salary" << setw(30) << "Amount Earned" << endl;

setw(30)之前的endl被应用于下一段文本,在您的情况下是第一次迭代中的"Day "

答案 1 :(得分:0)

在您的代码中......

     << setw(30) << "Daily Salary" << setw(30) << "Amount Earned" << setw(30) << endl;

for (int d = 0; d < days; d++)
{
    cout << "Day " << d + 1 << ":" << '\t'

setw(30)之前的endl;适用于"Day ",而不是endl。您无法将setw用于endl