c语言课程设计学生成绩管理系统编程问题,有关结构体数组,后面怎样增加删除函数?

structstudent
{
int i;/*班级*/
long j;/*学号*/
char m[30];/*姓名*/
char n[10];/*性别*/
int x;/*年龄*/
}c[50];
struct score
{
int q;/*课程编号*/
char w[50];/*课程名称*/
float e;/*学分*/
float r;/*考试成绩*/
float t;/*平时成绩*/
double y;/*综合成绩*/
}z[50][10];
后面定义的二维数组对吗?老师说错了,但是程序运行没有问题;而且后面要删除某个学生成绩该怎样删除呢???

语法没错,这样定义是临时的,不方便。也就是说你这里定义一个这样的数组,其他地方不可以定义了。你应该这样:

struct student
{
    int i;/*班级*/
    long j;/*学号*/
    char m[30];/*姓名*/
    char n[10];/*性别*/
    int x;/*年龄*/
}
struct score
{
    int q;/*课程编号*/
    char w[50];/*课程名称*/
    float e;/*学分*/
    float r;/*考试成绩*/
    float t;/*平时成绩*/
    double y;/*综合成绩*/
}

student c[50];
score z[50][10]; 
 


修改操作:

c[12]->i = 1314;

....


删除的话,对于数组而言你就定义一个长度,把想删的一项放到数组最后,然后后面的往前面移,修改这个长度的值就好了。

C++里面也有list可以直接用的吧,不过这个老师应该不会教。

追问

老师说用二维数组储存结构体不合理,而且要想具体删除某一个结构体会很麻烦。现在是考试,他要评分的,所以你能给我讲两句这个程序具体是怎么删除的吗?而且如何修改比较合理呢?真的真的非常感谢你

追答for(a=0;a<o;a++)//遍历所有的学生
{
    if(qq==c[a].j)//如果输入的学号等于学生学号
    {
        for(i=a;i<o;i++)那么这个学生删去,后一个学生补这一个位置(他后面所有学生向前移一个位置)
        {
            c[i]=c[i+1];
            ...//成绩什么的跟着移动
        }
        printf....
        w=w+1; 
        o=o-1;//名单上面的个数减少1个  
    }
    .......
}

你给出的是模板吗?很不规范啊...删除倒是这么删没错...

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-17
用顺序表,而且为什么定义为二维数组啊?
第2个回答  2015-01-17
为什么在score结构体声明z数组???
第3个回答  2015-01-17
需要给你完成一份吗追问

可以吗?这该怎么改呢?非常感谢。。。

追答

需要定做可以丘上说
我id

相似回答