问题:
输入50分学生的姓名和三科成绩,按降序输出名字和总分,成绩相同的并列排名、
思路:
- 因为要学生排名,且一个学生有姓名,成绩,以及总分,所以弄一个学生的结构体。
- 有多少学生,就输入该结构体的数组。
- 一个for循环,给每个学生赋值。
- 排序——降序,用冒泡排序实现结构体互换,按照总分比,temp类型为学生类型。
- 输出的时候,先输出,之后进行判断,如果当前值不等于后面的值,就换行,否则并列输出。
- 代码如下:
-
#include <stdio.h>
typedef struct student
{
char name[20];
float score[3];
float sum;
}student;
int main()
{
student s[3];
int i;
for(i=0;i<3;i++)
{
printf("输入名字\n");
scanf("%s",&s[i].name);
int k=0;
float sum=0;
printf("输入成绩\n");
for(k=0;k<3;k++)
{
scanf("%f",&s[i].score[k]);
sum=sum+s[i].score[k];
}
s[i].sum=sum;
}
int p,q;
student temp;
for(p=0;p<2;p++)
{
for(q=0;q<2-p;q++)