一道c语言的基础题望大家看看

img


感觉自己是个憨憨,望各位帮忙看看,蟹蟹各位潜水专家拉拉啊拉啊啊拉

代码修改如下:

#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. 输出需要改为平均值输出
  2. 需要加一个else if判断输入为负值且sum>0,输出平均值
  3. 需要加一个else判断输入为负值且sum<=0,输出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;
}