C 添加浮点值是不正确的
这项任务的要求如下:C 添加浮点值是不正确的,c,floating-point,C,Floating Point,这项任务的要求如下: 从stdin读取浮点值,每个浮点值用换行符分隔,并以EOF终止 输入值在[-100000到+100000]范围内 输入将至少包含一个浮点值 输入可能包含空行:应忽略这些空行 除了可能的空行外,输入格式良好 在EOF时,输出: 所见最小值 看到的最大值 看到的所有值的算术平均值 全部精确到小数点后两位。 输出值必须由单个空格字符分隔,后跟换行符 示例: 输入: 7 5.6 6 11 输出: 5.60 7.00 6.20 11.00 11.00 11.00 输入
- 从stdin读取浮点值,每个浮点值用换行符分隔,并以EOF终止
- 输入值在[-100000到+100000]范围内
- 输入将至少包含一个浮点值
- 输入可能包含空行:应忽略这些空行
- 除了可能的空行外,输入格式良好
- 所见最小值
- 看到的最大值
- 看到的所有值的算术平均值
7
5.6
6
11
输出:
5.60 7.00 6.20
11.00 11.00 11.00
输入:
7
5.6
6
11
输出:
5.60 7.00 6.20
11.00 11.00 11.00
在我的代码中,当我输入7、5.6和6时,我的输出是5.60 7.00 5.77。
我知道问题在哪里,但不知道如何解决。我的总变量表示它在EOF的值是17.322826,这绝对是不正确的
#include <stdio.h>
int main() {
int i = 0;
float big = 0;
float small = 1000000;
float total;
float div = 0;
while (i == 0) {
float a = 0;
float flag = scanf("%f", &a);
if (flag == EOF) {
printf("%.2f %.2f %.2f %f %f\n", small, big, total / div, total, div);
break;
}
if (a > big) {
big = a;
}
if (a < small) {
small = a;
}
div++;
total = total + a;
}
return 0;
}
#包括
int main(){
int i=0;
浮动大=0;
浮动小=1000000;
浮动总额;
浮动div=0;
而(i==0){
浮点数a=0;
float flag=scanf(“%f”、&a);
如果(标志==EOF){
printf(“%.2f%.2f%.2f%f%f\n”,小,大,总计/div,总计,div);
打破
}
如果(a>大){
大=a;
}
if(a
您忘记将总计
初始化为0
进一步说明:
- 无限循环的经典C习惯用法是(;;){…}
应定义为标志
int
- 当
而不仅仅是flag!=1
。无效输入将导致程序无限循环。实际上,您可以完全删除此变量标志==EOF
- 将
初始化为big
和0
初始化为small
是不正确的:如果所有值都为负值怎么办?如果它们都很大呢1000000
#include <stdio.h>
int main(void) {
float a, big, small, total;
int div;
if (scanf("%f", &a) != 1)
return 1;
big = small = total = a;
div = 1;
while (scanf("%f", &a) == 1) {
if (big < a) {
big = a;
}
if (small > a) {
small = a;
}
div++;
total += a;
}
printf("%.2f %.2f %.2f\n", small, big, total / div);
return 0;
}
#包括
内部主(空){
浮动a、大、小、总;
国际部;
如果(扫描频率(“%f”,&a)!=1)
返回1;
大=小=总=a;
div=1;
而(scanf(“%f”,&a)==1){
如果(大a){
小=a;
}
div++;
总数+=a;
}
printf(“%.2f%.2f%.2f\n”,小,大,总/div);
返回0;
}
首先,请阅读所使用功能的文档scanf
返回的是int
,而不是float
。您好,您确定这是导致问题的原因吗?我让它打印到终端的“a”值,每次它被设置,并显示正确的值。我相信错误来自于浮点值的增加。我的每次运行的“总计”var(输入相同)每次都有不同的输出。我将“flag”声明为int,没有更改。我没有说这是导致问题的原因,但这将是使用正确类型的开始,您必须阅读文档。而EOF
并不是报告问题的唯一值,从文档中也可以看出这一点。