2017-06-06 64 views
-3

运行时错误的问题: - https://www.codechef.com/JUNE17/problems/NEO01获得以下代码

我的解决方案,而根据我应该是上述问题的解决方案,但我经常收到一个RTE。

https://ideone.com/COnlog

#include<stdio.h> 
int main() 
{ 
    long arr[10000]; 
    int t,n,p=0; 
    scanf("%d",&t); 

    while(t--) 
    { 
     long hap1=0,hap2=0; 
     scanf("%d",&n); 
     for(int i=0;i<n;i++) 
     { 
      scanf("%d",&arr[i]); 
     } 

     for(int i=0;i<n;i++) 
     { 
      if(arr[i]>=0) 
      { 
       hap1+=arr[i]; 
       p++; 
      } 
      else 
      { 
       hap2+=arr[i]; 
      } 
     } 
     printf("%d\n",hap1*p+hap2); 
    } 
    return 0; 
} 

编辑:对不起,我是谁,通常使用cout和CIN,使用的scanf和printf,以节省时间,只是忘了在使用scanf函数添加&初学者。

虽然我的代码在Dev-C++ 5.11上正常工作,但它显示运行时错误(SIGSEGV),我不知道为什么会发生这种情况。

+1

您需要了解更多关于如何使用['scanf'](http://en.cppreference.com/w/c/io/fscanf)。我建议[找到一本很好的初学者书](http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list)来学习编程C,而不是使用像codechef这样的站点。 –

+0

添加一些错误检查。首先,'scanf'返回一个值,告诉你它是否找到了正确的数值。没有你的输入,任何人都很难确切地知道你的程序在哪里失败,所以你至少应该在你的问题中加上这个。 –

+0

更正了它,使用Codechef ide仍然收到错误RE(SIGSEGV)。 –

回答

0

您错误地使用了scnaf。将scanf("%d",t);更改为scanf("%d",&t);

+0

更正了它,仍然使用Codechef ide获得错误RE(SIGSEGV)。 –

0

对于问题中的N的约束是1≤N≤10^5,所以您需要声明一个[size],size = 10^5。