「已注销」 2018-11-28 14:34 采纳率: 100%
浏览 387
已采纳

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

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

 #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;
}
  • 写回答

1条回答 默认 最新

  • threenewbee 2018-11-28 14:49
    关注

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

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

    #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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用