题目
编写程序,从标准输入读入一个摄氏温度数值 C,计算对应的华氏温度 F,公式为:F = C × 1.8 + 32;随后反向由华氏度推导回摄氏度,保留 2 位小数输出。
输入格式:一行输入一个浮点数,表示摄氏温度。
输出格式:依次分行输出转换得到的华氏温度与校验算回的摄氏温度。
数据范围与约定:-273.15 ≤ C ≤ 1000.0(不低于绝对零度)。
思路与算法
1. 温度转换公式
摄氏度转华氏度标准线性变换公式为 F = C * 9 / 5 + 32 或 F = C * 1.8 + 32;逆变换为 C = (F - 32) * 5 / 9。
2. 绝对零度边界约束
热力学绝对零度为 -273.15 ℃。在实际工程数据采集中,低于此物理下界的数据通常视为传感器故障或无效输入,在计算前进行拦截。
3. 浮点格式化精度
输出时使用 %.2f 控制精度,避免二进制浮点存储精度微小偏差导致输出无意义尾数。
完整程序
% Octave / MATLAB 第2题:摄氏度与华氏度转换
[celsius, count] = scanf("%f", 1);
if count < 1
fprintf("错误:未输入有效的摄氏温度。\n");
return;
end
% 物理有效性检查:不得低于绝对零度 -273.15℃
if celsius < -273.15
fprintf("错误:输入温度低于绝对零度 (-273.15 C),为无效数据。\n");
return;
end
% 正向转换:C -> F
fahrenheit = celsius * 1.8 + 32.0;
% 逆向转换验证:F -> C
celsius_verify = (fahrenheit - 32.0) / 1.8;
fprintf("摄氏温度: %.2f C\n", celsius);
fprintf("华氏温度: %.2f F\n", fahrenheit);
fprintf("反算校验: %.2f C\n", celsius_verify);运行示例
示例 1:
输入:
25.0输出:
摄氏温度: 25.00 C
华氏温度: 77.00 F
反算校验: 25.00 C示例 2:
输入:
0.0输出:
摄氏温度: 0.00 C
华氏温度: 32.00 F
反算校验: 0.00 C