【输入形式】
每次键盘读入最多不超过50个学生的学生信息:
第一行为学生人数;
后面每一行为空格隔开的学生学号、姓名、年龄,其中学号和年龄都是整数。
【输出形式】
分别以姓名顺序(从低到高)和年龄顺序(从低到高)将学生信息输出,每行输出一位学生的信息,其中学号占3位,姓名(英文)占6位,年龄占3位,均为右对齐。年龄相同时按姓名从低到高排序。两
【输入样例】
4 1 aaa 22 45 bbb 23 54 ddd 20 110 ccc 19
【输出样例】
1 aaa 22 45 bbb 23 110 ccc 19 54 ddd 20 110 ccc 19 54 ddd 20 1 aaa 22 45 bbb 23
#include <stdio.h>
#include<string.h>
#include <stdlib.h>
struct Student{ //创建一个student的结构体
int ID;
int NAME[10];
int AGE;
}ZZ,STU[50];
int main()
{
int i,j,n;
scanf("%d",&n); //学生人数
for (i=0;i<n;i++) //初始化结构
{
scanf("%d",&STU[i].ID);
scanf("%s",STU[i].NAME);
scanf("%d",&STU[i].AGE);
}
for (i=0;i<n-1;i++) //按照名字排,使用strcmp函数比较数组
for (j=i+1;j<n;j++)
{
if(strcmp(STU[j].NAME,STU[i].NAME)<0)
{
ZZ = STU[j];
STU[j] = STU[i];
STU[i] = ZZ;
}
}
for (i=0;i<n;i++) //输出
{
printf("%3d",STU[i].ID);
printf("%6s",STU[i].NAME);
printf("%3d",STU[i].AGE);
printf("\n");
}
printf("\n");
for(i=0;i<n-1;i++) //按照年龄大小排
{
for(j = i+1; j<n;j++)
{
if(STU[i].AGE > STU[j].AGE)
{
ZZ= STU[j];
STU[j] = STU[i];
STU[i] = ZZ;
}
}
}
for (i=0;i<n;i++) //输出
{
printf("%3d",STU[i].ID);
printf("%6s",STU[i].NAME);
printf("%3d",STU[i].AGE);
printf("\n");
}
}
种顺序的输出结果用一行空行相隔。