我一直在尝试创建一个程序,如果后续数字的平均值小于该数字,则该程序会在数组中打印数字。
这是我编写的代码
#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。我一直在努力寻找错误,但死胡同。 感谢帮助。 谢谢
答案 0 :(得分:0)
**
**
当我指向最后一个元素时,m正在检查不存在的第(i + 1)个元素,因此使循环一直到最后一个元素为止。
进行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]);
}
}