编写一个程序,该程序要求用户输入一个华氏温度。程序以double类型读入温度值,并将它作为一个参数传递给用户提供的函数Temperatures()。该函数将计算相应的摄氏温度和绝对温度,并以小数点右边有两位数字的精度显示着三种温度。它该用每个值所代表的温度刻度来标识这3个值。下面是将华氏温度转换成摄氏温度的方程:
Celsius=1.8*Fahrenheit+32.0
通常用在科学上的绝对温宿的刻度是0代表绝对温度,是可能温度的下界。下面是将摄氏温度转换成相对温度的方程:
Kelvin=Celsius+273.16
Temperatures()函数将用const来创建代表转换里的3个常量负号。main()函数将使用一个循环来允许用户重复地输入温度,当用户输入q或其他非数字值时,循环结束。}}
#include<stdio.h>
void Temperatures(double n)
{
constdouble N=1.8;
constdouble M=32.0;
constdouble K=273.16;
doubleCelsius,Kelvin;
Celsius=(n-M)/N;
Kelvin=Celsius+K;
printf("%.2f℉=%.2f℃=%.2fT\n",n,Celsius,Kelvin);
}
void main()
{
doubleFahrenheit;
printf("请输入华氏温度\n");
while(scanf("%lf",&Fahrenheit))
{
Temperatures(Fahrenheit);
printf("请输入华氏温度\n");
}
}
在编译的过程中发现一直得不到正确的结果,然后查看资料和数字改动终于知道哪个地方出错了,原来double类型的格式转换符是%lf而不是%f,还有要输入q或其它非数值字符时,循环结束。发现这个while(scanf("lf",&Fahrenhiet))可以实现。。