一、实验作业
1.1 PTA题目:递归实现顺序输出整数
1.1.1设计思路
定义函数printdigits,形参为n接收数字
判断n/10是否不等于0
如果是则递归调用函数printdigits(n/10)
输出当前n的最后一位并换行
1.1.2代码截图
1.1.3调试问题
本题比较简单,思路清晰,一遍就过,并无调试问题。
1.2 学生成绩管理系统
1.2.1 画函数模块图,简要介绍函数功能
new_student( )新增学生信息函数
output_student( )输出学生信息函数
sum( ),average( )计算总分和平均分函数
sort( )按平均分排序函数;sort1( )学号排序的函数;sort2( )总分排序的函数;
modify( )修改学生成绩的函数;search( )查询学生信息的函数;
delet( )删除学生成绩信息函数;check( )检查学号的函数
1.2.2 截图展示工程文件
1.2.3 函数代码部分截图
本系统代码总行数:320
头文件
插入学生信息及学生成绩信息代码
删除学生成绩信息代码
总分排序代码
1.2.4 调试结果展示
菜单
能够新增学生信息,并计算总分和平均分。
根据输入学号和课程号修改学生成绩信息
根据输入学号和课程删除学生成绩信息
输出显示所有学生成绩信息。(按照学号排好序的)
能够分别按照总分和平均分进行排序
能够根据学号查询学生信息
退出系统
用户学号输入非法
输入重复学号
查询不到相应学生信息
1.2.5 调试碰到问题及解决办法
- 1.在调试过程中我突然发现信息的输出与输入不符,都是一堆乱码,这个问题困扰了我很久,因为我之前还是没问题的,后来突然发现在输入的那个函数里的count没有赋初值,所以导致了错误。
- 2.在计算总和和平均分时,由于直接对结构体内容进行了修改,导致其它的一些功能错误,比如删除学生成绩这一功能,后来就把它们赋给另一些变量,这样就解决了问题。
二、截图本周题目集的PTA最后排名
三、阅读代码
猴子吃桃
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾就多吃了一个。第二天早上又将剩下的桃子吃了一半,还是不过瘾又多
吃了一个。以后每天都吃前一天剩下的一半再加一个。到第10天刚好剩一个。问猴子第一天摘了多少个桃子?
我们可以先将这10天分开来看,第十天时剩下一个,而这一个正是“前一天剩下的一半再加一个”,那么第九天就是有2*(1+1)=4
个,此时再将第九天与第八天一起看,则第8天有2*(3+1)
个,由此递推。
四、本周学习总结
1.1.介绍本周学习内容
- 1.函数嵌套调用:可以用main函数解决整个问题,它调用解决小问题的函数,而这些函数有进一步调用解决更小问题的函数,从而形成函数的嵌套调用;采用结构化思想,使代码看起来更加清晰,结构明确。
- 2.递归:利用函数的嵌套调用,可以使函数自己调用自己;递归函数有两个关键点,递归出口和递归式子;这两个条件缺一不可;递归函数实质是把问题简化成形式相同比较简单的一些情况,可以解决一些用其他方法很难解决的问题。
- 3.宏定义格式为:
#define 宏名 宏定义字符串
- 4.宏的用途:(1)符号常量,如PI,数组大小定义,以增加程序的灵活性;(2)简单的函数功能实现;(3)为程序书写带来一些方便,当程序中需要多次书写一些相同内容时,可以把内容简写为宏。注意点:宏只是进行替换。
- 5.#include<需包含的文件名>这个将从系统文件夹里查找;#include"需包含的文件名"这个将从当前文件夹里查找,找不到再从系统文件夹里找。
- 6.编译预处理命令不会被编译。
- 7.指针数组定义格式:
类型名 *数组名[数组长度];
- 8.二级指针:指向指针的指针,定义格式为:
类型名**变量名;
- 9.命令行参数:形式为:
命令名 参数1 参数2 ··· 参数n
。可以在DOS环境的命令窗口中,输入可执行文件名作为命令,运行该程序。
2.学习体会
在经过了快一个学期的学习,我从这门课程中学到了很多;记得在开学之前我就开始接触C语言了,在打出自己的第一个代码Hello World之后,我的内心是无比激动的;后来在经过课堂上的学习与每天打代码练习,我对于C语言的认识也越来越深,代码量也越变越大,从当初的寥寥几行代码,到现在的几百行代码,回顾这个成长的过程,我的有一点成就感。但是随着学习的不断深入,我感觉也越来越难了,比如这一次的学生成绩管理系统,对于提高它的健壮性,我感到有些无从下手;所以我还需要继续不断努力,争取取得一些好成绩。