美文网首页
写题时常见的问题

写题时常见的问题

作者: jzh123s | 来源:发表于2016-09-29 13:19 被阅读0次

    编译错误(Complie Error)

    这说明你的代码本身就没有通过OJ的语法检查,请根据OJ返回的错误详情修改你的代码。

    注意,由于OJ采用和VC6.0不同的编译器,以下几点要求必须谨记:

    1. iostream头文件不含.h(#include<iostream>)
    2. 主函数类型必须为整型(int main())
    3. 不可使用随机数random()函数,以及fflush()函数

    答案错误(Wrong Answer)

    此类错误常见于输出的数据错误了,你所写的程序必须要经得起任何数据的测试才能算通过,而不是仅仅通过了样例测试

    运行时错误(Runtime Error)

    此类错误在运行时产生,往往是由于在程序的运行过程中出现了不可计算或不可操作的语句。比如0作为除数的语句,以及对野指针进行解引用赋值等等。出现这类错误你需要对可能出现错误的地方进行定位,然后排查错误。
    例如,以下的代码会出现运行时错误

    #include <iostream>
    using namespace std;
    
    int main(){
        int a=1,b=0;
        printf("%d", a/b); //0作为除数
        return 0;
    }
    

    格式错误(Presentation Error)

    此类错误常见于输出了错误数量的空格或者换行。建议在做题之前先看好题目要求,以及观察样例输出的格式,确保空格数量以及换行符(\n)数量的匹配,就可以避免此类问题出现。
    例如,要求输出的格式为

        Very    Good!
    

    // Very前面有8个空格 Good前面有4个

    那么对应的输出语句应该为

    cout<<"        Very    Good!"<<endl;
    

    同理Very前面一样有8个空格,Good前面有4个空格

    只有双引号内的字符串才会被输出,所以不要把空格打在双引号的外面。

    时间超限(Time Limit Exceeded)

    出现此类错误一般是程序没有正确的返回语句(return 0;)或者陷入了死循环(while,for,do...while)导致的。一般出现此类错误可以通过单步调试进行排查。
    例如以下程序就会陷入死循环

    #include <iostream>
    using namespace std;
    
    int main(){
        int a=0;
        while(a<100){
            printf("%d", a); //由于a的值永远为0,导致无法正常结束,OJ判定为超时
        }
        return 0;
    }
    

    内存超限(Memory Limit Exceeded)

    虽然这类错误不常见,但是还是提一提,每道题目都会有内存限制(通常为1MB),代表了你这个程序所能使用的最大内存数量,那么你开数组的时候,就需要控制在百万级别以内。

    相关文章

      网友评论

          本文标题:写题时常见的问题

          本文链接:https://www.haomeiwen.com/subject/fmgkyttx.html