七种错误类型
1.Answer error
程序本身有问题,数据类型,算法有问题,输入输出语句有错误等
1.当测试数据有多组,要在循环内赋初值,保证每次循环开始条件相同,输出结果也在循环内部。如:
while(scanf("%d",&n))
{
s=0;
for(i=0;i<n;i++)
s+=a[i];
}
2.数组没有初始化,造成结果累加。
memset(a,0,sizeof(a));
等价于
for(i=0;i<n;i++)
{
a[i]=0;
}
关于循环:
当循环里只有一个语句时,两个大括号可以不加。
注意循环的初始值,结束条件,和循环方式,比如九九乘法表:
for(i=0;i<10;i++)
for(j=1;j<10;j++)
其中i,j的初值可以随意变换。
3.题意不明,未按照要求输入输出。如n组数据a+b的和:
scanf(“%d",&n);
while(n--)
{
scanf("%d %d",&a,&b);
}
而不是:
while(scanf("%d,%d)!=EOF);
要求格式化输入输出。
3.算法错误,其实就是解题思路有问题。
2.Output Limit Exceeded
输出数据量过大,可能是陷入了死循环
1.比如题目有循环结束条件,你却未使用,陷入死循环
输入有多组,用while(scanf(“%d”,&a)!=EOF)或者while(~scanf(“%d”,&a))
表示文件自动结束,
输入遇到”0“或者“#”结束,用while(scanf(“%c”,&a)&&a!=0)或者
while(scanf(“%c”,&a))
{
if(a=='#')
break;
}
2.没有理解题意,未按要求输入输出
题目说有n组数据,每组3个数,用
scanf(“%d”,&n);
while(n--)
{
scanf(“%d%d%d”,&a,&b,&c);
}
3.Time Limit Exceeded
程序运行超过该题的时间上限还没有得到结果
输入输出不正确,程序无法正确运行,也无法正常结束。
4.Presentation Error
输出格式不对,可检查空格,空行等等细节
题目要求两组数据之间有一个空行,例如多组求和,就要用标记,用
if(f==0)
printf(“%d\n”,s);
else
printf(“\n%d\n”,s);
5.Runtime Error
程序运行过程中出现非正常中断,如数组越界,除零错误,整数溢出
1.比如一组数据有100个,你的数组范围却只有50,a[50];
2.忘写取地址符号“&”,导致中断。
3对应格式错误,printf(“%d,%d,%d”,a,b);
4,超出数据类型的数据范围,比如99999999999999需要用long long 型。
6.Compile Error
程序编译出错,非正常停止。如:
1.手误,scanf(”%d333“,&a);
2.没有输入或者输出语句。
7.System Error
系统问题,oj内部出现问题,重新提交