回 帖 发 新 帖 刷新版面

主题:这个程序写的挺乱,哪个大侠帮我看看

#include <stdio.h>
void main()
{ float aver(float str[][],int m,int n);//求每个同学的平均分的函数
  void max(float str[][],int m,int n);//求每门课的平均分的函数

  float sum=0;
  int i,j;
  float str1[10][6]={{50,51,52,53,54},{55,56,57,58,59},{60,61,62,63,64},{65,66,67,68,69},{70,71,72,73,74},{75,76,77,78,79},{80,81,82,83,84},{85,86,87,88,89},{90,91,92,93,94,},{95,96,97,98,99}};
  float str2[5];
  aver(str1[10][6],10,6);
  printf("每个同学的平均分为:");
  for(i=0;i<10;i++)
  printf("%4.2f",str[i][5]);
  for(i=0;i<5;i++)
  {for(j=0;j<10;j++)
  sum=sum+str[i][j];
  str2[i]=sum/10;
  }
  printf("每门课的平均分为:");
  for(i=0;i<5;i++)
  printf("%4.2",str2[i]);
  max(str[10][6],10,6);
  printf("\n");
}

float aver(float str[][],int m,int n)
{ int i,j;
float sum=0;
 for(i=0;i<n-1;i++)
 {for(j=0;j<n-1;j++)
  sum=sum+str[i][j];
 str[i][n-1]=sum/(n-1);
 }
void max(float str[][],int m,int n)
{int i,j,m,n;
float mx=0;
for(i=0;i<m;i++)
{for(j=0;j<n-1;j++)
if(str[i][j]>mx)
{mx=str[i][j];
 m=i;
 n=j;}
}
printf("成绩最高的同学所对应的学号为%d,课程为5d",m,n);
}我想输入10个学生的5门成绩,并调用函数求每个学生的平均分,以及每门课的平均分,还想求50个分数中最高分对应的学生号码和那门课,写的时候有很多疑问,也有很多错误

回复列表 (共2个回复)

沙发

先贴上一小段按lz意思稍微修改的例子:(改起来真吃力啊)
[code=c]
#include <stdio.h>

float aver(int m,int n,float str[m][n]); /*lz注意函数传数组的方式啊,还有,变长数组的声明方式啊!m,n在前面*/
void max(int m,int n ,float str[m][n]);

int main()
{  
  float sum=0;
  int i,j;
  float str1[10][6]={
  {50,51,52,53,54},{55,56,57,58,59},{60,61,62,63,64},
  {65,66,67,68,69},{70,71,72,73,74},{75,76,77,78,79},
  {80,81,82,83,84},{85,86,87,88,89},{90,91,92,93,94,},{95,96,97,98,99}};
  
  float str2[5];
  
  aver(10,6,str1);
  printf("每个同学的平均分为:");
  
  for(i=0;i<10;i++)
  {
    printf("%4.2f   ",str1[i][6]);
  }
  
  for(j=0;j<5;j++)
  {
     sum = 0;                 /*sum的位置请注意啊,每次计算完都要初始为0*/
     for(i=0;i<10;i++)
     {
        sum=sum+str1[i][j];
     }
     str2[j]=sum/10;
  }
  printf("\n每门课的平均分为:"); 
  for(i=0;i<5;i++)
  {
    printf("%4.2f  ",str2[i]);
  }

  /*max(10,6,str1);这个函数写的我实在看不懂了,未改,十分之费解啊!*/
  return 0 ;
}

float aver(int m,int n ,float str[m][n])

  int i,j;
  float sum;
  for(i=0;i<m;i++)
  {
    sum = 0 ;
    for(j=0;j<n;j++)
    {
      sum=sum+str[i][j];
    }
    str[i][j]=sum/(n-1);
  }
}
[/code]
个人建议函数别用数组做实参,浪费空间,用指针传址就ok、、还有就是m,n用预定义
会方便很多的、、
稍微提醒下lz,写代码尽量细心一点啊、、

板凳

非常非常感谢,呵呵

我来回复

您尚未登录,请登录后再回复。点此登录或注册