求C语言高手解答!!!!!!!

来源:百度知道 编辑:UC知道 时间:2024/05/19 12:17:44
想编一个程序,先让操作者确定学生和学科的个数,再输入每个学生的信息,信息包括姓名,学号,每科学科的成绩。把这些内容保存到一个文件里。
之后允许操作者对信息进行修改(修改一个学生成绩),删除(删除一个学生成绩),插入(插入一个学生成绩)。而后输出优秀生(平均成绩大于90分)的信息。
开头定义
struct student
{
char name[10];
char num[10];
float score[10];
float ave;
}stu[100];
int stunum,subnum;
stunum和subnum由操作者输入学生和学科数储存到里面。
而后编出revise(修改),delete(删除),insert(插入)函数,再在main函数中分别顺序调用。

现在的问题是,我在想编优秀输出函数(void outstanding)时,出了问题
for(i=0;i<stunum;i++)
{
if(stu[i].ave>=90)
......
}
回头发现i<stunum不对,因为有过插入和删除,这样学生数可能发生了变化。甚至插入或删除的数目多于一个。
现在应该如何处理???并且之后还有一个输出不及格学生成绩的函数,也遇到同样问题。
请高手帮忙!!

在执行删除,插入操作的时候将stunum相应的++和--
最简单的操作方法嘛.

如果stunum不是全局变量,就用参数传递
int insert(int stunum,.....)//返回操作之后的stunum

改为for(i=0;i<=stunum;i++)