我在使用C ++进行编码的第3周,并且收到了如下所示的练习题。
编写一个程序,在for循环中打印一个华氏温度和摄氏温度表,从0到212华氏度。使用华氏温度和摄氏温度的列标题,字段宽度右对齐两列(右对齐数字,使得列,十列等行向上,但在列标题下居中数字)和3个小数位以及加号或减号对于摄氏度,但是整数并且华氏度没有加号或减号,并且在温度之间添加点引线(在摄氏温度之前但在华氏温度之前仅有空格)。
这是我到目前为止所拥有的。
#include <iostream>
#include <iomanip>
using namespace std;
void main()
{
int fah;
float cel;
cout << "Fahrenheit" << setw(17) << "Celsius" << endl;
cout.setf(ios::fixed);
for (fah = 0; fah <= 212; fah++)
{
cel = (fah - 32) * (5.0 / 9);
cout << right << setw(10) << noshowpos << fah
<< setw(17) << setprecision(3)
<< showpos << cel << setfill('.') << endl;
}
}
我在这里遇到的问题是,我只想在华氏温度之后和摄氏之前获得一个点头。不是在华氏温度之前。有人可以告诉我该怎么做吗?
P.S。我们暂时使用void main,我知道这是不好的做法。
答案 0 :(得分:0)
试试这个:
use File::Find;
use feature 'say';
my $root = $ARGV[0];
find(\&wanted, $root);
sub wanted {
say $File::Find::name if -d;
}
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int fah;
float cel;
cout << "Fahrenheit" << setw(17) << "Celsius" << endl;
cout.setf(ios::fixed);
for (fah = 0; fah <= 5; fah++)
{
cel = (fah - 32) * (5.0 / 9);
cout << right << setfill(' ') << setw(10) << noshowpos << fah
<< setfill('.') << setw(17) << setprecision(3)
<< showpos << cel << endl;
}
}
操纵者应该在setfill
之前到来。它将使用setw
的参数来填充指定的宽度。