NYOJ 268 荷兰国旗问题

总结:怎么又是这种情况,定义的数组太大?放到函数里出错?不会吧,没有那么大吧?

 1 #include<stdio.h>

 2 #include<string.h>

 3 #include<stdlib.h>

 4 char ch[110];//定义在函数内就出错了,难道又越栈了? 

 5 int main()

 6 {

 7     int n,R,W,B,i,len;

 8     scanf("%d%*c",&n);//由于要输入字符串,所以要考虑到enter 

 9     while(n--)

10     {

11          gets(ch);

12          len=strlen(ch);

13          R=0;W=0;B=0;

14          for(i=0;i<len;i++)

15          {

16            if(ch[i]=='R')   R++;

17            else

18              { if(ch[i]=='W')  W++;

19                else if(ch[i]=='B') B++;

20              }

21          }

22          for(i=0;i<R;i++)

23          printf("R");

24          for(i=0;i<W;i++)

25          printf("W");

26          for(i=0;i<B;i++)

27          printf("B");

28          putchar('\n');

29     }

30      system("pause");

31      return 0;

32 } 

33                       

运行时出错:

常见出错的原因可能有以下几种:
1、数组开得太小了,导致访问到了不该访问的内存区域
2、发生除零错误
3、大数组定义在函数内,导致程序栈区耗尽
4、指针用错了,导致访问到不该访问的内存区域
5、还有可能是程序抛出了未接收的异常

你可能感兴趣的:(问题)