三

这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/2026gjyycxsj
这个作业要求在哪里:https://edu.cnblogs.com/campus/fzu/2026gjyycxsj/homework/16749
学号:0102600234
姓名:赖真辉
一、 课本第4章 4.8 编程练习
第2题

联想截图_20261101214341

联想截图_20261101214403

问题与解决说明:
在编写d小题时,一开始不知道如何动态指定宽度。通过查阅资料,学会了在printf中使用%*s,并将字符串长度加3作为参数传入,成功实现了动态宽度打印。
第3题

联想截图_20261101214445

联想截图_20261101214504

问题与解决说明:
对指数记数法的格式符不熟悉。复习课本后,明确了%e(小写e)和%E(大写E)的区别,以及%+.3f中+表示强制显示正负号,成功按要求输出。
第4题

联想截图_20261101214626

联想截图_20261101214809

问题与解决说明:
初始没有进行浮点数转换,导致计算结果被截断。将变量定义为float,并在除以12时使用12.0确保进行浮点运算,解决了精度问题。
第6题:

联想截图_20261101214845

联想截图_20261101214916

问题与解决说明:
写代码时忘记了strlen()函数需要包含头文件。编译器报错警告,加上#include <string.h>后编译通过。学会了利用%-s和%-d来实现左对齐的效果。
第7题

联想截图_20261101215006

联想截图_20261101215015

问题与解决说明:
编译时提示找不到FLT_DIG。查阅后得知该宏定义在<float.h>头文件中,补充包含该头文件后问题解决,理解了不同编译器对浮点数精度的系统限制。
第8题

联想截图_20261101215049

联想截图_20261101215105

问题与解决说明:
转换公式的逻辑一开始写反了。通过仔细审题和推导单位换算公式,先算出每加仑英里数,再转换为升/100公里,最终结果正确。
二、 课本第5章 5.11 编程练习
第1题:

联想截图_20261101215142

联想截图_20261101215207

问题与解决说明:
忘记在while循环内部重新读取scanf,导致程序陷入死循环。在循环末尾加上scanf("%d", &minutes);后,程序能正常接收下一次输入并退出。
第2题:

联想截图_20261101215420

联想截图_20261101215433

问题与解决说明:
使用for循环时,一开始误将条件写成了i < n+10,导致少打印了一个数。修改为i <= n + 10后输出正确。
第3题:

联想截图_20261101215504

联想截图_20261101215517

问题与解决说明:
代码逻辑比较顺利,但测试时输入0未正确退出。检查发现while(days > 0)写成了>= 0,修改后实现了非正值退出的要求。
第4题:

联想截图_20261101215554

联想截图_20261101215622

问题与解决说明:
计算剩余英寸时(rem_inches),一开始没减去整数英尺的部分,导致结果错误。通过inches - (feet * 12)得到了正确的余数。
第5题:

联想截图_20261101215652

联想截图_20261101215701

问题与解决说明:
使用int类型累加,测试较大天数时发生了数据溢出。将求和变量改为long类型后,能够承受更大的数值范围。
第6题:

联想截图_20261101215732

联想截图_20261101215743

问题与解决说明:
直接写i * i在i很大时超出了int范围。在运算时增加了强制类型转换(long)i * i,避免了乘法过程中的溢出。
第7题:

联想截图_20261101215809

联想截图_20261101215828

问题与解决说明:
没有在main函数前写函数原型声明,导致编译器警告。在文件顶部加上double cube(double x);的声明后,程序顺利编译。
第8题:

联想截图_20261101215854

联想截图_20261101215937

问题与解决说明:
格式化输出%时遇到了困难。查阅资料得知,在printf中输出一个%需要连写两个%%,修改后成功打印出类似438 % 256 is 182的效果。
第9题:

联想截图_20261101220004

联想截图_20261101220023

问题与解决说明:
对于判断输入非数字退出的逻辑不清楚。学会了利用while (scanf("%lf", &f) == 1)来判断,如果用户输入了q,scanf返回0,循环自然结束。
三、 运行以下程序给出结果
(1)

联想截图_20261101220107

问题与解决说明:
运行成功。理解了strlen()求的是字符串实际字符数(不含\0),而sizeof求的是数组分配的总内存大小。

(2)

联想截图_20261101220135

问题与解决说明:
图片中代码不完整。根据上下文逻辑,我补全了while (count < SQUARES)循环体内的累加和输出逻辑,程序成功跑出指数级增长的吓人数据。

(3)

联想截图_20261101220201

问题与解决说明:
运行成功。通过控制台输出观察到字符'C'的ASCII码是67,以及赋给char类型的大数字5212205.17发生了截断/溢出,显示了乱码。

(4)

联想截图_20261101220228

问题与解决说明:
运行成功。理解了while(n-- > 0)的作用,它先在n大于0时循环,然后再减1,成功打印了指定数量的#号。

四、 设计运算符优先级程序

  1. 混合运算优先级展示程序

联想截图_20261101220310

问题与解决说明:
在测试x++ + 5时,一开始搞错了自增发生的时机。通过打印变量前后变化的值,明确了后置++是先参与运算,再自身加1的规则。

  1. 运算符优先级从高到低展示程序

联想截图_20261101220336

问题与解决说明:
无特殊问题。结合课本的优先级表,使用多个printf语句按顺序输出了常见的几种运算符及其优先级顺序,加深了记忆。

五、 总结和思考

通过本次作业,我熟练掌握了 printf 的格式化输出(如宽度控制和对齐)以及 sizeof 与 strlen 的区别。在第5章的练习中,我学会了利用 while 和 for 循环解决实际问题,并体会到了自定义函数带来的代码模块化优势。在遇到死循环或类型转换报错时,我通过查错和调试解决了问题,这让我认识到编程不仅需要清晰的逻辑,更要注重代码细节。

posted @ 2026-11-01 22:49  ovoy  阅读(10)  评论(0)    收藏  举报