ACM新手入门常见问题

                    七种错误类型


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内部出现问题,重新提交



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值