C语言:一个班,五个学生,各五门课,计算每个学生的平均分 再求出每门课的最高分

分数要求从键盘输入

#include<stdio.h>

int main()
{
int student[5][5];
int i,j;
int sum[5]={0,0,0,0,0};
int max[5]={0,0,0,0,0};
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("请输入学生%d的课程%d的成绩:",i+1,j+1);
scanf("%d",&student[i][j]);
sum[i]+=student[i][j];
}
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(student[j][i]>max[i])
max[i]=student[j][i];
}
}
for(i=0;i<5;i++)
printf("学生%d平均分:%d\n",i+1,sum[i]/5);
for(i=0;i<5;i++)
printf("课程%d最高分:%d\n",i+1,max[i]);
}

自己刚写了个。。你是大一的吧?刚学C语言?这种简单的应该自己学着写你会发现写程序其实也不难的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-11-30
#include <iostream>
#include <iomanip>
struct student
{int num;
char name[20];
float score[3];
};
void average_print(student *);
void top_print(student *);
void top1_print(student *);
void top2_print(student *);
void top3_print(student *);
int main()
{ student stu[3],*p;
int i;
cout<<"请输入3个学生数据:"<<endl;
for(i=0;i<3;++i)
{cin>>stu[i].num>>stu[i].name>>stu[i].score[0]>>stu[i].score[1]>>stu[i].score[2];
}
average_print(stu) ;
int z ;
do
{cout<<"请选择相应选项:"<<endl;
cout<<"1:第一门课最高分数的信息"<<endl;
cout<<"2:第二门课最高分数的信息"<<endl;
cout<<"3:第三门课最高分数的信息"<<endl;
cout<<"4:总分最高分数的信息"<<endl;
cin>>z;
switch(z)
{ case 1:top_print(stu) ;break;
case 2:top1_print(stu) ;break;
case 3:top2_print(stu) ;break;
default:top3_print(stu) ;break;
}
}while(z!=0);
return 0;
}
void average_print(student p[])
{ float x=0,y=0,z=0;
int i;
for(i=0;i<3;++i)
{ x+=p[i].score[0];
y+=p[i].score[1];
z+=p[i].score[2];
}
cout<<"第一门课平均成绩"<<x/3<<endl;
cout<<"第二门课平均成绩"<<y/3<<endl;
cout<<"第三门课平均成绩"<<x/3<<endl;
}
void top_print(student point[])
{int i,z;
float j;
student temp ;
temp=point[0];
j=point[0].score[0];
for(i=1;i<3;++i)
{ if(j<=point[i].score[0] )
{j=point[i].score[0];
temp= point[i];}
}

cout<<"这门课最高分为:"<<temp.num<<setw(6)<<temp.name<<setw(6)<<temp.score[0]<<endl;
}
void top1_print(student point[])
{int i,z;
float j;
student temp ;
temp=point[0];
j=point[0].score[1];
for(i=1;i<3;++i)
{ if(j<=point[i].score[1] )
{j=point[i].score[1];
temp= point[i];}
}

cout<<"这门课最高分为:"<<temp.num<<setw(6)<<temp.name<<setw(6)<<temp.score[1]<<endl;
}
void top2_print(student point[])
{int i,z;
float j;
student temp ;
temp=point[0];
j=point[0].score[2];
for(i=1;i<3;++i)
{ if(j<=point[i].score[2] )
{j=point[i].score[2];
temp= point[i];}
}

cout<<"这门课最高分为:"<<temp.num<<setw(6)<<temp.name<<setw(6)<<temp.score[2]<<endl;
}
void top3_print(student point[])
{int i,z;
float j;
student temp ;
temp=point[0];
j=point[0].score[0]+point[0].score[1]+point[0].score[2];
for(i=1;i<3;++i)
{ if(j<=point[i].score[0]+point[i].score[1]+point[i].score[2])
{j=point[i].score[0]+point[i].score[1]+point[i].score[2];
temp= point[i];}
}

cout<<"这门课最高分为:"<<temp.num<<setw(6)<<temp.name<<setw(6)<<temp.score[2]+temp.score[0]+temp.score[1]<<endl;
}
第2个回答  2009-11-30
#include "stdio.h"
main()
{ int i,j,a[5][5],t,k;
float sum,aver;
printf("enter the grade.\n");
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
for(i=0;i<5;i++)
{ sum=0; aver=0;
for(j=0;j<5;j++)
sum=a[i][j]+sum;
aver=sum/5;
printf("the %i aver grade is %f\n",i,aver); }
for(j=0;j<5;j++)
for(k=0;k<4;k++)
{ for(i=0;i<4-k;i++)
if(a[i+1][j]<a[i][j])
{t=a[i][j];
a[i][j]=a[i+1][j];
a[i+1][j]=t;
}
}
for(j=0;j<5;j++)
printf("the %d class top %d\n",j,a[4][j]);
getch();
}

3楼的说的有道理 我又写了一个 用的是冒泡法 给你看看思路 看得多的也就会写了
第3个回答  2009-11-30
这题没有解法.
如果有具体的数就用每个学生的分数来除以5.
比如:小民五科加起来共五分.
就用5分来除以5=1(分) 以此类推.
相似回答