不知道哪里有错误,求指正修改~

我的代码运行后总是有一个人的顺序是错误的,比如按照样例输入,Iris的顺序输出时是最后一位,求看看哪里有问题,然后帮忙修改一下~
描述
输入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;
 };
};
}

你的排序有问题,修改后

img

#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)
相等判断写成赋值语句了

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632