#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;
}
scanf("%d",input[i]);
应该是scanf("%d",&input[i]);
少了个&
段错误不等于越界,这个要搞清楚什么是段错误
提示不写的很清楚了么,你的程序数组越界了,debug模式,按F5运行,看看具体蹦哪儿了应该是index值大于数组最大下标了