学生成绩管理--课程门数自由输入

简单来说就是设两个结构体,一个学生信息,一个课程信息;在学生结构体里面弄一个课程结构体指针,到时候若某学生有n门课程就创建n个课程大小的数组即可。

示例如下:

#include <stdio.h>
#include <stdlib.h>
/*先定义两个结构体*/
struct subject{
char c_name[20];       //课程名
double grade;          //该课程成绩
};
struct student{
char number[10];       //学号
char name[10];          //姓名
int n;                          //课程门数
struct subject *cj;       //课程
double sum;              //总分
double average;        //平均分
};
int main()
{
    int i,j;
    struct student s[10];
    for(i=0;i<10;i++){                                                          //输入十个学生信息
       scanf("%s %s %d",s[i].number,s[i].name,&s[i].n);     //输入学生学号,姓名,课程门数
       s[i].sum=0;
       s[i].cj=(struct subject *)malloc(s[i].n * sizeof(struct subject));
       for(j=0;j<s[i].n;j++){
           scanf("%s %lf",s[i].cj[j].c_name,&s[i].cj[j].grade);  //输入每门课程名称和成绩
           s[i].sum+=s[i].cj[j].grade;                                       //计算总分
       }
       if(s[i].n!=0) s[i].average=s[i].sum/s[i].n;                    //计算平均分
       else s[i].average=0;
    }
    for(i=0;i<10;i++){
        printf("%s %s",s[i].number,s[i].name);
        for(j=0;j<s[i].n;j++)
        printf("\t%s\t%.2lf",s[i].cj[j].c_name,s[i].cj[j].grade);
        putchar('\n');
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_44227356/article/details/86238485
今日推荐