如果是编译错误,可能是遇到了语言标准或者版本的问题。如果是运行错误或者结果不正确,首先这个时候不要怀疑是编译器出错了,对于学生提交的代码,复杂度远未达到触发编译器问题的程度。
最为常见的情形:c/c++语言变量未初始化,或者轻微越界引起的,在本机环境,内存区域可能正好被清零,但是换台机器运行,问题就有可能出现。甚至出现时对时错。
读取输入时发生错误。调试的时候没有太注意输入的格式,提交之后,系统是严格按照输入格式来的。例如下面的代码:
例1:测试数据中,输入是空格隔开,但是学生程序使用“逗号”,n读入一个随机值,最后结果不对。
例2:不规范的代码,严重依赖求值顺序的,不同的编译器结果会有不同,一般编译器会给出警告信息。
codegen.cpp:1847:37: warning: operation on ‘reg’ may be undefined [-Wsequence-point]
fprintf(mid, "$t%d = +$t%d\n", reg++, reg - 1);
例3:不规范的代码:函数冲突问题。例如,marjor函数跟系统函数冲突了,如下图所示,
修改方法:更改函数名即可。
例四:不规范的代码:
i=i++;
例五:string数组的下标越界: