c - 循环中数字的平均值
问题描述
在我的 C 程序中,我想获得输入数字总和的平均值,直到程序停止。我应该添加什么来检查平均值?谢谢!
#include <stdio.h>
int main (void)
{
int x;
int sum = 0;
int average;
int testEOF;
//Statements
printf("Enter your numbers: <EOF> to stop.\n");
do
{
testEOF = scanf("%d", &x);
if (testEOF !=EOF)
sum +=x;
} while (testEOF !=EOF);
printf ("\nTotal: %d\n", sum);
printf ("\nAverage: %d\n", average);
return 0;
//main
}
解决方案
- 正如其他人解释的那样,您必须初始化
sum
andcount
,它们永远不会被赋予初始值。无需初始化average
,x
因为您分配sum/count
给average
并且用户将分配任何值给x
. - 你必须把你想让你的
if
声明做的所有事情都放在{...}
. 但你没有。您的 if 语句仅适用于并且sum +=x
不适用于count++
andaverage = sum / count
。所以你的程序增加了count
even after的值EOF
。所以你发现14/6
而不是14/5
. - 你检查了
testEOF != EOF
两次。一个在if
声明中,另一个在do-while
.
我把代码放在下面:
#include <stdio.h>
int main (void){
float x;
float sum = 0;
float count = 0;
float average;
float testEOF;
printf("Enter your numbers: <EOF> to stop.\n");
while(1){
testEOF = scanf("%f", &x);
if (testEOF ==EOF){
break;
}
sum +=x;
count++;
average = sum / count;
}
printf ("\nTotal: %f\n", sum);
printf ("\nAverage: %.2f\n", average);
return 0;
}
推荐阅读
- sql - 如何执行动态过程
- swift - Tableview 单元格使动态编辑样式发生变化
- asp.net-mvc - Asp.Net core Razor Taghelpers - 强制参数
- javascript - 我可以对目录中的任何文件使用什么快速路由?
- archlinux - Arch Linux - 在我运行 startx 之前,DisplayPort 上没有输出
- android - Android 背景尺寸 - 调整大小以适合所有设备
- java - 服务器和客户端之间的通信标准
- java - 使用 oracle 序列和序列生成器创建字符串 ID
- android - 抽象服务接口改造
- google-app-engine - 我们如何增加托管在 Google Cloud Platform 上的应用程序的电子邮件配额