输入学生信息,包括学号、成绩,学号为整形,成绩为浮点型,当输入学号为-1则结束信息输入。当重复输入学生学号和成绩,取最高的成绩,并将学生信息按成绩由高到低排序。
引用头文件:
#include<stdio.h>
#include<string.h>
定义结构体:
struct st
{
int num;//学号
float n;//成绩
}student[50];
全局变量:
int j=0;//输入次数
int z=0;//输入学号相同次数
学生信息输入(成绩较低的一次致零):
void ac1(struct st student[10])
{
int i;
int k,n;
for(i=0;;i++)
{
scanf("%d",&student[i].num);
if(student[i].num==-1)break;
scanf("%f\n",&student[i].n);
j++;
}
for(k=0;k<j;k++)
{
for(n=k+1;n<=j;n++)
{
if(student[n].num==student[k].num)//学号相同
if(student[n].n>=student[k].n)//成绩大于等于
{
student[k].n=student[n].n;
student[n].n=0;
z++;
}
else //成绩小于
{
student[n].n=0;
z++;
}
}
}
}
成绩排序(由高到低):
void ac2(struct st student[10])
{
int k,n;
struct st a;//中间结构体变量
for(k=0;k<j;k++)//排序
{
for(n=0;n<j;n++)
{
if(student[n].n<student[k].n)
{
a=student[k];
student[k]=student[n];
student[n]=a;
}
}
}
}
主函数:
int main()
{
int i;
ac1(student);//输入学生学号和成绩
ac2(student);//排序
printf("result\n");
for(i=0;i<=j-1-z;i++)
{
printf("%d %.f\n",student[i].num,student[i].n);
}
}
效果图:
版权声明:本文为Xiao_Bai_MA原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。