Heloker 2020-02-22 13:18 采纳率: 100%
浏览 584
已采纳

PAT乙级1004不使用结构体时全测试点格式错误

初学者,因为无法独自解决此问题,所以想请教一下各位大大

之前有看过论坛里面一些大大写的此题的代码,但是最后的cout语句基本是一样的

所以不太明白格式错误是什么问题导致的...

代码如下(C++语言,提交时编译器为C++(g++)),提交时没有加入注释内容

#include<string>
#include<iostream>
using namespace std;
int main(void)
{
    int n, i, j, max,min;
    string s[10000];//因为题目只提及n>0
    string num[10000];//所以声明了较大的数组
    int grade[10000];
    cin >> n;//输入学生数量
    for (i = 1; i <= n; i++) {
        cin >> s[i] >> num[i] >> grade[i];
        cout << endl;
    }//依次输入学生信息

    max = min = 1;
    for (j = 1; j <= n; j++) {
        if (grade[j] > grade[max]) 
            max = j;
        if (grade[j] < grade[min])
            min = j;
    }//比较成绩的高低

    cout << s[max] << " " << num[max] << endl;//最高
    cout << s[min] << " " << num[min] << endl;//最低
    return 0;
}

提交结果

在上面的代码里我并没有使用结构体,这道题是一定要用结构体的吗?

另外还看到有的大大没有在输出最低成绩的行末尾加endl,我尝试之后也是一样的格式错误结果...
orz

参考过其他大大的文章:

PAT乙级1004-作者strivinging

PAT 1004成绩排序(解决部分正确的原因)-作者linluoluo

PAT 1004 成绩排名 (20 分)-fyy_lufan(主要还是看了这位大大的文章才考虑不用结构体)

提前感谢各位大大的解答!

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-02-22 14:08
    关注

    其中姓名和学号均为不超过10个字符的字符串,成绩为0到100之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。
    既然能保证成绩都不相同,而成绩在0-100之间,那么学生人数应该最大不超过101
    你数组搞小一点(102就可以了)看看。

    另外

        for (i = 1; i <= n; i++) {
            cin >> s[i] >> num[i] >> grade[i];
            cout << endl; //这里的cout似乎没用,去掉
        }//依次输入学生信息
    

    问题解决的话,请点下采纳

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

报告相同问题?