C语言博客作业--函数嵌套调用

一、实验作业

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语言的认识也越来越深,代码量也越变越大,从当初的寥寥几行代码,到现在的几百行代码,回顾这个成长的过程,我的有一点成就感。但是随着学习的不断深入,我感觉也越来越难了,比如这一次的学生成绩管理系统,对于提高它的健壮性,我感到有些无从下手;所以我还需要继续不断努力,争取取得一些好成绩。

posted @ 2017-12-31 22:55  久念  阅读(5262)  评论(1编辑  收藏  举报