C语言博客作业--函数嵌套调用
一、实验作业(6分)
1.16-7 递归法对任意10个数据按降序排序
2.设计思路
1.定义i,用于循环,定义max=a[n-1]用于存放每次递归的最大值
2.如果n等于0,return;
3.如果n不等于0,令i=n-1;i>=0;i--;
4.如果max比a[i]a小,那么交换a[n-1]和a[i]的值,即将最大值放到a[n-1];
5.递归sort(a,n-1);
6.return;
3.代码截图
4.调试问题
原先返回的时候想写return a[0];但是总是出现错误,看到底下的错误提示写的是int *,就试着什么都不写,如以上代码截图,就过了,不理解。
1.2 学生成绩管理系统(5分)
1.2.1 画函数模块图,简要介绍函数功能。
如:
1.2.2 截图展示你的工程文件,如:
1.2.3 函数代码部分截图
本系统代码总行数:291
- 头文件
-
插入学生信息
-
删除学生信息
- 排序代码
1.2.4 调试结果展示
第一次操作需要先输入学生信息,否则无可查询
输入学生成绩信息
修改学生成绩信息,修改后总分,平均分重新计算
删除学生成绩信息
排序
查找
新增学生成绩信息
修改时出错,删除时出错,查找时出错
1.2.5 调试碰到问题及解决办法。
碰到很多问题,刚开始代码有错不能编译,当时不知道是因为代码写错会弹出makefire,所以一开始几个小时都不能编译,把我给气的呀,还以为是我的c++出问题了。后来,重新修改代码很多次,因为总会发现不对的或者需要增添的地方。现在的代码依然需要完善。
二、截图本周题目集的PTA最后排名。
三、阅读代码(1分)
全排列问题
#include <iostream>
#include <algorithm>
using namespace std;
template<class Type>
void Perm(Type list[], int k, int m )
{ //产生[list[k:m]的所有排列
if(k==m)
{ //只剩下一个元素
for (int i=0;i<=m;i++)
cout<<list[i];
cout<<endl;
}
else //还有多个元素待排列,递归产生排列
for (int i=k; i<=m; i++)
{
swap(list[k],list[i]);
Perm(list,k+1,m);
swap(list[k],list[i]);
}
}
int main() {
char s[]="abc";
Perm(s,0,2);
return 0;
}
四、本周学习总结(1分)
1.介绍本周学习内容
- 1.宏基本定义
1.格式 #define 宏名 宏定义字符串
2.宏定义不是c语句,不要分号,宏名中间不能有空格,但是宏定义字符串可以有空格
3.用途,制作符号常量,还有简单的函数实现功能,跟为程序书写带来一些方便
4.允许宏嵌套定义 - 2.链表
1.链表是动态存储分布的数据结构。
2.特点,各部分不可以连续存放,长度不加限定,并根据需要动态的开辟内存空间,可以自由插入新元素,所以链表节省内存,提高效率。
3.