新人求解为什么无法输出?

输入一组数,去掉两个最大的数和两个最小的数,求剩余数平均值

 #include <stdio.h>
int main()
{
    int a[20],s=0,i,j,t,o;
    float p;
    for(i=1;i!=0;i++)
    {
        scanf("%d",&a[i]);
        if(a[i]==0)
        {
            i=0;/*如果输入的数是0,输入结束*/
        }
    }
    t=i-1;
    for(i=1;i<t;i++)/*对输入的数据从小到大排序*/
        for(j=i+1;j<t;j++)
        {
              if(a[i]>a[j])
            {
                o=a[i];
                a[i]=a[j];
                a[j]=o;
            }
        }
    for(j=3;j<t-2;j++)
    {
        s=s+a[j];/*求第三个数据到倒数第三个数据的和*/
    }
    p=s/(t-4);/*求平均数*/
    printf("%.2f",p);
    return 0;
}

之前的问题你可能忘记采纳了,帮我采纳下好么。

你的程序总是怪怪的。我尽量按照你的思路修改吧。最好按照通常的思路写。

#include <stdio.h>
int main()
{
    int a[20],s=0,i,j,t = 0,o;
    float p;
    for(i=1;i!=0;t++,i++)
    {
        scanf("%d",&a[i]);
        if(a[i]==0)
        {
            i=-1;/*如果输入的数是0,输入结束*/
        }
    }
    for(i=1;i<t;i++)/*对输入的数据从小到大排序*/
        for(j=1;j<t;j++)
        {
              if(a[j-1]>a[j])
            {
                o=a[j-1];
                a[j-1]=a[j];
                a[j]=o;
            }
        }
    for(j=3;j<t-2;j++)
    {
        s=s+a[j];/*求第三个数据到倒数第三个数据的和*/
    }
    p=s/(float)(t-5);/*求平均数*/
    printf("%.2f",p);
    return 0;
}