李逸然123 @ 2023-09-02 12:34:51
#include<bits/stdc++.h>
using namespace std;
struct stu
{
string name;
int y,m,d;
}a[105];
int main()
{
int i,j,n;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i].name>>a[i].y>>a[i].m>>a[i].d;
for(i=1;i<=n-1;i++)
{
for(j=1;j<=n;j++)
{
if(a[j].y>a[j+1].y)
swap(a[j],a[j+1]);
else if(a[j].y==a[j+1].y)
{
if(a[j].m>a[j+1].m)
swap(a[j],a[j+1]);
else if(a[j].y==a[j+1].y)
{
if(a[j].d>=a[j+1].d)
swap(a[j],a[j+1]);
}
}
}
}
for(i=1;i<=n;i++)
cout<<a[i].name<<endl;
return 0;
}
输出的时候会少输出名字,找不到问题出在哪,thx
by Null_h @ 2023-09-02 12:42:05
j的范围有误
by Null_h @ 2023-09-02 12:47:38
@李逸然123 以及这个循环写得一团浆糊
#include<bits/stdc++.h>
using namespace std;
struct stu
{
string name;
int y,m,d;
}a[105];
int main()
{
int i,j,n;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i].name>>a[i].y>>a[i].m>>a[i].d;
for(i=1;i<=n;i++)
{
for(j=i+1;j<=n;j++)
{
if(a[i].y>a[j].y)
swap(a[i],a[j]);
else if(a[i].y==a[j].y)
{
if(a[i].m>a[j].m)
swap(a[i],a[j]);
else if(a[i].m==a[j].m)
{
if(a[i].d>=a[j].d)
swap(a[i],a[j]);
}
}
}
}
for(i=1;i<=n;i++)
cout<<a[i].name<<endl;
return 0;
}
by 李逸然123 @ 2023-09-02 16:36:03
@kdqs8218 谢谢谢谢,太久没手写排序有点忘了