输入10个学生5门课的成绩,用c 语言写程序计算出每个学生的平均分,计算每门课的平均分,找出所有五?
把问题说全了,找出所有五什么??
10个成绩我测试就不一一输入了,你自己写个循环输入,把两个常量分别改成10和5。
我这边测试就初值了3个学生5门课的数据。
另外,不明白你要哪组数据的方差,方差我预留了函数:
int getVariance(int *nums,int len);//获取一组数组的方差,nums:数组,len:数组长度
根据你自己需要自己调用。
代码如下:
#include<stdio.h>
#define SN 3//学生人数
#define CN 5//门课数量
float *getSAvg(int stu[][CN]);//学生平均分
float *getCAvg(int stu[][CN]);//每门课平均分
int *getMax(int stu[][CN]);
int getVariance(int *nums,int len);//获取一组数组的方差,nums:数组,len:数组长度
int main()
{
int i,stu[SN][CN]={{99,91,92,93,72},{92,72,83,97,99},{81,82,95,93,89}};
float *cAvgs=NULL,*sAvgs=NULL;
int *inxs=NULL;
sAvgs=getSAvg(stu);
cAvgs=getCAvg(stu);
printf("每个学生平均分分别为:\n");
for(i=0;i<SN;i++)
printf("%.1f ",sAvgs[i]);
printf("\n\n每门课的平均分分别为:\n");
for(i=0;i<CN;i++)
printf("%.1f ",cAvgs[i]);
printf("\n\n");
inxs=getMax(stu);
printf("最高分是第%d个学生第%d门课。分数为%d\n",inxs[0]+1,inxs[1]+1,stu[inxs[0]][inxs[1]]);
return 0;
}
int getVariance(int *nums,int len)//获取一组数组的方差,nums:数组,len:数组长度
{
int i;
float sum,avg;
sum=0;
//------先求数据平均值
for(i=0;i<len;i++)
sum+=nums[i];
avg=sum/len;
//再求个数与平均值差的平方和
sum=0;
for(i=0;i<len;i++)
sum+=(nums[i]-avg)*(nums[i]-avg);
//再求平均数
return sum/len;
}
int *getMax(int stu[][CN])
{
static int inxs[2]={0,0};
int i,j,max=stu[0][0];
for(i=0;i<SN;i++)
for(j=0;j<CN;j++)
if(max<stu[i][j])
max=stu[i][j],inxs[0]=i,inxs[1]=j;
return inxs;
}
float *getCAvg(int stu[][CN])//每门课平均分
{
static float cAvgs[CN];
int i,j,sum;
for(i=0;i<CN;i++)
{
sum=0;
for(j=0;j<SN;j++)
sum+=stu[j][i];
cAvgs[i]=sum*1.0/SN;
}
return cAvgs;
}
float *getSAvg(int stu[][CN])//学生平均分
{
static float sAvgs[SN];
int i,j,sum;
for(i=0;i<SN;i++)
{
sum=0;
for(j=0;j<CN;j++)
sum+=stu[i][j];
sAvgs[i]=sum*1.0/CN;
}
return sAvgs;
}
找出50个分数中最高的分数所对应的学生和课程,计算平均分方差,最后用二维数组输出