实验二答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二数据描述(基本数据类型及运算符)答案
编程及调试实例2-1改正错误后的程序
#include
void main( )
{
int celsius, fahr;
fahr = 100;
celsius = 5 * (fahr - 32) / 9;
printf("fahr = %d, celsius = %d\n", fahr, celsius);
}
编程及调试练习2-1:源程序
(1)
#include
void main( )
{
int celsius, fahr;
fahr = 150; /*只改变fahr的值*/
celsius = 5 * (fahr - 32) / 9; /*celsius = 5 * (fahr - 32) / 9与上面的实例完全一样*/ printf("fahr =%d, celsius = %d\n", fahr, celsius);
}
运行程序后,输出:
fahr = 150, celsius = 65
(2)
#include
void main( )
{
int celsius, fahr;
fahr = 150; /*fahr的值仍为150*/
celsius = 5*fahr / 9 - 5*32 / 9; /* celsius的值的计算方法从数学上看与(1)的完全一样*/ printf("fahr =%d, celsius = %d\n", fahr, celsius);
}
运行程序后,输出:
fahr = 150, celsius = 66
(3)
#include
void main( )
{
int celsius, fahr;
fahr = 150; /* fahr的值仍为150*/
celsius = 5 / 9*(fahr–32); /* celsius的值的计算方法从数学上看与(1)和(2)的完全一样*/ printf("fahr =%d, celsius = %d\n", fahr, celsius);
}
运行程序后,输出:
fahr = 150, celsius =0
原因分析:
从数学上看,以上三个程序的输出结果应该完全相同,但程序运行后输出的结果不一样,这是为什么呢?其实原因很简单,只要同学们掌握C的运算规则就可以找到答案。在此应注意两点:一是整型数据与整型数据进行运算时,结果取整型(小数部分被舍弃掉);二是运算的优先级和结合性。
思考与进一步练习:
以上已知摄氏温度,求对应的华氏温度的程序,得到的华氏温度是近似值(有时甚至相差较大),若要得到精确华氏温度值,应定义什么数据类型?计算华氏温度的赋值语句应如何写?
编程及调试练习2-2:源程序
(1)
#include
void main( )
{
int celsius, fahr;
celsius = 26;
fahr= 9/5*(celsius + 32);
printf("celsius = %d, fahr = %d\n", celsius, fahr );
}
运行程序后,输出:
celsius = 26, fahr =58
(2)
#include
void main( )
{
int celsius, fahr;
celsius = 26;
fahr= 9*celsius/5 + 9*32/5;
printf("celsius = %d, fahr = %d\n", celsius, fahr );
}
运行程序后,输出:
celsius = 26, fahr =103
(3)
#include
void main( )
{
int celsius, fahr;
celsius = 26;
fahr= 9*(celsius + 32)/5;
printf("celsius = %d, fahr = %d\n", celsius, fahr );
}
运行程序后,输出:
celsius = 26, fahr =104
如何求摄氏温度65°C所对应的华氏温度?
答:将以上程序中的语句celsius = 26;改为celsius = 65;,即是求摄氏温度65°C所对应的华氏温度。
★通过以上练习,分析产生不同运行结果的原因,思考并总结得到精确且完全一致结果的措施。