2 baidu 33690068 baidu_33690068 于 2016.03.30 19:33 提问

段错误:您的程序发生段错误,可能是数组越界,这是怎么回事
 #include<stdio.h> 
int main(void)
{
    int N,p,i,j,index,temp; 
    int M;
    int input[10001];
    int cnt[10001];
    scanf("%d%d",&N,&p);
    for(i=0;i<N;i++)
    {
        scanf("%d",input[i]);
    }
    for(i=0;i<N;i++)
    {
        index=i;
        for(j=i+1;j<N-i;j++)
        {
            if(input[j]<input[index])
            index=j;
        }
        temp=input[i];
        input[i]=input[index];
        input[index]=temp;
    }

     for(i=0;i<N;i++)
     {
        M=p*input[i];
        for(j=i+1;j<N;j++)
        {
            if(M<=input[j])
            cnt[i]++;
         }
     }
     index=0;

     for(i=1;i<N-1;i++)
     {  
            if(cnt[i]>cnt[index])
            index=i;

     }
     printf("%d\n",cnt[index]);
     return 0;
}

3个回答

lx624909677
lx624909677   Ds   Rxr 2016.03.30 19:50

提示不写的很清楚了么,你的程序数组越界了,debug模式,按F5运行,看看具体蹦哪儿了应该是index值大于数组最大下标了

bealing
bealing   Rxr 2016.03.30 20:23

scanf("%d",input[i]);
应该是scanf("%d",&input[i]);
少了个&

bealing
bealing 。。。。我只能建议你多研究研究scanf函数的本质
一年多之前 回复
baidu_33690068
baidu_33690068 为什么呢,数组不是不用加&吗
一年多之前 回复
bai596140538
bai596140538   2016.03.30 23:07

段错误不等于越界,这个要搞清楚什么是段错误

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!