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日

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退