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);把空格和数字写一起,不要单独写