华氏度和摄氏度转换表

时间:2016-09-19 12:18:48

标签: c++

我在使用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,我知道这是不好的做法。

1 个答案:

答案 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的参数来填充指定的宽度。