按学生成绩排序

已知学生结构体如下:
struct student 
{
 int num;
 char name[8];
 char sex;
 int age;
 float grade;
};
要求按照学生成绩进行排序,输出排序后的结果。

#include < stdio.h >
#include
< conio.h >
#include
< string .h >
#define  N 10
extern  unsigned _floatconvert;     /* 防止floating point formats not linked 错误发生 */
#pragma extref _floatconvert

typedef 
struct  student    
{
    
int  num;
    
char  name[ 8 ];
    
char  sex;
    
int  age;
    
float  grade;
}STU;

STU stu[N]
= {{ 101 , " Zhang " , ' M ' , 19 , 95.6 },
            {
102 , " Wang "  , ' F ' , 18 , 92.4 },
            {
103 , " Zhao "  , ' M ' , 19 , 85.7 },
            {
104 , " Li "    , ' M ' , 20 , 96.3 },
            {
105 , " Gao "   , ' M ' , 19 , 96.4 },
            {
106 , " Lin "   , ' M ' , 18 , 91.5 },
            {
107 , " Ma "    , ' F ' , 17 , 98.7 },
            {
108 , " Zhen "  , ' M ' , 21 , 90.1 },
            {
109 , " Xu "    , ' M ' , 19 , 89.8 },
            {
110 , " Mao "   , ' F ' , 18 , 94.9 }};

void  print(STU  * p[])
{
    
int  i;
    printf(
" num\tname\tsex\tage\tgrade\n " );
    
for (i = 0 ;i < N;i ++ )
    {
        printf(
" %d\t%s\t%c\t%d\t%5.1f\n " ,p[i] -> num,p[i] -> name,p[i] -> sex,p[i] -> age,p[i] -> grade);
    }
}

void  gradebub(STU  * p[])
{
    STU 
* temp;
    
int  i,j,flag;
    
for (i = 0 ;i < N - 1 ;i ++ )
    {
        flag
= 0 ;
        
for (j = 0 ;j < N - i - 1 ;j ++ )
            
if (p[j] -> grade > p[j + 1 ] -> grade)
            {
                temp
= p[j];p[j] = p[j + 1 ];p[j + 1 ] = temp;
                flag
= 1 ;
            }
        
if (flag == 0 )     break ;
    }
}

void  main()
{
    
int  i;
    STU 
* p[N];
    
for (i = 0 ;i < N;i ++ )
        p[i]
=& stu[i];
    print(p);
    printf(
" \n " );
    gradebub(p);
    print(p);
    getch();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值