C语言小白求助 指针

#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循环的应该是<而不是<=。

有帮到你的话没法点个采纳吧。