这个程序调了好久,第一个学生的平均成绩明显不对,但又找不出哪里错了,求指点!
#include<stdio.h>float score[3][4]={{100,98,96,94},{90,88,86,84},{80,78,76,74}};//每一行为一个同学的成绩
void main(){ void aver_stu(float score[][4],float avers[]); void aver_cla(float score[][4],float averc[]); int i; float aver1[3],aver2[3]; aver_stu(score,aver1); aver_cla(score,aver2); printf("学生的平均成绩分别为\n"); for(i=0;i<3;i++) { printf("%f\n",aver1[i]); } printf("课程的平均成绩分别为\n"); for(i=0;i<4;i++) { printf("%f\n",aver2[i]); } }
void aver_stu(float score[][4],float avers[])//计算每位同学各门课的平均分(对行求平均){ int i; for(i=0;i<3;i++) { avers[i]=(score[i][0]+score[i][1]+score[i][2]+score[i][3])/4; }}
void aver_cla(float score[][4],float averc[])//计算每位门课各个同学的平均分(对列求平均){ int j; for(j=0;j<4;j++) { averc[j]=(score[0][j]+score[1][j]+score[2][j])/3; }}
这就对了!
但是aver2这个数组是用来计算课程的平均成绩的,为啥会对计算每位同学各门课的平均分有影响?
这是数组越界之后产生的问题!