为什么输出不了大于平均数的值

img

你do一开始就给数组赋值x,问题是这时候x还没有输入啊
把while中的scanf语句放到循环的第一行,先输入x,再给数组赋值
另外平均值计算也是错误的,num/cnt是两个整数相除,是整除,没有小数。改成num*1.0/cnt;

把scanf("%d",&x);放在do循环的第一条语句即可。
因为一开始x没有值。


#include <stdio.h>
#include <math.h>
int main()
{
    int n;
    scanf("%d" , &n);
    if(n<=0||n>10){
        printf("Invalid.\n");
    }
  else{
    int a[n] , i , cnt=0 ;
    double sum=0;
    for(i=0 ; i<n ; i++){
        scanf("%d" , &a[i]);
        sum+=a[i];
    }
    sum=1.0*sum/n;
       printf("%.2lf\n" , sum);
    int b[n];
    for(i=0 ; i<n ; i++){
        if(a[i]>sum){
            b[cnt++]=a[i];
        }
    }
    if(cnt==0){
        printf("\n");
    }
    else{
        for(i=0 ; i<cnt ; i++){
            printf("%d " , b[i]);
        }
    }
  }
    return 0;
}