编写一个程序,要求用户输入一个华氏温度。程序应读取
double
类型的值作为温度
值,并把该值作为参数传递给一个用户自定义的函数
Temperatures()
。该函数计算摄氏温度和
开氏温度,并以小数点后面两位数字的精度显示
3
种温度。要使用不同的温标来表示这
3
个温
度值。下面是华氏温度转摄氏温度的公式:
摄氏温度
= 5.0 / 9.0 * (
华氏温度
- 32.0)
开氏温标常用于科学研究,
0
表示绝对零,代表最低的温度。下面是摄氏温度转开氏温
度的公式:
开氏温度
=
摄氏温度
+ 273.16
Temperatures()
函数中用
const
创建温度转换中使用的变量。在
main()
函数中使用一个循环
让用户重复输入温度,当用户输入
q
或其他非数字时,循环结束。
scanf()
函数返回读取数据
的数量,所以如果读取数字则返回
1
,如果读取
q
则不返回
1
。可以使用
==
运算符将
scanf()
的
返回值和
1
作比较,测试两值是否相等
/*输入华氏温度,输出开氏温度和摄氏温度,读取double类型的值作为温度值,并把该值
传递给一个用户自定义参数Temperature(),输入非数字退出,该函数计算摄氏温度和开
氏温度,并以小数点后两位精度显示3种温度,用const创建温度转换中使用的变量*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
// 定义函数Temperatures,用于将华氏温度转换为摄氏温度和开氏温度并打印出来
void Temperatures(double f_degree);
int main(void)
{
double f_degree;
// 循环读入用户输入的华氏温度,并调用Temperatures函数进行转换和打印
while (printf("请输入华氏温度:") && scanf("%lf", &f_degree) == 1)
{
Temperatures(f_degree);
}
return 0;
}
void Temperatures(double f_degree)
{
// 定义三个常量,分别表示摄氏温度与华氏温度之间的比例关系、华氏温度与摄氏温度之间的偏移量以及摄氏温度与开氏温度之间的偏移量
const double Celsius_scale = 5.0 / 9.0;
const double Celsius_offset = 32.0;
const double Kelvin_offset = 273.16;
// 将华氏温度转换为摄氏温度和开氏温度
double c_degree = Celsius_scale * (f_degree - Celsius_offset);
double k_degree = c_degree + Kelvin_offset;
// 打印转换后的温度
printf("华氏温度:%.2lf°F\n", f_degree);
printf("摄氏温度:%.2lf°C\n", c_degree);
printf("开氏温度:%.2lfK\n", k_degree);
}