写题时常见的问题

编译错误(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),代表了你这个程序所能使用的最大内存数量,那么你开数组的时候,就需要控制在百万级别以内。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ·错误:1000 SQLSTATE: HY000 (ER_HASHCHK)消息:hashchk·错误:1001 S...
    Catke阅读 5,538评论 0 2
  • error code(错误代码)=2000是无效的像素格式。error code(错误代码)=2001是指定的驱动...
    Heikki_阅读 6,112评论 0 4
  • 1.针对最近的爆款文《就算老公一毛钱股份都没拿到,在我心里,他依然是最牛逼的创业者》,用不超过三句,说说要不要抓热...
    多多半粒沙子阅读 2,744评论 0 0
  • 打卡05-11/04 孩子的衣橱 整理心得:以前打扫房间需拿出一天的时间精打扫一遍,像打仗似的,想快速打扫完,很累...
    静守一隅阅读 1,365评论 0 0
  • 跟她认识是在我们协会里,因为学校协会要举办创业大赛,所以会长特别重视这件事; 中午还没下课就接到会长的通知...
    可喜欢你了阅读 3,462评论 0 0