C Primer Plus中的 另一道题求解~
Primer Plus中的一道题求解~本菜鸟又来问题啦~望诸位大侠解决一下!
完整题目如下:
编写一个程序,该程序要求用户输入一个华氏温度。程序以Double类型读入温度值,并将它作为一个参数传递给用户提供的函数Temperature()。该函数将计算相应的摄氏温度和绝对温度,并以小数点右边有两位数字的精度显示这三种温度。它应该用每个值所代表的温度刻度来标识这3个值。下面是将华氏温度转换成摄氏温度的方程:
Celsius = 1.8 *Fahrenheit + 32.0.
下面是将摄氏温度转换成绝对温度的方程:
Kelvin = Celsius + 273.16
Temperature()函数使用const来创建代表该转换里的3个常量符号。main()函数将使用一个循环来允许用户重复地输入温度,当用户输入q或其他非数字值时,循环结束。
我不太会做这个题,不过尽我所能做了做,我的程序如下:
#include<stdio.h>
int Temperautre(double Fahrenheit);
int main(void)
{
double Fahrenheit;
printf("Please enter a fahr:\n");
scanf("%f",&Fahrenheit);
Temperautre(Fahrenheit);
while(Fahrenheit != 'q')
{
printf("Please enter another value:");
scanf("%f",&Fahrenheit);
Temperautre(Fahrenheit);
}
return 0;
}
int Temperautre(double Fahrenheit)
{
const double Celsius = 1.8 * Fahrenheit + 32.0;
const double Kelvin = Celsius + 273.16;
printf("%.2f fahrenheit is %.2f celsius or %.2f kelvin\n",Fahrenheit,Celsius,Kelvin);
}
不过我不管输入什么值,得到的Fahrenheit 都是0.00,Celsius都是32.00,Kelvin都是305.16
应该是Fahrenheit参数传递不正确~不过我不会改。
还有就是“当用户输入q或其他非数字值时,循环结束。”这个在While循环里如何实现?