您的位置:首页 > 其它

ACM新手入门常见问题

2015-10-20 19:12 309 查看
                    七种错误类型

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

程序运行超过该题的时间上限还没有得到结果

输入输出不正确,程序无法正确运行,也无法正常结束。

H题正确输入是:

scanf(“%d”,&n);
while(n--)
{
    scanf(“%d”,&m);
          for(i=0;i<m;i++)
                scanf("%d",&a[i]);
}

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内部出现问题,重新提交
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: