题目:编写学生管理系统,其中学生的信息有姓名(汉语拼音,最多20个字符),性别(男/女,用1表示男,2表示女)、
生日(19850101(年月日))、身高(以m为单位),还需要处理C语言、微积分两门课的成绩,请编写程序实现功能:
输入学生的人数和每个学生的信息;输出每门课程的总平均成绩、最高分和最低分,以及获得最高分的学生的信息。
需要注意的是某门课程最高分的学生可能不只一人。
输入输出格式要求:
身高输出时保留两位小数,请按照例子中进行输出,请勿输出其他字符
例如:
输入:3 zhangsan 1 19910101 1.85 85 90 lisi 1 19920202 1.56 89 88 wangwu 2 19910303 1.6 89 90
输出:
C_average:87
C_max:89
lisi 1 19920202 1.56 89 88
wangwu 2 19910303 1.60 89 90
C_min:88
Calculus_average:89
Calculus_max:90
zhangsan 1 19910101 1.85 85 90
wangwu 2 19910303 1.60 89 90
Calculus_min:88
方法一:
#include<stdio.h>
struct Person
{
char a[20];
int sex;
long int birth;
float hight;
int c;
int math;
};
void max_min_c(struct Person p[],int n)
{
int i,j;
int max=0,min=p[0].c;
for(i=0;i<n;i++)
{
if(p[i].c>max)
max=p[i].c;
else if(p[i].c<min)
min=p[i].c;
}
printf("C_max:%d\n",max);
printf("C_min:%d\n",min);
for(i=0;i<n;i++)
{
if(p[i].c==max)
printf("%s %d %ld %.2f %d %d\n",p[i].a,p[i].sex,p[i].birth,
p[i].hight,p[i].c,p[i].math);
}
}
void max_min_math(struct Person p[],int n)
{
int i,j;
int Max[100]={0};
int max=0,min=p[0].math;
for(i=0;i<n;i++)
{
if(p[i].math>max)
max=p[i].math;
else if(p[i].math<min)
min=p[i].math;
}
printf("Calculus_max:%d\n",max);
printf("Calculus_min:%d\n",min);
for(i=0;i<n;i++)
{
if(p[i].math==max)
printf("%s %d %ld %.2f %d %d\n",p[i].a,p[i].sex,p[i].birth,
p[i].hight,p[i].c,p[i].math);
}
}
void average(struct Person p[],int n)
{
int i;
int sum_c=0,sum_math=0;
for(i=0;i<n;i++) // 计算总值
{
sum_c+=p[i].c;
sum_math+=p[i].math;
}
printf("C_average:%d\n",sum_c/n);
max_min_c(p,n);
printf("Math_average:%d\n",sum_math/n);
max_min_math(p,n);
}
int main()
{
int n,i;
scanf("%d",&n); //学生人数
getchar(); //特别注意:在输入数字后面输入字符
struct Person stu[100];
struct Person *p=stu;
for(i=0;i<n;i++)
{
scanf("%s%d%ld%f%d%d",&stu[i].a,&stu[i].sex,&stu[i].birth,
&stu[i].hight,&stu[i].c,&stu[i].math);
getchar(); //同上
}
average(p,n);
return 0;
}
方法二:
#include<stdio.h>
struct Person
{
char a[20];
int sex;
long int birth;
float hight;
int c;
int math;
};
int main()
{
int n,i;
int max_c=0,max_math=0,min_c=0,min_math=0;
int sum_c=0,sum_math=0;
scanf("%d",&n); //学生人数
getchar();
struct Person stu[100];
struct Person *p=stu;
for(i=0;i<n;i++,p++)
{
scanf("%s%d%ld%f%d%d",&stu[i].a,&stu[i].sex,&stu[i].birth,
&stu[i].hight,&stu[i].c,&stu[i].math);
getchar();
sum_c+=stu[i].c;
sum_math+=stu[i].math;
if(stu[i].c>max_c)
max_c=stu[i].c;
else if(stu[i].c<min_c)
min_c=stu[i].c;
if(stu[i].math>max_math)
max_math=stu[i].math;
else if(stu[i].math<min_math)
min_math=stu[i].math;
}
printf("C_average:%d\n",sum_c/n);
printf("Calculus_max:%d\n",max_c);
printf("Calculus_min:%d\n",min_c);
for(i=0;i<n;i++)
{
if(stu[i].c==max_c)
printf("%s %d %ld %.2f %d %d\n",stu[i].a,stu[i].sex,stu[i].birth,
stu[i].hight,stu[i].c,stu[i].math);
}
printf("Math_average:%d\n",sum_math/n);
printf("Calculus_max:%d\n",max_math);
printf("Calculus_min:%d\n",min_math);
for(i=0;i<n;i++)
{
if(stu[i].math==max_math)
printf("%s %d %ld %.2f %d %d\n",stu[i].a,stu[i].sex,stu[i].birth,
stu[i].hight,stu[i].c,stu[i].math);
}
return 0;
}