采用二维数组输入多个学生五门课的成绩,分别求出每个学生的平均成绩和每门课的成绩。(C语言)

如题所述

#include<stdio.h>
#define max 100
float student[max][5];
float sum[max];
float kemu[max];
int main(){
int n;//学生人数
int i,j;

scanf("%d",&n);

for (i=0;i<n;i++){
sum[i]=0;
for(j=0;j<5;j++){
scanf("%f",&student[i][j]);
sum[i]=sum[i]+student[i][j];//计算每个同学的平均成绩
}
sum[i]=sum[i]/5;
}
//计算每门课的平均成绩
for(i=0;i<5;i++){
kemu[i]=0;
for (j=0;j<n;j++)
kemu[i]=kemu[i]+student[j][i];
kemu[i]=kemu[i]/n;
}
printf("每个同学的平均成绩为:");
for (i=0;i<n;i++)
printf(" % lf",sum[i]);
printf("\n各科的平均成绩为:");
for (i=0;i<5;i++)
printf("% lf",kemu[i]);
printf("\n");
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-24
#include<stdio.h>
#define m 20//定义班级人数,m的值可以设定
struct student//学生
{
char name[10];//姓名
int subject1;//科目一
int subject2;//科目二
int subject3;//科目三
int subject4;//科目四
int subject5;//科目五
int sum;//总分
float average;//科目平均分
}stu[m];

void main()
{
int n;
float sub[5]={0,0,0,0,0};//各科平均分
for(n=0;n<m;n++)//输入数据
{
scanf("%s",&stu[n].name);
scanf("%d",&stu[n].subject1);
scanf("%d",&stu[n].subject2);
scanf("%d",&stu[n].subject3);
scanf("%d",&stu[n].subject4);
scanf("%d",&stu[n].subject5);

}
for(n=0;n<m;n++)//求总分,平均分
{
stu[n].sum=stu[n].subject1+stu[n].subject2+stu[n].subject3+stu[n].subject4+stu[n].subject5;
stu[n].average=stu[n].sum/5.0;
sub[0]+=stu[n].subject1;
sub[1]+=stu[n].subject2;
sub[2]+=stu[n].subject3;
sub[3]+=stu[n].subject4;
sub[4]+=stu[n].subject5;
}
for(n=0;n<5;n++)//求各科平均分
{
sub[n]=sub[n]/m;
}
printf("name subject1 subject2 subject3 subject4 subject5 sum average\n");//打印项目栏
for(n=0;n<m;n++)
{
printf("%-10s %8d %8d %8d %8d %8d %3d %.2f\n",stu[n].name,stu[n].subject1,stu[n].subject2,stu[n].subject3,stu[n].subject4,stu[n].subject5,stu[n].sum,stu[n].average);
}
printf("subaverage");
for(n=0;n<5;n++)
{
printf(" %.2f",sub[n]);
}
printf("\n");

}本回答被网友采纳
第2个回答  2019-03-10
#include<iostream>
#include<cmath>
#include<climits>
using namespace std;
int main(){
int a[100][4],n,max;
cin>>n;
//输入每个学生的各科成绩
for(int i=0;i<n;i++){
for(int j=0;j<4;j++){
cin>>a[i][j];
}
}
/*注意是各科成绩最高,所以行的循环在外层
由于第一列是学号,所以j要从第二列开始下标是1
*/
for(int j=1;j<4;j++){
max=0; //统计每门课程,所以每门课统计完后要清零
for(int i=0;i<n;i++){
if(a[i][j]>max)
max=a[i][j];
}
//由于有多门课,所以输出要放在第一层循环里面
cout<<max<<" ";
}
return 0;
}
相似回答