一、实验作业
1.1 PTA题目:递归法对任意10个数据按降序排序
设计思路
//将选择排序法进行变形
if(n为1)//递归出口
返回
else
{
index=10-n;//index从0开始
for(i=10-n+1 to 9)
if(a[i]小于a[index])交换
交换a[index]和a[10-n]
sort(a,n-1);//递归式子
}
代码截图
调试问题
在对于index的赋值上尝试了很多次,才总结出规律。
1.2 学生成绩管理系统
1.2.1 画函数模块图,简要介绍函数功能。
1.2.2 截图展示你的工程文件
1.2.3 函数代码部分截图(要求截图你的头文件、插入学生信息及学生成绩信息代码、删除学生成绩信息代码、总分排序代码。代码中务必加入必要的注释。)
- 代码总行数:318
- 头文件
- 插入学生信息及学生成绩信息代码
- 删除学生成绩信息代码
总分和平均分进行排序代码
1.2.4 调试结果展示(要求分别展示菜单、每个命令运行结果,对非法数据必须有检验并提示,如用户学号输入非法、或者输入重复学号,提示插入失败。查询不到相应学生信息给予提示等等。)
- 输入学生成绩
- 添加学生成绩
- 修改学生成绩
- 删除学生成绩
- 显示信息
查询信息
1.2.5 调试碰到问题及解决办法。
一开始把其他所有的函数文件都预编译到main文件里去了,程序一直运行不起来。
在student.h头文件没有对函数进行声明。二、截图本周题目集的PTA最后排名。
三、阅读代码(找一篇优秀代码贴图展示,先描述题目,再贴代码,可自己在里面加注释。说明该代码功能是什么,优点是什么?代码本次要求找递归相关代码。)
给出在有序数组a中查找数据元素x是否存在的递归算法
#include <stdio.h> int BSearch(int a[],int x,int low,int high); void main(void) { int a[] = {1,3,4,5,17,18,31,33}; int x = 17; int bn; bn = BSearch(a,x,0,7); if(bn == -1) printf("x=%d,不在数组a中",x); else printf("x=%d,在数组a中下标为%d",x,bn); printf("\n"); } int BSearch(int a[],int x,int low,int high) { int mid; if(low > high) return -1; //查找不成功 mid = (low + high) / 2; if(x == a[mid]) return mid; //查找成功 else if(x < a[mid]) { return BSearch(a,x,low,mid - 1); } else { return BSearch(a,x,mid + 1,high); } }
算法的参数包括:有序数组a,要查找的数据元素x,数组下界下标low,数组上界下标high。当在数组a中查找到数据元素x时,函数返回数组a的下标;当在数组a中查找不到数据元素x时,函数返回-1。
四、本周学习总结
1.介绍本周学习内容
- 1.1宏定义(宏替换)
1.格式:#define 宏名 宏定义字符串
2.用途
1.符号常量
2.简单的函数功能实现 - 1.2文件包含(include)
1.作用:把指定的文件模板内容插到#include所在的位置
2.格式:#include< >或#include" "
3.文件名:.h或.c - 1.3程序文件模块
当一个C语言程序由多个文件模块组成时,整个程序只允许有一个main()函数,程序的运行从main()函数开始。 - 1.4 外部变量与静态全局变量
1.外部变量格式:extern 变量表名;
2.在全局变量前加static变为静态全局变量,作用范围仅限于当前的文件模板中。 - 1.4指针数组
1.格式:类型名 *数组名[数组长度];
2.作用:在操作时,既可以直接对数组元素进行赋值和引用,也可以间接访问元素所指向的单元内容。 1.5二级指针
1.定义:类型名 **变量名;
2.举例:
3.二维数组的指针形式int a; int *p=&a; *p=a; int **pp=&p; *pp=p; **pp=a;
二级:a+i
一级:a[i]+j (a+i)+j
元素:a[i][j] (*(a+i)+j)- 1.6动态输入多个字符串
申请空间:=(类型名 *)malloc ( )
释放空间:free() 1.7指向函数的指针
1.定义格式:类型名(变量名)(参数表);
2.调用格式:(变量名)(参数表);2.学习体会。
本周学习了很多新的东西,这些内容解答了之前有些代码不懂的疑惑,但像二级指针,指针数组想要掌握熟练,并不容易,需要花时间来练习。链表更是看了好久也没有懂一点点。对于本周的学生管理系统大作业,完成的过程那是十分艰难,对于工程项目的不理解,如何建立头文件等等,刚开始打了两个函数,程序运行不起来,很难受,一点点的改,还是要把每块的内容弄懂,不要混淆才行。