如何调用具有结构的函数(C ++)

时间:2014-12-04 09:38:55

标签: c++ function structure call

我的代码无效,因为我在使用结构时调用了两个函数时出现问题。我想我没有正确地调用它,但我不确定问题是在这里还是在定义本身。 这是我的代码:

#include <stdio.h>
#define NUM 3

    struct student{
        char name[20];
        int kor;
        int math;
        int eng;
        int sum;
        double avg;
        double avg2;
        double k, m, e;
};

void average(student* st)
{
    int i, sum = 0;
    for(i=0;i<NUM;i++) {
    st[i].sum= st[i].kor + st[i].math + st[i].eng;
    st[i].avg= st[i].sum / NUM;
    }
}

void average2(student* st)
{
    int i, sum = 0;
    double K, M, E;
    for(i=0;i<NUM;i++) {
        K+= st[i].kor;
        M+= st[i].math;
        E+= st[i].eng;
    }
}

int main(void)
{
    student stu[NUM]={{"Tom"},{"Jane"},{"Eddy"}} ;
    int i;
    int max;
    double K, M, E;
    printf("Input scores.\n");
    for(i=0;i<NUM;i++)
    {   printf("\n<%s>\n",stu[i].name);
        printf("Korean:");
        scanf("%d",&stu[i].kor);
        printf("Math:");
        scanf("%d",&stu[i].math);
        printf("English:");
        scanf("%d",&stu[i].eng);
    }
    printf("\nName\tKorean\tMath\tEnglish\tSum\tAverage\n");
    average(stu);
    for(i=0;i<NUM;i++)
        printf("%s\t%d\t%d\t%d\t%d\t%.2f\n",stu[i].name,stu[i].kor,stu[i].math,stu[i].eng,stu[i].sum,stu[i].avg);

    average2(stu);
    printf("Average %.2lf\t%.2lf%.2lf\n", k/3, m/3, e/3);
}

提前感谢您的回答,Coco

1 个答案:

答案 0 :(得分:2)

for循环应该{}在c ++中包含多行。

for(i=0;i<NUM;i++)
{
    st[i].sum= st[i].kor + st[i].math + st[i].eng;
    st[i].avg= st[i].sum / NUM;
}

同样在你的函数average2中,目前还不清楚你在做什么。

你在main和average2中声明了相同的变量,双K,M,E;所以函数只接受局部变量。

对于你的第二个printf,这里是逻辑。

for(i=0;i<NUM;i++) {
    K+= st[i].kor;
    M+= st[i].math;
    E+= st[i].eng;
}
printf("Average %.2lf\t%.2lf%.2lf\n", K/3, M/3, E/3);