编写程序,用函数输入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 );
}
}
}