今天写的比较丝滑,不过还是有点小毛病:
  1. 变量n的重复使用
    首先在main函数开头定义了n并通过scanf读取,但紧接着在while循环中又用scanf("%d",&n)读取,覆盖了之前的值。这会导致第一次输入的n被忽略,实际使用的是循环中读取的n。
  2. 平均值计算错误
    代码中计算a = sum / 1.0 * n,这实际上是计算了 “总和乘以n”(因为sum是n个数的总和,除以 1.0 仅起类型转换作用),而不是预期的平均值(平均值应为sum / n)。
  3. 输出格式问题
    输出符合条件的数时,没有添加分隔符(如空格),会导致多个数字连在一起,难以区分。
以下为我修正后正确的代码:
#include<stdio.h>
int main()
{
    int n;
    int arr[100];
    while (scanf("%d",&n)!=EOF) {
        int i;
        float sum=0,avg;
        for (i=0;i<n;i++) {
            scanf ("%d",&arr[i]);
            sum+=arr[i];
        }
        avg=sum/n;
        for (i=0;i<n;i++) {
            if (arr[i]<avg) {
                printf("%d ",arr[i]);
            }
        }
        printf("\n");
    }
    return 0;
}