C语言博客作业--函数嵌套调用
一、实验作业
1.1 PTA题目(1分)
6-6 递归求简单交错幂级数的部分和
设计思路
传入n,x
如果n=1,返回x
否则返回 x-x*fn(x,n-1)
代码截图
调试问题
- 这一题一开始没有什么头绪,后来看到了最后一个式子才发现他们的规律是这样的,所以我一开始是打算定义一个flag来讨论n是奇数还是偶数来判断是加还是减。然后用了一个pow函数,一开始的计算式是pow(x,n)+fn(x,n-1);在用题目给的测试数据测试时得数一模一样,但是提交devc就是错的,所以后来就用别的数据测试了一下果然有问题。看来看去就是计算式有问题,所以后来就全部都改了,也不用flag就直接返回x-x*fn(x,n-1),后来就对了。
1.2 学生成绩管理系统
- 本次工程文件长度190行,没有完全完成,删除学生信息那一块还没有做成。
1.2.1 画函数模块图,简要介绍函数功能。
1.2.2 截图展示你的工程文件
1.2.3 函数代码部分截图
- 主函数:
- 头文件:
- 新建学生信息:
- 添加学生信息:
- 输出学生信息:
- 按平均分给学生排序:
- 查询学生信息:
- 修改学生信息:
1.2.4 调试结果展示
= 主菜单:
= 新建学生信息:
- 按平均成绩排序:
- 查询学生信息:
- 修改学生成绩:
1.2.5 调试碰到问题及解决办法。
-
1.对这个系统真的有点无从下手,所以调试了好久连运行都过不了
-
解决办法:后来参考了同学的代码发现自己的主函数里多了#include<stdio.h> #include<string.h> ,后来把这两个删去再修改一些别的地方就好了。
-
2.输出了一堆莫名其妙的东西
-
解决办法:我反复检查后发现是我的输出弄错了,我将分数定义成单精度浮点型输出时用的是%lf而且也没有控制小数点位数,后来改成%。2f就可以了。
二、截图本周题目集的PTA最后排名。
三、阅读代码
这个代码实现的功能是对一个数进行全排列,就以123为例,程序就是要输出123的所有排列方式
- 之所以选这个代码是因为听说这是递归算法的经典应用,但是尴尬的是我并没有完全看懂他是怎么实现全排列的,如果有人看懂了麻烦告诉我一下。
四、本周学习总结
1.介绍本周学习内容
本周学习了一个很接近人类思维的函数---递归。递归写的代码可读性很强,而且只要找到第n项和n-1项的规律,不管什么类型的题目都可以简单化。但是递归也真的很浪费内存。本周还学习了怎样做一个工程文件,形成系统并实现一些简单的功能。这个系统的功能虽然很简单,但是比起之前写的程序不仅代码量多了好多,实现的功能也比之前多了不少。
2.学习体会
- 通过这一周的学习我才感觉到自己学到了真正C语言的用途。之前写的程序都是只能实现一个单一的功能,让我的感觉就是完全不实用。因为那些功能都太简单,平时有谁会为了一个那么简单的功能去专门写这么一个代码呢?不现实。虽然我知道那些都是运用于实际的基础。即使现在做的系统也很简单,但是已经让我初步感受到了C语言的真正魅力。