#include <stdio.h>
void aver(float *c, float *avg) {
int i, j ;
float sum, average;
for (i = 0; i < 10; i++, avg++) {
sum = 0.0;
for (j = 0; j < 5; j++) {
sum = sum + (*(c + 5 * i ) + j);
average = sum / 5;
*(avg + i) = average;
}
}
}
int main() {
float a[10][5], average[10];
int i, j, k;
float *pa, *pav;
pa = &a[0][0];
printf("请输入十位学生的五科成绩:\n");
for (i = 0; i < 10; i++) {
printf("第%d位学生:", i + 1);
for (j = 0; j < 5; j++)
scanf("%f", pa + 5 * i + j);
}
pav = &average[0];
aver(pa, pav );
for (i = 0; i <= 10; i++)
printf("第%d个学生成绩:%f\n", i + 1, *pav);
return 0;
}
请问为什么无法正常求出每个学生的平均分
#include <stdio.h>
void aver(float *c, float *avg) {
int i, j;
float sum, average;
for (i = 0; i < 10; i++) {
sum = 0.0;
for (j = 0; j < 5; j++) {
sum = sum + (*(c + 5 * i + j));
}
average = sum / 5;
*(avg + i) = average;
}
}
int main() {
float a[10][5], average[10];
int i, j, k;
float *pa, *pav;
pa = &a[0][0];
printf("请输入十位学生的五科成绩:\n");
for (i = 0; i < 10; i++) {
printf("第%d位学生:", i + 1);
for (j = 0; j < 5; j++)
scanf("%f", (pa + 5 * i + j));
}
pav = &average[0];
aver(pa, pav);
for (i = 0; i < 10; i++)
printf("第%d个学生成绩:%f\n", i + 1, *pav++);
return 0;
}
1.以后测试代码别搞这么多的数量10*5,每次都是自己一个一个的回车来输入,不麻烦么。或者搞个变量来存学生的数量和科目数也行。
2.第5行的avg++和第12行的赋值方式有冲突,我把第五行的去掉了。
3.输出的时候for循环的应该是<而不是<=。
有帮到你的话没法点个采纳吧。