我现在正在做一个项目,我必须显示一系列整数以及列中整数的10%,15%和20%折扣。当数字具有相同数量的字符空间时,这对我来说不是问题,但是该项目混合了诸如5.00和10.00之类的数字。因为10.00包含五个字符空格而5.00包含四个空格,所以它会抛出我的列。我知道这是超级挑剔,但我想解决它。有办法吗?
#include <iomanip>
#include <iostream>
using namespace std;
int main()
{
double number = 0.0;
double tenp = 0.0;
double fifp = 0.0;
double twep = 0.0;
cout << "Original price" << setw(13) << "10% off" << setw(20)
<< "15% off"<< setw(20) << "20% off"<<endl;
for (double number = 5.0; number < 51; number += 5)
{
tenp = number - number*.10;
fifp = number - number*.15;
twep = number - number*.20;
cout << fixed<<setprecision(2);
cout <<"$ " << number << setw(15)<<"$ "
<< tenp<< setw(15)<<" $ "
<< fifp<< setw(15) <<"$ "
<< twep << endl;
}
return 0;
}
Original price 10% off 15% off 20% off
$ 5.00 $ 4.50 $ 4.25 $ 4.00
$ 10.00 $ 9.00 $ 8.50 $ 8.00
$ 15.00 $ 13.50 $ 12.75 $ 12.00
$ 20.00 $ 18.00 $ 17.00 $ 16.00
$ 25.00 $ 22.50 $ 21.25 $ 20.00
$ 30.00 $ 27.00 $ 25.50 $ 24.00
$ 35.00 $ 31.50 $ 29.75 $ 28.00
$ 40.00 $ 36.00 $ 34.00 $ 32.00
$ 45.00 $ 40.50 $ 38.25 $ 36.00
$ 50.00 $ 45.00 $ 42.50 $ 40.00
Press any key to continue . . .
答案 0 :(得分:1)
您可以尝试使用setfill
通过使用空格填充来强制每个数字具有相同的宽度。首先包括标题<iomanip>
,然后尝试以下代码:
cout << fixed << setprecision(2);
cout << "$ " << setfill(' ') << setw(13) << number
"$ " << setfill(' ') << setw(13) << tenp
"$ " << setfill(' ') << setw(13) << fifp
"$ " << setfill(' ') << setw(13) << twep << endl;
以相同的间距打印标题,以便一切顺利排列:
cout << setw(15) << "Original price"
<< setw(15) << "10% off"
<< setw(15) << "15% off"
<< setw(15) << "20% off" << endl;
答案 1 :(得分:0)