注册 登录
编程论坛 C语言论坛

结构体为什么求不出总分?

fengyinxqy 发布于 2020-05-29 19:23, 2025 次点击
输入5名学生的学号、姓名和3门课程(programming、 database、 network)的成绩,存入一个结构体数组中。编写sumScore函数,其功能是计算学生3门课的总成绩,并存入结构体数组中。在主函数中输入学生信息,调用 sumScore函数,并输出学生的学号、姓名和总成绩信息。
下面是我目前写出来的代码、
程序代码:
#include <stdio.h>
struct courses
{
    int programming;
    int database;
    int network;
    double score;
};
struct student /*学生信息结构定义*/
{
    int num;       /*学号*/
    char name[10]; /*姓名*/
    int sum;       /*总分*/
    struct courses sc[3];
};
int sumScore(struct student students[]);
int main()
{
    struct student students[5];
    int i;
    for (i = 0; i < 3; i++)
    {
            printf("num:");
            scanf("%d",&students[i].num);
            printf("name:");
            scanf("%s",students[i].name);
            printf("programming score:");
            scanf("%d",&students[i].sc[0].programming);
            printf("network score:");
            scanf("%d",&students[i].sc[1].network);
            printf("database score:");
            scanf("%d",&students[i].sc[2].database);
    }
    sumScore(students);
    printf("num\tname\tsum\n");
    for (i = 0; i < 3; i++)
    {
        printf("%d\t%s\t%d\n",students[i].num,students[i].name,students[i].sum);
    }
    return 0;
}
int sumScore(struct student *students)
{
    int i;
    for (i = 0; i < 3; i++)
    {
            students[i].sum=students[i].sc[0].database+students[i].sc[1].network+students[i].sc[2].programming;
    }
}
4 回复
#2
吹水佬2020-05-29 20:46
struct courses sc[3];
是每个学生有3组3门课(programming、database、network)
students[i].sum=students[i].sc[0].database+students[i].sc[1].network+students[i].sc[2].programming;
sum = 1组的database + 2组的network + 3组的programming
代码好像没问题,只是sc[3](3组相同的3门课)和sum的算法不好理解。
#3
fulltimelink2020-05-30 15:09
sc赋值时和求和时不是同一个,sc0赋值是programming求和时用的database,求和时用到的都未初始化
course结构体这样设计的目的是啥,score好像没用上
#4
西瓜瓤2022-05-28 22:21
你这好像是地址相加总和不是总分
#5
西瓜瓤2022-05-28 22:29
回复 4楼 西瓜瓤
students[i].sum=students[i].sc[0].programming+students[i].sc[1].network+students[i].sc[2].database;这个地方错了;数组的标号错了;那你顺序错了标号纠错
1