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

京公网安备 11010502036488号