高级语言程序设计第二次作业
高级语言程序设计第二次作业
一、编写并运行书本第3章3.11 编程练习题目中的第1题~第8题
1、通过试验(即编写带有此类问题的程序)观察系统如何处理整数上溢、浮点数上溢和浮点数下溢的情况
思路:明确int和float类型的范围,再进行+1和-1的运算
目标:得到溢出值
问题及解决:但是在运行过程中发现,要实现浮点数上溢仅仅+1并没有任何变化,于是用乘法将其变为更大的数,输出就变成了inf(无穷),而浮点数下溢出现了精度的缺失。


2、编写一个程序,要求提示输入一个ASCII码值(如,66),然后打印输入的字符。
思路:将int类型强制转换成char类型再进行输出
目标:输入B,输出66;
问题及解决:发现不用强制转换也可以照常输出,原因是C语言会自动转换,除非要求写出,否则可以不转




3、编写一个程序,发出一声警报,然后打印下面的文本:
Startled by the sudden sound, Sally shouted,
"By the Great Pumpkin, what was that!"
思路:正常写,警报是转义字符\a
目标:听到系统滴一声
问题及解决:发现printf()里面不好加双引号,查书发现双引号要用转义字符".

4.编写一个程序,读取一个浮点数,先打印成小数点形式,再打印成指数形式。然后,如果系统支持,再打印成p记数法(即十六进制记数法)。按以下格式输出(实际显示的指数位数因系统而异):
Enter a floating-point value:64.25
fixed-point notation:64.250000
exponential notation: 6.425000e+01
p notation: 0x1.01p+6
思路:正常写,十六进制用%#x(错误!!!!!!!!!!!)
目标:正常输出
问题及解决%#x用于输出整数的十六进制,要用%a,而输出二进制和十六进制的小数,标准库没有直接提供相应的格式说明符
注意精度


5.一年大约有3.156X107秒。编写一个程序,提示用户输入年龄,然后显示该年龄对应的秒数
思路:正常写
6.1个水分子的质量约为3.0×10-2克。1夸脱水大约是950克。编写一个程序,提示用户输入水的夸脱数,并显示水分子的数量。
思路:正常写

二、将书本中给的程序清单3.13.5,3.83.9的示例程序结果输出
程序清单3.1 platinum.c

程序清单3.2 print1.c
占位符和数值必须一一对应,而且数据类型不能错

程序清单3.3 bases.c

程序清单3.4 print2.c
该程序演示了数据类型不匹配时出现的截断现象,图中不同的数据是二进制截断的结果
plus:short和char类型的变量都会被自动升为int


程序清单3.5 charcode.c

程序清单3.6 altnames.c


程序清单3.8 typesize.c
sizeof可以计算各数据类型所占的内存空间大小

程序清单3.9 badcount.c

三、运行以下程序给出程序结果
1、有符号和无符号整数上溢的情况

2、不同类型转换成科学计数法的演示
由于devcpp不支持long double类型,输出的值不准确,因此用vs进行演示

3、float陷阱
程序输出else语句的原因是:
- 浮点数精度限制:123.456无法精确存储为float
- 类型不匹配:比较时一边是float,一边是double
- 实际存储差异:f的实际值是 123.456001,不等于 123.456
这是浮点数运算的常见陷阱,在编程中应避免直接比较浮点数相等。
解决办法:用double类型可以更精确地表示,在123.456后面添加F后缀可以使==两边类型相同。



4、不同数据类型相互赋值的时候可以互相转换

5、sizeof可以计算不同数据类型所占的内存空间大小,不同数据类型进行运算的时候可以相互转换

设计一个程序完成以下内容的不同形式输出
(1)按小数形式输出实数:%f 由系统指定宽度(6位小数), %m.nf 指定宽度m,小数位数n,右靠齐, %-m.nf 指定宽度m,小数位数n,左靠齐(注意:宽度包括符号和小数点)。
设计思路:随便设一个数按要求输出;

(2)用于输出字符串:%s 不指定宽度, %-ms 指定宽度,左靠齐, %ms 指定宽度,右靠齐, %m.ns 指定宽度m,只取左端n个字符, 右靠齐, %-m.ns 指定宽度m,只取左端n个字符, 左靠齐。
设计思路:随便设一个字符串按要求输出;

总结和思考
本次作业耗时较长:要注意的点主要有,对程序运行的不同情况需要查阅和分析,程序输出错误时要检查细节问题,是否多输字符等。非常重要的一点是,写的博客比较长的时候一定要写完一段就保存!!!!!!!!/(ㄒoㄒ)/~~

浙公网安备 33010602011771号