2.5 案例学习——华氏温度与摄氏温度的转换
【例2-7】 你的一个朋友要去某地旅游,当地天气预报是用华氏温度报告的,请你编写程序,帮助你的朋友进行温度的转换,计算并输出对应的摄氏温度。
1.问题分析
1)确定预期的输出。问题中有“计算并输出对应的摄氏温度”,明确了输出项为摄氏温度celsius。
2)确定输入项。本需求中,输入项是华氏温度fahrenheit。
3)列出输入与输出关系的公式。本例中由华氏温度计算摄氏温度的公式为celsius = 5/9(fahrenheit-32)。
4)进行手工计算。设f值为80,对应的c值应为26.67。
2.算法设计
本例中只需要顶层算法:
输入一个华氏温度
用公式celsius = 5 / 9(fahrenheit - 32)计算对应的摄氏温度
输出摄氏温度值
3.代码编写
#include <stdio.h>
int main()
{
float celsius, fahrenheit; /*变量定义*/
printf("请输入一个华氏温度:\n"); /*必要的提示信息*/
scanf("%f", &fahrenheit); /*键盘输入需要转换的华氏温度值*/
celsius = 5 / 9 *(fahrenheit - 32); /*计算对应的摄氏温度值*/
printf("华氏温度:%.2f,对应的摄氏温度为%.2f\n", fahrenheit, celsius); /*输出结果*/
return 0;
}
4.测试与调试
运行该程序,结果为:
请输入一个华氏温度:
80
华氏温度:80.00,对应的摄氏温度为0
程序运行结果与手工计算结果不同,对程序进行测试,发现不管输入数据是多少,结果都为0。考虑到在C语言中5/9为0,所以将转换的数学模型变换为celsius = 5 *(fahrenheit-32)/9。修改后的程序为:
/*程序名:prg2-7.c*/
/*功能:输入一个华氏温度,输出对应摄氏温度*/
#include <stdio.h>
int main()
{
float celsius, fahrenheit; /*变量定义*/
printf("请输入一个华氏温度:\n"); /*必要的提示信息*/
scanf("%f", &fahrenheit); /*键盘输入需要转换的华氏温度值*/
celsius = 5 *( fahrenheit - 32)/ 9; /*计算对应的摄氏温度值*/
printf("华氏温度:%.2f,对应的摄氏温度为%.2f\n", fahrenheit, celsius); /*输出结果*/
return 0;
}
运行该程序,结果为:
请输入一个华氏温度:
80
华氏温度:80.00,对应的摄氏温度为26.67