C语言第一次实验报告
本次报告主要是对第三次实验 计算分段函数,第四次 计算分段函数和循环NEW,第四次 分支+循环 加强版的一个学习总结。
一.
1.实验题目
计算分段函数 计算分段函数和循环NEW 分支+循环 加强版
普遍题目类型都比较简单,掌握一定的新手编程能力都能解决,但其中一些小瑕疵也需要重点注意。
2.设计思路
对于实验三,需要掌握最基本的数学基础及对题意的理解。类似于计算分段函数的题型,需要分情况讨论,即有两条分支;再有计算火车时差问题,需要对小时退位这一情况进行考虑;
对于实验四,在原有分段函数的基础上,涉及到求和这一问题,求和若用原有方法计算量庞大,这是一个循环往复的过程,此时就需要一个循环结构实现求和运算;
对于实验四加强版,不同于实验三,加强版更倾向于问题的具体化,此时需要同学们有一定的整理概括能力,将问题简单化,不难发现,加强版仅仅靠一个分支判断或一个循环结构是难以实现的,所以需要学会将两者结合,问题才能简单,解题才能更便捷。
3.实现方法
1.分段函数 题无需过多纠结,因为只有分支情况的讨论,所以只需 1 if (条件语句) 2 .... 3 else 4 ..... 就能实现问题的求解,如图
2.火车时差问题,一时可能会转不过弯来,考虑到退位情况比较复杂,所以可以先将小时统一到分钟,再相加减,最终再换回时钟格式;如图
3.加强版的许多问题都不是单一结构就能实现的,这时就需要多重分支语句或循环语句,甚至将所学的条件结构和循环结构有机结合,如下图
for() { if() else }
switch ()
...
pta:4-2-9 三个数由小到大输出
鉴于这些前面提到的程序比较简单,就不一一列举了。
二.源程序(可只截取最关键的部分)
接下来这些就是个人觉得比较有价值的题目
这是pta上的关于计算天数的问题,初次看见这个题目,脑海之中就浮现了需要判断Year是否为闰年的思路结构;
然而,接下来就短路了,首先是不同月份30天和31天的累加,其次是七月和八月同是31天的判断,之后我就用If()的内嵌循环结构完成代码,如下图;
首先代码冗杂,其次在Pta上也报错;提交结果截图如下;
重新整理思路,学习了switch语句后有了新思路,将许多判断条件都加入到case中;截图如下;明显语句精简了许多,但还是出了些小错误,一月的测试点更改后成功完成题目。
在老师的提示下,接触了一点点数组知识后,与大佬讨论后,优化解题方案,代码如下;
此外,个人觉得较难点的题目是
4-2-6 到底是不是太胖了
解题代码截图如下,其中有诸多疑问,求大佬和助教解释解释
三.遇到的问题及解决方法,心得体会
1.思路问题
及时调整思路,与同学老师探讨
2.编译及运行问题
在运行程序时遇见3次下图问题
通过编译的错误是最难发现的,经过反复检查代码,终于发现错在scanf()语句在输变量时少输入&;
体会:拿到一道题目时,不要急于做题,首先要理解题意,然后不断将题干信息转化为编程语言;
打代码时一定要细心细心再细心!!!
不会的就多请教同学老师,他们都是大佬!!
ps:总结一下这几次实验的一些小知识点,每天进步一点点,小菜鸟会成大菜鸡;
1.%.nf:小数点表示精确,n表示精确到小数点后n位;
2.pow(x,y):这是幂函数的表达方式,表示x的y次幂,x,y不一定是一个数也可以用表达式代替
sqrt(x):这是平方根的表达方式,表示根号x,x也可用表达式代替;
注意:这些出现时记得在头文件补上#include <math.h>
3.%02d:这是一个补位的东西,0表示在变量前补0,2表示补成两位,即5补成05;
暂时就这么多了,这些知识点都是个人理解,如果有错,请大家即使指出,谢谢!
不早了,睡觉了,晚安,集大,99周年生日快乐!!!