结构体--学生信息排序
时间: 1ms 内存:128M
描述:
定义存放一个学生信息的结构体类型,学生信息包括:姓名,学号,性别,院系,要求在随意输入5个学生的相关信息后,按照学号从小到大顺序输出这些学生的信息。
输入:
先输入5名学生的信息,按学号顺序排序输出后在输入要统计的院系名称
输出:
先按学号从小到大的顺序输出学生信息
示例输入:
zhang3 20149003 M 信息系
zhang5 20149005 F 信息系
zhang10 20149010 F 管理系
zhang1 20149001 M 会计系
zhang9 20149009 M 会计系
示例输出:
zhang1 20149001 M 会计系
zhang3 20149003 M 信息系
zhang5 20149005 F 信息系
zhang9 20149009 M 会计系
zhang10 20149010 F 管理系
提示:
参考答案(内存最优[0]):
#include<iostream>
#include <string>
using namespace std;
struct student
{
string name;
int num;
char sex;
string addr;
};
int main()
{
int i,j,k;
student a[5];
student stu[5];
for(i=0;i<5;i++)
{
cin>>stu[i].name>>stu[i].num>>stu[i].sex>>stu[i].addr;
}
for(i=0;i<5-1;i++)
{
for(j=0;j<5-1-i;j++)
{
if(stu[j].num>stu[j+1].num)
{
a[j]=stu[j];
stu[j]=stu[j+1];
stu[j+1]=a[j];
}
}
}
cout<<endl;
for(k=0;k<5;k++)
cout<<stu[k].name<<" "<<stu[k].num<<" "<<stu[k].sex<<" "<<stu[k].addr<<endl;
return 0;
}
参考答案(时间最优[0]):
#include <iostream>
#include <string>
using namespace std;
#define N 5
struct student
{
char name[20];
int num;
char sex[2];
char school[30];
}stu[N];
student t;
void sort(student *p,int n);
void print(student *p,int n);
int main()
{
int n=N,i,m=0;
char sch[10];
for(i=0;i<n;i++)
{
cin>>stu[i].name>>stu[i].num>>stu[i].sex>>stu[i].school;
}
sort(stu,n);
print(stu,n);
return 0;
}
void sort(student *p,int n)
{
int i,j;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if((*(p+j)).num>(*(p+j+1)).num)
{
t=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=t;
}
}
void print(student *p,int n)
{
int i;
for(i=0;i<n;i++)
cout<<(p+i)->name<<" "<<(p+i)->num<<" "<<(p+i)->sex<<" "<<(p+i)->school<<endl;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。