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.

2.学习体会。

posted @ 2017-12-31 22:38  一叶落而秋将至  阅读(298)  评论(3编辑  收藏  举报