高级语言程序设计课程第二次个人作业

  • [一、编写并运行书本第3章3.11 编程练习题目中的第1题~第8题 ]

  • [ 二、[将书本中给的程序清单3.1~3.10的示例程结果输出(无需代码,截图程序输出结果) ]

一、[编写并运行书本第3章3.11 编程练习题目中的第1题~第8题 ]
作业信息、问题与解决办法如下:
3.11.1
题目:通过试验(即编写带有此类问题的程序)观察系统如何处理整数上溢、浮点数上溢和浮点数下溢的情况。
思路:找到整数int 的最值-->上溢+1/下溢—1-->浮点类型-->上溢*100,让他趋近inf-->下溢/100,让他一直砍掉最右边的数,最后为0.00000e000
问题:因为 int 在不同系统所占字节不同,所以不知道带入的整数最大值和最小值怎么确定。
解决:在网上寻找,得:头文件添加#include<limits.h> 即可寻找到整数最大最小值。

3.11.2
题目:编写一个程序,要求提示输入一个ASCII码值(如,66),然后打印输入的字符。
思路:输入数字-->输出字符
问题:(在C90版本中运行无问题
解决:

3.11.3
题目:编写一个程序,发出一声警报,然后打印下面的文本: Startled by the sudden sound, Sally shouted,
"By the Great Pumpkin, what was that!"
思路:发出警报-->输出文本
问题:不知警报如何发出
解决:查找课本。书本45页写到:\a 为发出警报。

3.11.4
题目:编写一个程序,读取一个浮点数,先打印成小数点形式,再打印成指数形式。然后,如果系统支持,再打印成p记数法(即十六进制记数法)。按以下格式输出(实际显示的指数位数因系统而异):  
Enter a floating-point value: 64.25\n       
 fixed-point notation: 64.250000\n       
 exponential notation: 6.425000e+01\n       
 p notation: 0x1.01p+6
思路:改系统设置为C99-->读取一个浮点数-->打印成小数和指数形式-->打印p计数法
问题:在C90版本中无法打印p计数法
解决:将系统语言标准改为GNUC99.
具体方法为:工具——>编译器选项——>代码生成/优化——>代码生成:——>语言标准——>GNU C99.

3.11.5
题目:一年大约有3.156×10000000 秒。编写一个程序,提示用户输入年龄,然后显示该年龄对应的秒数。
思路:输入年龄-->3.156×10000000×age-->对应秒数
问题:(在C90版本中运行无问题
解决:

3.11.6
题目:1个水分子的质量约为3.0×10 −23 克。1夸脱水大约是950克。编写一个程序,提示用户输入水的夸脱数,并显示水分子的数量
思路:因为水分子数目可能很多所以用指数形式输出,为简单的乘除法运算
问题:(在C90版本中运行无问题
解决:无。

3.11.7
题目:1英寸相当于2.54厘米。编写一个程序,提示用户输入身高(/英寸),然后以厘米为单位显示身高。
思路:2.54*英寸-->对应以厘米为单位的身高
问题:(在C90版本中运行无问题
解决:

3.11.8
题目:在美国的体积测量系统中,1品脱等于2杯,1杯等于8盎司,1盎司等于2大汤勺,1大汤勺等于3茶勺。编写一个程序,提示用户输入杯数,并以品脱、盎司、汤勺、茶勺为单位显示等价容量。思考对于该程序,为何使用浮点类型比整数类型更合适?
思路与思考:使用浮点类型比整数类型计算出来的值更准确。如果使用整数类型在做相关运算(例如除法运算)时只能得到整数。例如:如果用户输入的数值为“7”,那么当换算为品脱单位时,得到的数值为“3”,但准确的值应该为“3.5”,所以使用浮点类型比整数类型更合适。确定了浮点类型输入输出后,其次就为简单的乘除法运算。
问题:(在C90版本中运行无问题
解决:

二、[将书本中给的程序清单3.1~3.10的示例程结果输出(无需代码,截图程序输出结果)]
作业信息、问题与解决办法如下:

1. 3.1
问题:value 输出为0.00(错把输入打成%d)
解决办法:将 %d 改为 %f

2. 3.2
问题:(在C90版本中运行无问题
解决:

3. 3.3
问题:(在C90版本中运行无问题
解决:

4. 3.4
问题:(在C90版本中运行无问题
解决:

5. 3.5
问题:(在C90版本中运行无问题
解决:

6. 3.6
问题:参数 PRId32 无法被定义在inttypes.h 中的“d”替换(devc++为C90版本)
解决:将devc++版本改为C99。
具体方法为:工具——>编译器选项——>代码生成/优化——>代码生成:——>语言标准——>GNU C99.

**7. 3.7 **
问题:一开始 %a 也无法输出
解决:将devc++语言标准改为 C99.具体方法如上3.6

**8. 3.8 **
问题:1.因已把devc++语言标准改为C99,所以以书本形式输入无问题。
2.但是,我输出的sizeof(long)为4
解决:1.若为C90版本,可将 %zd 更改为 %u。
2.经查找我的电脑虽为64位系统,但是我的devc++支持32位,所以输出才为4。

** 9. 3.9**
问题:(在C99版本中运行无问题
解决:

10. 3.10
问题:(在C99版本中运行无问题
解决:

对本次作业进行总结和思考:1.懂得了C90的缺陷以及如何将我的devc++改为C99.
具体方法为:工具——>编译器选项——>代码生成/优化——>代码生成:——>语言标准——>GNU C99.
2.发现我还是对输入所要用的替代符不熟悉、不敏感。还要加强对%d、%ld、%f、%lf…………等的记忆。
3.经过3.11.1的练习,我对整数和浮点数的溢出有了更深刻的理解(可以把他看成一个钟)。
4.对于3.11.8的思考,我的理解是:使用浮点类型比整数类型计算出来的值更准确。如果使用整数类型在做相关运算(例如除法运算)时只能得到整数。例如:如果用户输入的数值为“7”,那么当换算为品脱单位时,得到的数值为“3”,但准确的值应该为“3.5”,所以使用浮点类型比整数类型更合适。

posted @ 2024-10-05 23:08  王馨怡  阅读(55)  评论(0编辑  收藏  举报