c++21行报错,洛谷100分!!!求解

P1104 生日

King_and_Grey @ 2023-12-19 20:38:35

我服了6.4版本c++说c++ 洛谷\P1104.CDD Warning contro end Wreturn-tvoe 结果洛谷提交100分!!!! 6.4版本c++真垃圾

#include <bits/stdc++.h>
using namespace std;
struct node {
    string name;
    int year;
    int month;
    int day;
    int level;
} nn[120];
bool cmp(node a,node b) {
    if(a.year != b.year)
        return a.year < b.year;
    else {
        if(a.month != b.month)
            return a.month < b.month;
        else if(a.day == b.day && a.month == b.month) 
            return a.level > b.level;
        else if(a.day != b.day && a.month == b.month) 
            return a.day < b.day;
    }
}
int main() {
    int n;
    cin>>n;
    for(int i = 1; i <= n; ++i) {
        cin>>nn[i].name>>nn[i].year>>nn[i].month>>nn[i].day;
        nn[i].level = i;
    }
    stable_sort(nn+1,nn+1+n,cmp);
    for(int i = 1; i <= n; ++i) {
        cout<<nn[i].name<<endl;
    }
    return 0;
}

蒟蒻百思不得其解,还请大神来帮忙

一定关注!!!


by cff_0102 @ 2023-12-19 20:42:07

@greyandking 首先那是 Warning;其次原因应该是你那个 bool 函数程序怕你全部遍历完一个 else if 没进,就没有返回,告诉你这个函数不一定返回了


by Miss_SGT @ 2023-12-19 20:43:46

不造啊,我本地没问题,会不会是stable_sort导致的结果?我没见过(但网上好像有)改成sort试试


by skyskyCCC @ 2023-12-19 20:43:49

@greyandking 就是您的程序中的判断函数可能没有返回值


by cff_0102 @ 2023-12-19 20:45:14

实际上是一定有返回的,但是程序不知道,因为你只有 if else if else if,没有最后的else,程序怕你到最后一个情况,就没有返回值


by King_and_Grey @ 2023-12-19 21:06:02

@cff_0102,@skyskyCCC,@zhouchenqiao1谢谢红名大佬们!已关注!


|