djdgf4 发表于 2022-4-7 18:06

//找出若干个非零数中的最小值和平均值。

本帖最后由 djdgf4 于 2022-4-9 21:22 编辑

//找出若干个非零数中的最小值和平均值
#include<stdio.h>
int main()
{
    int i;
    float x,m,s,a;
    if(x != '\r')
      {
            m=x;
            s=x;
      }
    for(i=1;;i++)
    {
      scanf("%f", &x) ;
      if(x==0) break;
      s=s+x;
      if (m>x)
            m=x;
    }
a=s/i;
printf("最小值m=%f,平均值a=%f",m,a);
return 0;
}

结果好像是死循环?
要求中是若干个数,而且不是以零为结束,结束条件应该是换行或者回车。\n和\r我都试过了,也没有任何输出,代码应该哪里出了问题,请指点
其中一组测试输入是1,2,3,4,5
这是原题目

CC000731 发表于 2022-4-7 21:54

没有控制循环次数,结束条件

xianhug 发表于 2022-4-8 00:26

本帖最后由 xianhug 于 2022-4-8 00:29 编辑

先声明n,元素个数

for(i=1;i++;i <= n)
    {
scanf("%d", &n);      
scanf("%f", &x) ;
      if(x==0) break;
      s=s+x;
      if (m>x)
            m=x;
    }
a=s/n;
printf("最小值m=%f,平均值a=%f",m,a);
return 0;
}

djdgf4 发表于 2022-4-8 08:49

xianhug 发表于 2022-4-8 00:26
先声明n,元素个数

for(i=1;i++;i x)


要求是若干个数,而且不以0为结束标志

Lindetu 发表于 2022-4-8 09:28

//找出若干个非零数中的最小值和平均值
#include<stdio.h>
int main()
{
    int i;
    float x, m, s, a;
    for (i = 1;; i++)
    {
      scanf("%f", &x);
      if (x == 0) break;
      if (x != '\r')
      {
            m = x;
            s = x;
      }
      s = s + x;
      if (m > x)
            m = x;
    }
    a = s / i;
    printf("最小值m=%f,平均值a=%f", m, a);
    return 0;
}

djdgf4 发表于 2022-4-8 17:05

Lindetu 发表于 2022-4-8 09:28
//找出若干个非零数中的最小值和平均值
#include
int main()


您这个我试了下,也是死循坏

unmask 发表于 2022-4-8 19:21

//找出若干个非零数中的最小值和平均值
#include <stdio.h>
int main()
{
    int n = 0;
    float x = 0, m = 0, s = 0, a;
    printf("请输入数据个数:");
    scanf("%d", &n);

    for (int i = 1; i <= n; ++i)
    {
      scanf("%f", &x);
      s = s + x;
      m = m == 0 || m > x ? x : m;
    }

    a = s / n;
    printf("最小值m=%f,平均值a=%f", m, a);
    return 0;
}

djdgf4 发表于 2022-4-8 20:22

unmask 发表于 2022-4-8 19:21
//找出若干个非零数中的最小值和平均值
#include
int main()


数据个数是未知的

云在天 发表于 2022-4-8 23:56

本帖最后由 云在天 于 2022-4-9 00:05 编辑

任何边界条件都没有?
怎么读的这些数?靠人工输入?

不知道何时停止,就在每次输入新的数据后生成新的平均值和最小值。

知道何时停止,你的循环就不是死循环

#include <stdio.h>

int main()
{
        double min,sum,ave;
        min = -1;
        sum = 0;
        ave = 0;
        for(int i = 1;;i++)
        {
                double input;
                scanf("%lf",&input);
                if(input < min || min == -1)
                  min = input;
                sum += input;
                ave = sum / i;
                printf("The min is %lf, average is %lf\r\n",min,ave);
        }
        return 0;
}
凑合看吧,不会写C

djdgf4 发表于 2022-4-9 13:40

云在天 发表于 2022-4-8 23:56
任何边界条件都没有?
怎么读的这些数?靠人工输入?



估计是以回车或者换行为结束的
页: [1] 2
查看完整版本: //找出若干个非零数中的最小值和平均值。