程序中的额外输出

时间:2018-11-05 06:14:22

标签: c

我一直在尝试创建一个程序,如果后续数字的平均值小于该数字,则该程序会在数组中打印数字。

这是我编写的代码

            #include <stdio.h>

            int main(void) {
                int a,b[100],i,m,av=0,kk,p=0,q;
                scanf("%d",&a);
                for(i=0;i<a;i++)
                {
                    scanf("%d",&b[i]);
                }
                for(i=0;i<a;i++)
                {
                    kk=b[i];

                    for(m=i+1;m<a;m++)
                    {
                        av=av+b[m];
                        p=p+1;
                    }
                    q=av/p;
                    if(kk>q)
                    {
                        printf("%d\n",kk);
                    }
                }
            }

我接受的输入是 7-元素数量

(现在是元素)

23

34

12

21

14

26

33

输出应为34和33,但在输出中也显示26。我一直在努力寻找错误,但死胡同。 感谢帮助。 谢谢

1 个答案:

答案 0 :(得分:0)

**

您犯了两个错误

**

  1. 当我指向最后一个元素时,m正在检查不存在的第(i + 1)个元素,因此使循环一直到最后一个元素为止。

  2. 在检查平均值之后,对每个元素
  3. 进行av和p 值0。最后打印始终为true的最后一个元素

           #include<stdio.h>
            int main(void) {
                int a,b[100],i,m,av=0,kk,p=0,q=0;
                scanf("%d",&a);
                for(i=0;i<a;i++)
                {
                    scanf("%d",&b[i]);
                }
                for(i=0;i<a-1;i++)
                {
                    kk=b[i];
                    av=0;
                    p=0;
                    for(m=i+1;m<a;m++)
                    {
                        av +=b[m];
                        p +=1;
                    }
                    q = av/p;
                    if(kk>q)
                    {
                        printf("%d ",kk);
                    }
                }
                if(i==a-1)
                {
                    printf("%d ",b[a-1]);
                }
            }