关贰同学 2019-01-18 16:28 采纳率: 100%
浏览 587
已采纳

PAT乙级1004C++代码运行错误

图片说明图片说明

PAT乙级1004
1004 成绩排名 (20 分)
读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。

#include<iostream>
#include<string.h>
using namespace std;
class student{
public:
   void set(char a[],char b[],int c)
    {
        strcpy(name,a);
        strcpy(num,b);
        score=c;
    }
    int sc()
    {
        return score;
    }
    void prin()
    {
        cout<<name<<" "<<num<<endl;
    }
private:
    char name[10];
    char num[10];
    int score;
};
int main()
{
    int n;
    cin>>n;
    cin.get();
    student temp[101];
    int i=0;
    for(i=0;i<n;i++)
    {
        char a[10];
        char b[10];
        int c;
        cin>>a>>b>>c;
        temp[i].set(a,b,c);
    }
    for(i=0;i<n-1;i++)
    {
        for(int j=0;j<n-i-1;j++)
        {
        if(temp[j].sc()<temp[j+1].sc())
        {
           student a;
           a=temp[j];
           temp[j]=temp[j+1];
           temp[j+1]=a;
        }
        }
    }
    temp[0].prin();
    temp[n-1].prin();
    return 0;
}
  • 写回答

1条回答 默认 最新

  • _ZGq 2019-01-18 18:10
    关注

    存十个字符的字符串要声明大小为11。(char a[10];char b[10]; 和 private:char name[10];char num[10];int score;)
    -----------------------------------------------------
    不要在I/O方面有多余的语句。这里可以把cin.get()删去。
    为了避免多余的管理指针机制(这是很难的),可以把char*、char[]改成string,可以省去管理指针步骤。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 11月16日

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?