求10个学生5门课成绩平均分的问题

#include <stdio.h>

#include <math.h>

int stu[11][7]= {0}; //定义全局数组

void aver_stu(int t[11][7]); //定义学生平均分函数

void aver_course(int t[11][7]); //定义课程平均分函数

void high(int t[11][7]); //定义最高分函数

void vari(int t[11][7]); //定义方差函数

int main() {

 int i, j;

 for (i=0; i<10; i++) {

  for (j=1; j<6; j++)

   scanf("%d", &stu[i][j]);

 } //循环输入10个学生各5门课的成绩

 for (i=0; i<10; i++)

  stu[i][0]=i+1;

 printf("序号 课程1 课程2 课程3 课程4 课程5 平均分\n");

 aver_stu(stu); //调用学生平均分函数

 aver_course(stu); //调用课程平均分函数

 for (i=0; i<11; i++) {

  for (j=0; j<7; j++)

   printf("%6d",stu[i][j]);

  printf("\n");

 }

 high(stu); //调用最高分函数

 vari(stu); //调用方差函数

 return 0;

}

//学生平均分函数

void aver_stu(int t[11][7]) {

 int i, j;

 int k, ave;

 for (i=0; i<10; i++) {

  k=0;

  for (j=1; j<6; j++) {

   k+=t[i][j];

  }

  ave=k/5;

  t[i][7]=ave;

 }

}

//课程平均分函数

void aver_course(int t[11][7]) {

 int i, j;

 int k, ave;

 for (j=1; j<6; j++) {

  k=0;

  for (i=0; i<10; i++) {

   k+=t[i][j];

  }

  ave=k/10;

  t[11][j]=ave;

 }

}

 

//最高分函数

void high(int t[11][7]) {

 int i, j, h,stu,cour;

 for (i=0, h=0, stu=0, cour=0; i<10; i++) {

  for (j=1; j<6; j++)

   if (t[i][j]>h) {

    h=t[i][j];

    stu=i+1;

    cour=j+1;

   }

 }

 printf("\n最高分是 %d, 来自 No.%d 学生 & No.%d 课程\n", h, stu, cour);

}

//方差函数

void vari(int t[11][7]) {

 int i, j, k, m;

 float temp[10], var, x1, x2;

 for (i=0, m=0; i<10; i++, m++) {

  for (j=1, k=0; j<6; j++)

   k+=t[i][j]; // 每个人的每门课累加循环

  temp[m]=k/5; // 每个人的平均分

 }

 for (i=m=x1=x2=0; i<10; i++) {

  x1+=pow(temp[i], 2);// 每个人的平均分平方的累加

  x2+=temp[i]; // 每个人的平均分的累加

 }

 var=x1/10-pow(x2/10, 2); // 按公式求的平均分方差

 printf("方差是 %f\n", var);

}

 

 

 

 

结果如下:

请教大神代码错在哪里?

你求了平均分好像并没有输出,你仔细看下。

输出正常,只是间隔没对齐而已

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps: 问答会员【8折】购 ,仅需→¥23.2,即可享受5次/月 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m