69,373
社区成员
发帖
与我相关
我的任务
分享
/*输入10个学生5门课成绩
1、计算每个学生平均分
2、计算每门课的平均分
3、找出50个分数中最高分数对应的学生和课程
4、计算平均分方差
*/
#include <Stdio.h>
float score[10][5];
float a_stu[10],a_cour[5];
int r,c;
void main()
{
int i,j;
float h;
void input_stu(void);
void aver_stu(void);
void aver_cour(void);
float hightest();
float s_var();
input_stu();
aver_stu();
aver_cour();
printf("No. 学科1 学科2 学科3 学科4 学科5 平均分\n");
for(i=0; i<10; i++)
{
printf("No. %d\t",i+1);//学生号
for(j=0; j<5; j++)
{
printf("%.2f\t",score[i][j]);//一个学生各门成绩
}
printf("%.2f\n",a_stu[i]);//一个学生平均成绩
}
printf("平均分:\t");
for(j=0; j<5; j++)
{
printf("%.2f\t",a_cour[j]);
}
printf("\n");
h=hightest();
printf("最高分: %.2f No. %d 学科%d\n",h,r,c);
printf("方差:%.2f\n",s_var());
}
void input_stu(void)//输入学生成绩 /*void input_stu(void)在括号里加void什么意思,它和void input_stu()有什么区别*/
{
int i,j;
for(i=0; i<10; i++)
{
printf("请输入第%d个学生的成绩:",i+1);
for(j=0; j<5; j++)
{
scanf("%f",&score[i][j]);
}
}
}
void aver_stu(void)//每个学生平均分
{
int i,j;
float sum;
for(i=0; i<10; i++)
{
for(j=0,sum=0; j<5; j++)
{
sum+=score[i][j];
a_stu[i]=sum/5.0; /*书上答案是这么写的,但编译的时候会警告,"conversion from 'double' to 'float', possible loss of data" 如果我把5.0改成5,就没警告了,为什么写5.0会说double类型转float类型可能丢失数据,定义的明明是float类型啊*/
}
}
}
void aver_cour(void)//每门课的平均分
{
int i,j;
float sum;
for(j=0; j<5; j++)
{
sum=0;
for(i=0; i<10; i++)
{
sum+=score[i][j];
a_cour[j]=sum/(float)10;
}
}
}
float hightest()//最高分数对应的学生和课程
{
int i,j;
float hight;
hight=score[0][0];
for(i=0; i<10; i++)
{
for(j=0; i<5; j++)
{
if(score[i][j]>hight)
{
hight=score[i][j];
r=i+1;
c=j+1;
}
}
}
return hight;
}
float s_var(void)//平均分方差
{
int i;
float sumx,sumxn;
sumx=0.0;
sumxn=0.0;
for(i=0; i<10; i++)
{
sumx+=a_stu[i]*a_stu[i];
sumxn+=a_stu[i];
}
return sumx/10-(sumxn/10)*(sumxn/10);
}
/*输入10个学生5门课成绩
1、计算每个学生平均分
2、计算每门课的平均分
3、找出50个分数中最高分数对应的学生和课程
4、计算平均分方差
*/
#include <stdio.h>
void input_stu(void);
void aver_stu(void);
void aver_cour(void);
float hightest();
float s_var();
float score[10][5];
float a_stu[10],a_cour[5];
int r,c;
int main()
{
int i,j;
float h;
for(i=0; i<10; i++)
{
printf("No. %d\t",i+1);//学生号
for(j=0; j<5; j++)
{
printf("%.2f\t",score[i][j]);//一个学生各门成绩
}
printf("%.2f\n",a_stu[i]);//一个学生平均成绩
}
input_stu();
aver_stu();
aver_cour();
printf("No. 学科1 学科2 学科3 学科4 学科5 平均分\n");
for(i=0; i<10; i++)
{
printf("No. %d\t",i+1);//学生号
for(j=0; j<5; j++)
{
printf("%.2f\t",score[i][j]);//一个学生各门成绩
}
printf("%.2f\n",a_stu[i]);//一个学生平均成绩
}
printf("平均分:\t");
for(j=0; j<5; j++)
{
printf("%.2f\t",a_cour[j]);
}
printf("\n");
h=hightest();
printf("最高分: %.2f No. %d 学科%d\n",h,r,c);
printf("方差:%.2f\n",s_var());
}
void input_stu(void)//输入学生成绩 /*void input_stu(void)在括号里加void什么意思,它和void input_stu()有什么区别*/
{
int i,j;
for(i=0; i<10; i++)
{
printf("请输入第%d个学生的成绩:",i+1);
for(j=0; j<5; j++)
{
scanf("%f",&score[i][j]);
}
}
}
void aver_stu(void)//每个学生平均分
{
int i,j;
float sum;
for(i=0; i<10; i++)
{
for(j=0,sum=0; j<5; j++)
{
sum+=score[i][j];
a_stu[i]=sum/5; /*书上答案是这么写的,但编译的时候会警告,"conversion from 'double' to 'float', possible loss of data" 如果我把5.0改成5,就没警告了,为什么写5.0会说double类型转float类型可能丢失数据,定义的明明是float类型啊*/
}
}
}
void aver_cour(void)//每门课的平均分
{
int i,j;
float sum;
for(j=0; j<5; j++)
{
sum=0;
for(i=0; i<10; i++)
{
sum+=score[i][j];
a_cour[j]=sum/(float)10;
}
}
}
float hightest()//最高分数对应的学生和课程
{
int i,j;
float hight;
hight=score[0][0];
for(i=0; i<10; i++)
{
for(j=0; j<5; j++)//就是这里,你的第二个j写成i了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
{
if(score[i][j]>hight)
{
hight=score[i][j];
r=i+1;
c=j+1;
}
}
}
printf("ddd\n");
return hight;
}
float s_var(void)//平均分方差
{
int i;
float sumx,sumxn;
sumx=0.0;
sumxn=0.0;
for(i=0; i<10; i++)
{
sumx+=a_stu[i]*a_stu[i];
sumxn+=a_stu[i];
}
return sumx/10-(sumxn/10)*(sumxn/10);
}
float hightest()//最高分数对应的学生和课程
{
int i,j;
float hight;
hight=score[0][0];
for(i=0; i<10; i++)
{
for(j=0; i<5; j++) //这里写错了,是 j <5
{
if(score[i][j]>hight)
{
hight=score[i][j];
r=i+1;
c=j+1;
}
}
}
return hight;
}
/*void input_stu(void)在括号里加void什么意思,它和void input_stu()有什么区别*/
//没啥区别,就是明显点儿
/*书上答案是这么写的,但编译的时候会警告,"conversion from 'double' to 'float', possible loss of data" 如果我把5.0改成5,就没警告了,为什么写5.0会说double类型转float类型可能丢失数据,定义的明明是float类型啊*/
//问题是出发默认就是double 了呀,你把数据都改为double, 就没问题了吧