C++课堂作业问题:如何让两个温度转换函数的输出并排显示?
解决温度转换程序的并排输出问题
我明白你的问题啦——现在你的两个转换函数各自在循环里独立输出内容,导致左边的摄氏转华氏全部打印完才轮到右边的华氏转摄氏,结果就变成了上下排列。要实现两边并排显示,我们需要调整代码的职责分工,把计算逻辑和输出逻辑分开,然后在main函数里同步控制每一行的输出。
修改思路
- 让转换函数只负责温度计算,不再处理循环和输出,这样函数更单一,也方便我们在main里灵活控制输出时机。
- 观察两边的循环次数:左边是从40到31(共10次),右边是从120到30每次减10(也是10次),刚好可以一一对应,同步输出每一行的左右内容。
修改后的C++代码
#include<iostream> using namespace std; // 只负责计算,不输出 double celsiusToFahrenheit(double celsius) { return (9.0 / 5.0) * celsius + 32.0; } // 只负责计算,不输出 double fahrenheitToCelsius(double fahrenheit) { return (fahrenheit - 32.0) * 5.0 / 9.0; } int main() { cout.setf(ios::fixed); cout.precision(2); // 打印表头 cout << "Celsius \t" << "Fahrenheit \t" << "| \t" << "Fahrenheit \t" << "Celsius" << endl; // 同步遍历两边的温度值,每一行输出左右对应内容 double celsius = 40.0; double fahrenheit = 120.0; while (celsius >= 31.0 && fahrenheit >= 30.0) { // 输出左边的摄氏转华氏 cout << celsius << "\t\t" << celsiusToFahrenheit(celsius); // 输出分隔符和右边的华氏转摄氏 cout << "\t\t| \t" << fahrenheit << "\t\t" << fahrenheitToCelsius(fahrenheit) << endl; // 更新循环变量 celsius--; fahrenheit -= 10; } return 0; }
修改说明
- 重构了两个转换函数,让它们只专注于温度转换计算,符合单一职责原则。
- 在
main里用一个循环同步处理两边的温度值,每一次循环都输出完整的一行内容,确保左右两边是并排显示的。 - 表头的格式也做了微调,让分隔符的位置更合理。
正确输出效果
Celsius Fahrenheit | Fahrenheit Celsius 40.00 104.00 | 120.00 48.89 39.00 102.20 | 110.00 43.33 38.00 100.40 | 100.00 37.78 37.00 98.60 | 90.00 32.22 36.00 96.80 | 80.00 26.67 35.00 95.00 | 70.00 21.11 34.00 93.20 | 60.00 15.56 33.00 91.40 | 50.00 10.00 32.00 89.60 | 40.00 4.44 31.00 87.80 | 30.00 -1.11
内容的提问来源于stack exchange,提问作者isannego
相关产品推荐
相关产品推荐

