C語言 給定一個整數序列和一個數k,求這個序列中第k小的數。
我的程序
#include<stdio.h>
int n[10000];
void Nok()
{
int i=0,j=0,t,k,q=0;
char c;
scanf("%d",&n[i++]);
c=getchar();
while(c!='\n')
{
scanf("%d",&n[i++]);
c=getchar();
}
t=i-2;
k=n[i-1];//最後一個數是k
while(k!=0)
{
for(i=0;i<=t;i++)//尋找k次最小值,每次將最小值所對應變量賦值其下一變量消掉此次最小值(最後一次不變直接輸出)
{
if(n[i]<n[q])
{
q=i;
}
}
k--;
if(k==0) printf("%d\n",n[q]);
else {n[q]=n[q+1]; q++;}
}
}
void main()
{
Nok();
}
結果很奇怪不知道程序哪裡有問題麻煩幫忙看一看
n[q]=n[q+1];這句如果q是最後一個數,呢q+1不就越界了。