御笔剑客 发表于 2018-1-6 14:26:39

这段代码为什么会报错?

/*第一行,两个整数n,m(5 ≤ n ≤ 5000,3 ≤ m ≤ n),中间用一个空格隔开,其中n 表示报名参加笔试的选手总数,m 表示计划录取的志愿者人数。
输入数据保证m*150%向下取整后小于等于n。
第二行到第 n+1 行,每行包括两个整数,中间用一个空格隔开,分别是选手的报名号k(1000 ≤ k ≤ 9999)和该选手的笔试成绩s(1 ≤ s ≤ 100)。
数据保证选手的报名号各不相同。*/


#include <iostream>
#include <algorithm>
using namespace std;
struct List{
    int num;
    int score;
};

bool cmp(List a,List b)
    return a.score>b.score;
int main()
{
    int n,m,cnt;
    cin>>n>>m;
    List pass;
    m*=1.5;
    for(int i=0;i<n;i++)
      cin>>pass.num>>pass.score;
    sort(pass,pass+n,cmp);
    for(int i=0;i<n;i++)
    {

      if(pass.score>=m)
            cnt++;
    }
    for(int i=0;i<n;i++)
    {
      if(pass.score>=m)
      cout<<pass.num<<" "<<pass.score<<endl;
    }
    return 0;
}


error: named return values are no longer supported

ba21 发表于 2018-1-6 14:46:08

老实说多个{}也占不了多少空间。
cin>>n>>m; 多个提示,分开写也不占空间。

#include <iostream>
#include <algorithm>

using namespace std;

struct List
{
    int num;
    int score;
};

bool cmp(List a,List b);

bool cmp(List a,List b)
{
    return a.score>b.score;
}

int main()
{
    int n,m,cnt, i;

    cout << "请输入n的值:" ;
    cin>>n;

    cout << "请输入m的值:" ;
    cin>>m;

    List pass;
    m*=1.5;

    for(i=0;i<n;i++)
        {
      cout << "请输入pass["<< i <<"].num的值:" ;
      cin>>pass.num;

      cout << "请输入pass["<< i <<"].score的值:" ;
      cin>>pass.score;
        }

    sort(pass,pass+n,cmp);
    for(i=0;i<n;i++)
    {

      if(pass.score>=m)
      {
            cnt++;
      }

    }

    for(i=0;i<n;i++)
    {
      if(pass.score>=m)
                {
                        cout<<pass.num<<" "<<pass.score<<endl;
                }
    }

    return 0;
}

页: [1]
查看完整版本: 这段代码为什么会报错?