为啥没有负数也在排序里面,而且排序的总数少了一个数

#include <stdio.h>
int readscore(int score[],int num[]);
void paixu(int score[],int num[],int i);
void swap(intx,inty)
{
int tem;
tem=*x;
*x=*y;
*y=tem;
}
void main()
{
int score[10],num[10],i,n;
i=readscore(score,num);
printf("%d\n",i);
paixu(score,num,i);
for(n=0;n<i;n++)
{
printf("%ld %d\n",num[n],score[n]);
}
}
int readscore(int score[],int num[])
{
int i=-1;
do
{
i++;
scanf("%ld %d",&num[i],&score[i]);
}while(score[i]>=0);
return i;
}
void paixu(int score[],int num[],int i)
{
int a,b,k;
for(a=0;a<i-1;a++)
{
k=i;
for(b=a+1;b<i;b++)
{
if(score[k]<score[b])
{
k=b;
}
}
if(k!=i)
{
swap(&score[i],&score[k]);
swap(&num[i],&num[k]);
}
}
}