用C语言编写5名学生的信息,包括学生学号(字符型)、姓名(字符型)和3门课成绩(整型)

要求:
(1)计算每个学生的总成绩、平均分,并输出。
(2)将学生成绩按总分从高到低排序并输出,输出项有学生学号、姓名、3门课成绩及总分。

#include<stdio.h>
struct student //定义结构体,包括学号,姓名,成绩,平均分,总成绩
{
int no;
char name[10];
int score[3];
float ave;
int sum;
};
int main()
{
struct student s[5], temp;
int i, j;
printf("input 5 students' informations\n");
for(i = 0; i < 5; ++i) //输入信息
{
s[i].sum = s[i].ave = 0;
scanf("%d%s", &s[i].no, s[i].name);
for(j = 0; j < 3; ++j)
{
scanf("%d",&s[i].score[j]);
s[i].sum += s[i].score[j]; //计算成绩总和
s[i].ave = s[i].sum;
}

}
printf("before sort\n"); // 排序前信息输出
for(i = 0; i < 5; ++i)
{
printf("no=%d name=%s ", s[i].no, s[i].name);
for(j = 0; j < 3; ++j)
printf("%d ", s[i].score[j]);
printf("ave=%f sum=%d\n", s[i].ave/3, s[i].sum);
}
for(j = 0; j < 5; ++j) //按照成绩总和从打到小排序
for(i = 0; i < 4; ++i)
if(s[i].sum < s[i+1].sum)
{
temp = s[i];
s[i] = s[i+1];
s[i+1] = temp;
}
printf("affter sort\n"); //排序后信息输出
for(i = 0; i < 5; ++i)
{
printf("no=%d name=%s ", s[i].no, s[i].name);
for(j = 0; j < 3; ++j)
printf("%d ", s[i].score[j]);
printf("ave=%f sum=%d\n", s[i].ave/3, s[i].sum);
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-03
#include<stdio.h>
#include<stdlib.h>
struct student
{
int num;
char name[10];
int score[3];
int sum;
}stu[5],t;
void main()
{
int i, j;

float ave;
printf("请输入五个学生的信息\n");
for(i=0;i<5; i++) //输入信息
{
printf("\n请输入第%d个学生的信息\n",i+1);
printf("学号: ");
scanf("%d",&stu[i].num);
printf("姓名: ");
scanf("%s",&stu[i].name);
for(j=0;j<3;j++)
{
printf("第%d门课的成绩:",j+1);
scanf("%d",&stu[i].score[j]);
}

}
system("cls");
printf("学号\t姓名\t总分\t平均分\n");
for(i=0;i<5;i++)
{
int sum;
stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];
ave=(float)stu[i].sum/3;
printf("%d\t%s\t%d\t%5.2f\n",stu[i].num,stu[i].name,stu[i].sum,ave);

}
int k=0;

while(k<5)
{i=0;
while(i<5)
{
if(stu[i].sum<stu[i+1].sum)
{
t=stu[i];
stu[i]=stu[i+1];
stu[i+1]=t;
i++;

}
else
{
i++;
}
}
k++;
}
printf("\n排名如下:\n\n");
printf("学号\t姓名\t课程1\t课程2\t课程3\t总分\n");
for(i=0;i<5;i++)
{
printf("%d\t%s\t%d\t%d\t%d\t%d\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum);
}
}
//如果不明白可以问我,我调试过了,没有问题,希望能帮到你。
第2个回答  2010-04-22
给你个思路 :可以定义个结构体,包含你想要包含的数据,然后,编个函数计算成绩,再编个排序的函数 不就ok了
相似回答