习题6:TK 21:23:09
编写一个程序,要求用户输入一个华氏温度,程序应读取double类型的值作为温度值,并把该值作为参数传递给一个用户自行定义的函数temperatures(),该函数计算摄氏温度和开氏温度,并以小数点后面两位数字的精度显示三种温度,要求使用不同的温标来表示这三个温度值,下面是华氏温度转摄氏温度的公式。开式温度常用于科学研究,0表示绝对零度,代表最低的温度,下面是摄氏温度转开式温度的公式。Temperatures()函数中用const创建温度转换中使用的变量,在main函数中使用一个循环,让用户重复输入温度,当用户输入q或其他非数字时,循环结束,scanf()函数返回读取数据的数量,所以如果读取数字返回1,如果读取q则不返回1,可以使用==运算符,将scanf()的返回值和1作比较,测试两值是否相等。( 摄氏温度=5.0/9.0*(华氏温度-32) 开氏温度=摄氏温度+273.16 )
#include<stdio.h>
double Temperatures(double fahrenheit);
int main(){
double input;
printf("Enter a fahrenheit : ");
// scanf("%lf",&input);
while(scanf("%lf",&input) == 1){
Temperatures(input);
printf("Enter a fahrenheit again: ");
// scanf("%lf",&input);
}
printf("PROGRAM EXIT!");
return 0;
}
double Temperatures(double fahrenheit){
const double F_TO_C = 32.0;
const double C_TO_K = 273.16;
double celsius,kelvin;
celsius = 5.0 / 9.0 * (fahrenheit - F_TO_C);
kelvin = celsius + C_TO_K;
printf("%.2lf fahrenheit = %.2lf celsius = %.2lf kelvin\n",fahrenheit,celsius,kelvin);
}
/* while(scanf("%lf",&input) == 1) 对测试条件求值时已进行scanf()读取并返回
* 如果如上程序的两语句不注释,将进行两次输入读取返回,并以第二次的输入读取并运行
*/