题目详情:
给定一个华氏温度F,本题要求编写程序,计算对应的摄氏温度C。计算公式:C=5×(F−32)/9。题目保证输入与输出均在整型范围内。
输入格式:
输入在一行中给出一个华氏温度。
输出格式:
在一行中按照格式“Celsius = C”输出对应的摄氏温度C的整数值。
输入样例:
150
结尾无空行
输出样例:
Celsius = 65
结尾无空行
个人答案:
#include<stdio.h>
int main(void)
{
int f, c;
scanf("%d", &f);
c = 5 * ( f - 32 ) / 9;
printf("Celsius = %d", c);
return 0;
}
一个小思考:
题目确实很简单,但有没有uu思考一下,如果main函数中第三行写成
c = 5 / 9 * (f - 32);
会发生什么?
题目要求输出摄氏温度C的整数部分,故我们把c定义成了int类型,那么" 5 / 9 "在整型数据的计算中结果是0,不管输入的f是何值,输出的c始终为0,显然不合题意。
那么继续思考,如果把c定义成double类型,输出时以%.0f输出?编译器在输出int和double时处理方式不同,int直接输出整数部分,即去尾法,double会做四舍五入,所以又不符合题意。
此题无解?
那也不至于,可以把c定义为double,输出时以%d输出,则可以达到题目要求。
不过为了减少类似的繁琐思考,我提供一个小tip,通常出题人不至于故意为难大家,他给定的计算式通常都会避免此类矛盾,我们写计算表达式时可以复制题目的公式,粘贴到代码段中对应位置,在此基础上对变量稍作修改,哦对了,千万别忘了把运算符改成编译器能识别的,毕竟C语言可不存在×÷哈哈。