成绩处理
时间: 1ms 内存:128M
描述:
有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)
输入:
学生数量N占一行每个学生的学号、姓名、三科成绩占一行,空格分开。
输出:
各门课的平均成绩最高分的学生的数据(包括学号、姓名、3门课成绩)
示例输入:
2
1 blue 90 80 70
b clan 80 70 60
示例输出:
85 75 65
1 blue 90 80 70
提示:
参考答案(内存最优[756]):
#include<stdio.h>
#define N 100
struct student
{
char num[6];
char name[8];
int score[4];
int avr;
} stu[N];
int r;
int main()
{
int sum3=0,sum1=0,sum2=0,maxi;
int sum;
int max;
scanf("%d",&r);
int i,j;
for(i=0; i<r; i++)
{
scanf("%s%s",stu[i].num,stu[i].name);
for(j=0; j<3; j++)
{
scanf("%d",&stu[i].score[j]);
}
}
max=0;
maxi=0;
for(i=0; i<r; i++)
{
sum=0;
sum1+=stu[i].score[0];
sum2+=stu[i].score[1];
sum3+=stu[i].score[2];
for(j=0; j<3; j++)
sum+=stu[i].score[j];
stu[i].avr=sum/3;
if(sum>max)
{
max=sum;
maxi=i;
}
}
printf("%d %d %d",sum1/r,sum2/r,sum3/r);
putchar('\n');
printf("%s %s %d %d %d",stu[maxi].num,stu[maxi].name,stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2]);
return 0;
}
参考答案(时间最优[0]):
#include<stdio.h>
#define N 100
struct student
{
char num[6];
char name[8];
int score[4];
int avr;
}stu[N];
int r;
int main()
{
int sum3=0,sum1=0,sum2=0,maxi;
int sum;
int max;
scanf("%d",&r);
int i,j;
for(i=0;i<r;i++)
{
scanf("%s%s",stu[i].num,stu[i].name);
for(j=0;j<3;j++)
{
scanf("%d",&stu[i].score[j]);
}
}
max=0;
maxi=0;
for(i=0;i<r;i++)
{
sum=0;
sum1+=stu[i].score[0];
sum2+=stu[i].score[1];
sum3+=stu[i].score[2];
for(j=0;j<3;j++)
sum+=stu[i].score[j];
stu[i].avr=sum/3;
if(sum>max)
{
max=sum;
maxi=i;
}
}
printf("%d %d %d",sum1/r,sum2/r,sum3/r);
putchar('\n');
printf("%s %s %d %d %d",stu[maxi].num,stu[maxi].name,stu[maxi].score[0],stu[maxi].score[1],stu[maxi].score[2]);
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。