代码修改如下:
#include <stdio.h>
int main()
{
int x,i=0;
float sum = 0;
for (;;)
{
scanf("%d",&x);
if(x > 0)
{
sum += x;
i++;
}else
break;
}
if(i==0)
printf("0");
else
printf("%.1f",sum/i);
return 0;
}
1.先不说别的,for循环就有问题,比如说
第一次循环 i = 0,x是内存中的随机数,随机数碰巧大于0,进入循环内部,手动输入x等于1,进入第二次循环
第二次循环 i = 1, x等于1,for循环条件不满足,结束。
#include <stdio.h>
int main()
{
int sum = 0, data = 0, count = 0;
double avg = 0.0;
scanf("%d", &data);
while (data >= 0)
{
sum += data;
count++;
scanf("%d", &data);
}
if (sum == 0)
{
printf("0");
return 0;
}
avg = sum / count;
printf("%.1lf", avg);
return 0;
}
int arr[20] = {0};
int n = 0;
while(arr[n++] = getchar() != -1);
for(...)
{
//计算平均值num,注意不要把-1算上
}
printf("%0.1f", (float)num);
供参考:
#include <stdio.h>
int main()
{
int x, i, sum = 0;
for (i = 0;; i++) {
scanf("%d", &x);
if (x >= 0) {
sum += x;
}
else {
break;
}
}
if (i == 0)
printf("%d", sum);
else
printf("%.1f", (double)sum / i);
return 0;
}
int main()
{
int input_Val = 0;
int sum = 0;
int times = 0;
while (1)
{
scanf("%d", &input_Val);
if (input_Val == -1)
{
break;
}
else
{
sum += input_Val;
times++;
}
}
if(times == 0) printf("平均数为0\n");
else printf("平均数为%f\n", sum*1.0 / times);
return 0;
}