c语言的一个基础 orz

编写程序,用函数输入10个学生信息(学号,姓名,成绩),用函数对学生成绩从高到低排序(起泡法),用函数输出排序后的学生信息。

#include <stdio.h>
#include <sting.h>
struct student {
    int    ID;             /* 学号 */
    char    Name[50];       /* 姓名 */
    int    Grade;          /* 成绩 */
};
void main()
{
    struct student    stu[100];
    int        i = 0;
    int        n, m;
    int        big;
    int        small;
    while ( 1 )
    {
        printf( "请输入学生的姓名、学号、成绩以空格隔开:\n" );
        printf( "结束请输入exit 0 0\n" );
        scanf( "%s%d%d", stu[i].Name, &stu[i].ID, &stu[i].Grade ); /* 接收输入的学生信息 */
        printf( "%d\n", stu[i].Grade );
/* 判断是否要结束输入 */
        if ( strcmp( stu[i].Name, "exit" ) == 0 )
        {
            printf( "输入结束\n" );
            i = i - 1;
            break;
        }
        i++;
    }
    if ( i == 0 )
    {
        printf( "只输入了一个学生的信息\n" );
        return;
    }
/*
 * 循环进行比较记录最高和最低
 * big、small记录第0个元素的分数
 */
    big    = stu[0].Grade;
    small    = stu[0].Grade;
    for ( n = 1; n <= i; n++ )
    {
        printf( "grade = %d\n", stu[n].Grade );
        if ( big < stu[n].Grade )
        {
            big = stu[n].Grade;     /* big和各个元素的分数比较,取较高赋值给big(big一直为较高) */
        }
        if ( small > stu[n].Grade )
        {
            small = stu[n].Grade;   /* small和各个元素的分数比较,取较低赋值给small(small一直为较低) */
        }
    }
    for ( m = 0; m <= i; m++ )
    {
        printf( "xx:%d,%s,%d\n", stu[m].ID, stu[m].Name, stu[m].Grade );
        if ( stu[m].Grade == big )      /* 每个学生的成绩和最高分比较,相等的输出(可能会出现并列的) */
        {
            printf( "最高分数学生信息:%d,%s,%d\n", stu[m].ID, stu[m].Name, stu[m].Grade );
        }
        if ( stu[m].Grade == small )    /* 每个学生的成绩和最低分比较,相等的输出(可能会出现并列的) */
        {
            printf( "最低分数学生信息:%d,%s,%d\n", stu[m].ID, stu[m].Name, stu[m].Grade );
        }
    }
}