题目

编写程序,从标准输入读入一个摄氏温度数值 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