ChristianLuu 2021-04-18 10:42 采纳率: 75%
浏览 55
已结题

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;
}

请问为什么无法正常求出每个学生的平均分

  • 写回答

1条回答 默认 最新

  • 猫叔大鸭梨 2021-04-18 13:07
    关注
    #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循环的应该是<而不是<=。

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月19日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改