//找出若干个非零数中的最小值和平均值。
本帖最后由 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
这是原题目
没有控制循环次数,结束条件 本帖最后由 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;
} xianhug 发表于 2022-4-8 00:26
先声明n,元素个数
for(i=1;i++;i x)
要求是若干个数,而且不以0为结束标志 //找出若干个非零数中的最小值和平均值
#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;
} Lindetu 发表于 2022-4-8 09:28
//找出若干个非零数中的最小值和平均值
#include
int main()
您这个我试了下,也是死循坏
//找出若干个非零数中的最小值和平均值
#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;
}
unmask 发表于 2022-4-8 19:21
//找出若干个非零数中的最小值和平均值
#include
int main()
数据个数是未知的 本帖最后由 云在天 于 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 云在天 发表于 2022-4-8 23:56
任何边界条件都没有?
怎么读的这些数?靠人工输入?
估计是以回车或者换行为结束的
页:
[1]
2