第1个回答 2016-05-05
#include<stdio.h>
#include<math.h>
struct student
{
int num;
double a,b,c,d,e,sum;
};
int main()
{
struct student s[10],pp;
int saw,sbw,scw,sdw,sew,j,i;
double t,sa,sb,sc,sd,se;
for(i=0; i<10; i++)
{
printf("输入第%d个学生成绩\n",i+1);
scanf("%lf %lf %lf %lf %lf",&s[i].a,&s[i].b,&s[i].c,&s[i].d,&s[i].e);
s[i].sum=s[i].a+s[i].b+s[i].c+s[i].d+s[i].e;
s[i].num=i+1;}
for(i=0; i<10; i++)
{
sa+=s[i].a;
sb+=s[i].b;
sc+=s[i].c;
sd+=s[i].d;
se+=s[i].e;
}
for(i=0;i<10;i++)
printf("第%d个学生平均分为:%.2lf\n",i+1,(s[i].sum)/5);
printf("a,b,c,d,e门课平均分 分别为: %.2lf %.2lf %.2lf %.2lf %.2lf\n",sa/10,sb/10,sc/10,sd/10,se/10);
sa=sb=sc=sd=se=0;
for(i=0; i<10; i++)
if(sa<s[i].a)
{
sa=s[i].a;
saw=i;
}
for(i=0; i<10; i++)
if(sb<s[i].b)
{
sb=s[i].b;
sbw=i;
}
for(i=0; i<10; i++)
if(sc<s[i].c)
{
sc=s[i].c;
scw=i;
}
for(i=0; i<10; i++)
if(sd<s[i].d)
{
sd=s[i].d;
sdw=i;
}
for(i=0; i<10; i++)
if(se<s[i].e)
{
se=s[i].e;
sew=i;
}
double x=sa;
int mm=saw;
if(x<sb)
{
x=sb;
mm=sbw;
}
if(x<sc)
{
x=sc;
mm=scw;
}
if(x<sd)
{
x=sd;
mm=sdw;
}
if(x<se)
{
x=se;
mm=sew;
}
printf("最高分数学生为%d 各科成绩为%.2lf %.2lf %.2lf %.2lf %.2lf\n",s[mm].num,s[mm].a,s[mm].b,s[mm].c,s[mm].d,s[mm].e);
printf("不及格学生:\n");
for(i=0; i<10; i++)
if(s[i].a<60||s[i].b<60||s[i].c<60||s[i].d<60||s[i].e<60)
{
printf("序号%d 各科成绩: %.2lf %.2lf %.2lf %.2lf %.2lf\n",s[i].num,s[i].a,s[i].b,s[i].c,s[i].d,s[i].e);
}
t=0;
for(i=0; i<10; i++)
if(t<s[i].a)
{
t=s[i].a;
mm=i;
}
printf("a科成绩最高学生序号%d 成绩:%.2lf %.2lf %.2lf %.2lf %.2lf\n",s[mm].num,s[mm].a,s[mm].b,s[mm].c,s[mm].d,s[mm].e);
t=0;
for(i=0; i<10; i++)
if(t<s[i].b)
{
t=s[i].b;
mm=i;
}
printf("b科成绩最高学生序号%d 成绩:%.2lf %.2lf %.2lf %.2lf %.2lf\n",s[mm].num,s[mm].a,s[mm].b,s[mm].c,s[mm].d,s[mm].e);
t=0;
for(i=0; i<10; i++)
if(t<s[i].c)
{
t=s[i].c;
mm=i;
}
printf("c科成绩最高学生序号%d 成绩:%.2lf %.2lf %.2lf %.2lf %.2lf\n",s[mm].num,s[mm].a,s[mm].b,s[mm].c,s[mm].d,s[mm].e);
t=0;
for(i=0; i<10; i++)
if(t<s[i].d)
{
t=s[i].d;
mm=i;
}
printf("d科成绩最高学生序号%d 成绩:%.2lf %.2lf %.2lf %.2lf %.2lf\n",s[mm].num,s[mm].a,s[mm].b,s[mm].c,s[mm].d,s[mm].e);
t=0;
for(i=0; i<10; i++)
if(t<s[i].e)
{
t=s[i].e;
mm=i;
}
printf("e科成绩最高学生序号%d 成绩:%.2lf %.2lf %.2lf %.2lf %.2lf\n",s[mm].num,s[mm].a,s[mm].b,s[mm].c,s[mm].d,s[mm].e);
for(i=0;i<10;i++)
for(j=0;j<9-i;j++)
if(s[j].sum<s[j+1].sum)
{
pp=s[j];
s[j]=s[j+1];
s[j+1]=pp;
}
for(i=0;i<10;i++)
{
printf("学生序号:%d 各科分数:%.2lf %.2lf %.2lf %.2lf %.2lf\n",s[i].num,s[i].a,s[i].b,s[i].c,s[i].d,s[i].e);
}
return 0;
}
第2个回答 2016-05-05
#include<stdio.h>
int main()
{
void max(int [][5]);//注意二位数组传递参数时,行数信息可以省略,但一定列数不能
void averagek(int [][5]);
void averages(int [][5]);
int a[10][5],i;//后面很多没用上的变量就不需要了
for(i=0;i<=9;i++)
{
printf("请输入第%d名学生五科成绩(中间用空格隔开):",i+1);
scanf("%d %d %d %d %d",&a[i][0],&a[i][1],&a[i][2],&a[i][3],&a[i][4]);
}
averages(a);
averagek(a);
max(a);
return 0;
}
void averages(int a[][5])
{
int m,i;
for(i=0;i<=9;i++)
{
m=(a[i][0]+a[i][1]+a[i][2]+a[i][3]+a[i][4])/5;
printf("第%d名学生平均分为:%d\n",i+1,m);
}
}
void averagek(int a[][5])
{
int m,i;
for(i=0;i<=4;i++)
{
m=(a[0][i]+a[1][i]+a[2][i]+a[3][i]+a[4][i]+a[5][i]+a[6][i]+a[7][i]+a[8][i]+a[9][i])/10;
printf("第%d科成绩平均分为%d\n",i+1,m);//帮你加了个换行符,开始没加时好乱,信息全一起
}
}
void max(int a[][5])
{
int i,j,max,k,g;//你这里g后面多了逗号,小错误不要犯
max=a[0][0];
for(i=0;i<=9;i++)
for(j=0;j<=4;j++)
{
if(a[i][j]>max)
{
max=a[i][j];
k=i;
g=j;
}
}
printf("第%d名学生的第%d科成绩取得最高分:%d\n",k+1,g+1,max);//帮你加了个换行符,开始没加时好乱,信息全一起,还有就是个数要比数组下标多1,所以要加上去
}