关贰同学 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 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序