C语言博客作业--函数嵌套调用
2018-01-01 22:44
183 查看
一、实验作业
1.1 PTA题目:递归求简单交错幂级数的部分和
1.1.1设计思路
定义一个范围大的sum来放计算出来的交错幂级数的部分和并赋予初值0
判断输入n的值
如果n为1; return x;
如果n为偶数; sum=sum-pow(x,n)+fn(x,n-1);
如果n为奇数; sum=sum+pow(x,n)+fn(x,n-1);
最后返回sum;
1.1.2代码截图
1.1.3调试问题
一开始没怎么理解递归的含义所以打出的代码是下面这样:所以得出的结果就是x的n次方的结果。
然后想了很久知道了n在不断的减小,需要记录下变化后的n才可以得到结果,所以把代码改成了:
1.2 学生成绩管理系统
代码总行数:2771.2.1 画函数模块图,简要介绍函数功能
1.2.2 截图展示你的工程文件
1.2.3 函数代码部分截图
1.2.4 调试结果展示
友好的界面输入学生信息
输出学生信息
修改成绩
1.2.5 调试碰到问题及解决办法
在程序可以运行后,出现了名称与分数无法对其的情况把原来有的计算平均分数和总分的一步,删去了。
因为在每次输入成绩后需要先输入数字2,计算完平均分数和总分后,输出的成绩才会有平均分数和总分,所以为了方便直接删除了计算平均分数和总分的函数,在输出成绩的时候,直接输出平均分数和总分会更直观。
查询错误
因为修改前的代码没有输入num(学号)的语句
间断输入,输出后得到的成绩会改变。
一开始,自己使用的是p->stu->math后改成了
在一开始,使用extern Count会使得程序混乱,然后改成了int Count。
对于插序,我想说,插入一个学生的成绩,其实可以用输入一个学生的成绩,然后排序,就可以不用写另一个函数来插序了。
二、截图本周题目集的PTA最后排名
三、阅读代码
#include<stdio.h> void Swap(int *lhs, int *rhs) { int t = *lhs; *lhs = *rhs; *rhs = t; } void FullPermutation(int source[], int begin, int end) { int i; if (begin >= end) // 找到一个排列 { for (i = 0; i < end; i++) { printf("%d", source[i]); } printf("\n"); } else// 没有找完一个排列,则继续往下找下一个元素 { for (i = begin; i < end; i++) { if (begin != i) { Swap(&source[begin], &source[i]); // 交换 } // 递归排列剩余的从begin+1到end的元素 FullPermutation(source, begin + 1, end); if (begin != i) { Swap(&source[begin], &source[i]); // 回溯时还原 } } } } int main() { int source[30]; int i, count; scanf("%d", &count); // 初始化数组 for (i = 0; i < count; i++) { source[i] = i + 1; } FullPermutation(source, 0, count); return 0; }
这片代码的用意是实现全排列。
程序的主要思路是:
1.把第1个数换到最前面来(本来就在最前面),准备打印1xx,再对后两个数2和3做全排列。
2.把第2个数换到最前面来,准备打印2xx,再对后两个数1和3做全排列。
3.把第3个数换到最前面来,准备打印3xx,再对后两个数1和2做全排列。
可见这是一个递归的过程,把对整个序列做全排列的问题归结为对它的子序列做全排列的问题,注意我没有描述Base Case怎么处理,你需要自己想。你的程序要具有通用性,如果改变了N和数组a的定义(比如改成4个数的数组),其它代码不需要修改就可以做4个数的全排列(共24种排列)。
四、本周学习总结
1.介绍本周学习内容
1.1.宏定义(宏替换): #define 宏名 宏定义字符串1.2宏的用途:1.可以定义字符常量,如可以:'define pi 3.14159'。 2.可以定义某些简单的函数。 3.可以为程序书写带来方便,例如如果一个很长的字符需要多次输出,则可以用宏定义的来代替他。
1.3文件包含的格式: # include “需包含的文件名”,一般是自己设定的包含文件。先在当前文件夹查找,若找不到则再去系统文件找.
1.4编译预处理: #if....#else...#end if,与if else语句不同,当一条程序能够执行时就会自动舍弃另外一段程序.
2.学习体会
本周学会了蛮多不懂的,在刚刚懂的时候没有记录下来,在总结的时候就忘了自己应该要写什么,再加上跨年的假期,所以根本就把要写的都忘了,唉,下次一点要及时记。我们开始接触了程序的编写,就不仅仅只是做题了,其实一个程序的编写,就是我们平常写题的代码的一个汇总,把它们拼起来就可以了,但是又不是那么的容易,有很多细节性的错误,但是又很难改,感觉到了程序设计的难度了。
但是写出一个可以运行的程序的成就感是很好的,会觉得还想再来一个!
对于刚刚接触的链表,我个人感觉画图是一个很好的理解方式,并且画图也十分直观。
相关文章推荐
- C语言博客作业--函数嵌套调用
- C语言博客作业--函数嵌套调用
- C语言博客作业--函数嵌套调用
- C语言博客作业--函数嵌套调用
- C语言第十一次博客作业---函数嵌套调用
- C语言博客作业--函数嵌套调用
- C语言博客作业--函数嵌套调用
- C语言博客作业--函数嵌套调用
- C语言博客作业--函数嵌套调用
- C语言博客作业--函数嵌套调用
- C语言博客作业--函数嵌套调用
- C语言博客作业--函数嵌套调用
- C语言博客作业--函数嵌套调用
- C语言博客作业--函数嵌套调用
- C语言博客作业--函数嵌套调用
- C语言博客作业--函数嵌套调用
- C语言博客作业—函数嵌套调用
- C语言博客作业--函数嵌套调用
- C语言博客作业--函数嵌套调用
- C语言博客作业--函数嵌套调用