weixin_63296519 2022-03-05 11:54 采纳率: 100%
浏览 55
已结题

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

我的代码运行后总是有一个人的顺序是错误的,比如按照样例输入,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;
 };
};
}

  • 写回答

3条回答 默认 最新

  • 关注

    你的排序有问题,修改后

    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;
    
    };
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月13日
  • 已采纳回答 3月5日
  • 创建了问题 3月5日

悬赏问题

  • ¥15 内网办公电脑进行向日葵
  • ¥15 如何输入双曲线的参数a然后画出双曲线?我输入处理函数加上后就没有用了,不知道怎么回事去掉后双曲线可以画出来
  • ¥50 WPF Lidgren.Network.Core2连接问题
  • ¥15 soildworks装配体的尺寸问题
  • ¥100 有偿寻云闪付SDK转URL技术
  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建