麻烦大家帮我看看这个c语言程序错在哪?

#include<stdio.h>
int qusort(int a[],int start,int end)   
{
    int i,j,temp;
    temp=a[start];
    i=start;
    j=end;
    while(i<j)
    {
        while(i<j&&a[j]>=temp)
        {
            j--;
            if(a[j]<temp)
                a[j]=a[i];
        }
        while(i<j&&a[i]<temp)
        {
            i++;
        if(a[i]>temp)
            a[i]=a[j];
            }
    }
    a[i]=temp;
    if(start<i)
        qusort(a,start,j-1);
    if(end>=i)
        qusort(a,j+1,end);
    return 0;
}
int main()
{
    int a[10];
    for(int i=1;i<=10;i++)
    {
        scanf("%d",&a[i]);
    }
    qusort(a,1,10);
    for( int i=1;i<=10;i++)
        printf("%d ",a[i]);
    return 0;
}

后两条错误是什么意思,我经常遇到

数组下标从0开始

使用vs推荐更为安全的输入函数:scanf_s("%d", &a[i], 10);

1、数组下标是从0开始的

2、qusort里面有问题,可能会死循环,比如输入的第一个值大于最后一个值,就会死循环,因为while(i<j)里面的两个while都不满足,i和j都不会变。

#include<stdio.h>
int qusort(int a[],int start,int end)   
{
    int i,j,temp;
    temp=a[start];
    i=start;
    j=end;
    while(i<j)
    {
        while(i<j&&a[j]>=temp)
        {
            j--;
        }
        if(i<j){
           a[i]=a[j]; 
        }
        while(i<j&&a[i]<temp)
        {
            i++;
        }
        if(i<j){
           a[j]=a[i]; 
        }
    }
    a[i]=temp;
    if(start<i)
        qusort(a,start,i-1);
    if(end>=i)
        qusort(a,i+1,end);
    return 0;
}
int main()
{
    int a[10];
    for(int i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
    qusort(a,0,9);
    for( int i=0;i<10;i++)
        printf("%d ",a[i]);
    return 0;
}