C语言段错误怎么弄,输出的结果都是对的,在PAT里面提交就说有段错误,哪位大神帮我看看

#include<stdio.h>intmain(){intn,i,a[20],x,b[10],temp,sum,n1,x1;while(scanf("%d",&n)!=... #include <stdio.h>int main(){ int n,i,a[20],x,b[10],temp,sum,n1,x1; while(scanf("%d",&n)!=EOF) { temp=n; int flag=0; while(n--) { scanf("%d",&x); a[n]=x; } scanf("%d",&n1); while(n1--) { sum=0; scanf("%d",&x1); b[n1]=x1; for(i=0;i<=temp;i++) if(b[n1]==a[i]) sum++; if(flag==0) printf("%d",sum); else printf(" %d",sum); flag++; } printf("\n"); } return 0;} 展开
 我来答
匿名用户
2016-10-06
展开全部

while(scanf("%d",&n)!=EOF)

改成 

while(scanf("%d",&n)==1)

应该就好了。

主要原因是,scanf("%d",&n)的不正确的输入可能使n是特别的值,超出正常范围,从而导致后面a[n]中下标超出原来的范围

追问
您好,我试了下您说的方法,但是依旧是段错误
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式