输出所有大于平均数的数

img

img


最后提示格式错误,这个空格该如何输出?这样为什么后面两个对了前面错了?

20和21行都是上面if的代码块,所以要用大括号括起来才行。否则每次无论值是否大于平均值,都会输出空格,导致多出来很多空格。只有满足值大于平均值情况下,才需要输出空格。或者不要单独输出空格,改为printf("%d ",a[i]);

#include<stdio.h>
int main()
{
int n;int sum=0;double aver;
int count=0;
scanf("%d",&n);
if(n<=0)
printf("lnvalid");
int a[n];
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
for(int i=0;i<n;i++)
sum+=a[i];
aver=(double)sum/n;
printf("%.2f\n",aver);
for(int i=0;i<n;i++)
{ if(a[i]>aver)
printf("%d ",a[i]);
if(a[i]<=aver)
count++;
}
if(count==n)
printf(" ");
return 0;
}

改动处见注释,供参考:

#include<stdio.h>
#define N 11     //修改
int main()
{
    int n; 
    int sum = 0; 
    double aver;
    int count = 0;
    scanf("%d", &n);
    if (n <= 0 || n > 10) { //修改
        printf("lnvalid");
        return -1;   //修改
    }
    int a[N];   //int a[n]; 修改
    for (int i = 0; i < n; i++)
        scanf("%d", &a[i]);
    for (int i = 0; i < n; i++)
        sum += a[i];
    aver = (double)sum / n;
    printf("%.2f\n", aver);
    for (int i = 0; i < n; i++)
    {
        if (a[i] > aver)
            printf(count++ == 0 ? "%d" : " %d", a[i]); //修改
        //if (a[i] <= aver) 修改
        //    count++;        修改
    }
    if (!count)  //if(count==n) 修改
        printf(" ");
    return 0;
}

因为你if没加括号,所以输出空格是每个循环都输出的
你可以直接写printf("%d ",i);把空格和数字写一起,不要单独写