输入n个学生的信息,包括姓名,性别,出生年月。要求按年龄从小到大依次输出这些学生的信息。数据保证没有学生同年同月出生。
输入
第一行一个整数n,表示学生人数,n<=100.
接下来n行,每一行依次输入学生的姓名、性别、出生年份、出生月份。
输出
按年龄从小到大,一行输出一个学生的原始信息。
样例输入:
5
KouKAL male 1999 12
YaeSakura male 1999 8
Raminad male 1998 11
Zhang_ct female 1998 8
Iris female 2000 7
样例输出:
Iris female 2000 7
KouKAL male 1999 12
YaeSakura male 1999 8
Raminad male 1998 11
Zhang_ct female 1998 8
我的代码:
#include<iostream>
using namespace std;
struct student
{
string xingming;
string xingbie;
int nian;
int yue;
};
int main()
{
int i;int j;
int n;string a;string b;int c;int d;
cin>>n;
student stuArray[n];
for(int i=0;i<n;i++)
{
cin>>a>>b>>c>>d;
stuArray[i].xingming=a;
stuArray[i].xingbie=b;
stuArray[i].nian=c;
stuArray[i].yue=d;};
for(i=0;i<n;i++)
{
if(stuArray[i].nian<stuArray[i+1].nian)
{
int m=i+1;
int temp=i;
i=m;
m=temp;
};
if(stuArray[i].nian=stuArray[i+1].nian)
{if(stuArray[i].yue<stuArray[i+1].yue)
{
int p=i+1;
int temp=i;
i=p;
p=temp;
};
};
for(i=0;i<n;i++)
{
cout<<stuArray[i].xingming<<" ";
cout<<stuArray[i].xingbie<<" ";
cout<<stuArray[i].nian<<" ";
cout<<stuArray[i].yue<<endl;
};
};
}
你的排序有问题,修改后
#include<iostream>
using namespace std;
struct student
{
string xingming;
string xingbie;
int nian;
int yue;
};
int main()
{student temp;
int i;int j;
int n;string a;string b;int c;int d;
cin>>n;
student stuArray[n];
for(int i=0;i<n;i++)
{
cin>>a>>b>>c>>d;
stuArray[i].xingming=a;
stuArray[i].xingbie=b;
stuArray[i].nian=c;
stuArray[i].yue=d;};
for(i=0; i<n-1; i++) {
int k=i;
for(j=i+1; j<n; j++)
if(stuArray[k].nian<stuArray[j].nian)
k=j;
if(i!=k) {
temp=stuArray[i];
stuArray[i]=stuArray[k];
stuArray[k]=temp;
}
}
for(i=0; i<n-1; i++) {
for(j=i+1; j<n; j++)
if(stuArray[i].nian==stuArray[j].nian) {
if(stuArray[i].yue<stuArray[j].yue) {
temp=stuArray[i];
stuArray[i]=stuArray[j];
stuArray[j]=temp;
}
}
}
for(i=0;i<n;i++)
{
cout<<stuArray[i].xingming<<" ";
cout<<stuArray[i].xingbie<<" ";
cout<<stuArray[i].nian<<" ";
cout<<stuArray[i].yue<<endl;
};
}
32行, if(stuArray[i].nian=stuArray[i+1].nian)改成
if(stuArray[i].nian==stuArray[i+1].nian)
相等判断写成赋值语句了