c - 运行时不精确的平均值
问题描述
我正在尝试解决一个问题,但遇到了一些问题。
我必须找到一系列数字的运行平均值。
例子:
input 4 2 7
output 4 3 4.3333
现在这是问题,虽然我得到了答案,但这不是准确的答案。
接受的输出:图像中显示的精度差异
290.6666666667
385.4000000000
487.8333333333
477.4285714286
496.4444444444
...
523.8571166992
506.0454406738
495.3043518066
我找不到什么问题。一些帮助将不胜感激。
#include<stdio.h>
main(){
int n;
printf("set:");
scanf("%d",&n);
float arr[n+1],resarr[n+1];
float sum=0;
for(int i=1; i<=n; i++){
scanf("%f",&arr[i]);
sum=arr[i]+sum;
float res= sum/(float)i;
resarr[i]=res;
}
int i=1;
while(i<=n) {
printf("%0.10f\n",resarr[i]);
i++;
}
return 0;
}
解决方案
这里
for(int i=1; i<=n; i++){ }
您正在尝试访问超出范围的数组元素,这肯定会导致未定义的行为,因为让我们假设如果n
是,5
那么您正在访问的arr[5]
也是不存在的。
C
不执行数组边界条件检查,它的程序员有责任不访问越界元素,否则会导致 UB。
在C
数组中索引0
不是从1
. 0
所以最好从到开始旋转循环n
。例如
for(int i=0; i<n; i++) {
scanf("%f",&arr[i]);
/* some code */
}
推荐阅读
- autodesk-forge - Forge Viewer,光栅图像
- python - 如何将嵌套字典转换为 Python 元组?
- javascript - javascript for循环中的异步/等待变量影响
- tensorflow - 张量转换为具有 dtype bool 的张量请求 dtype float32 | 在 LSTM 中添加掩码
- python - 为 LQR 方法定义 Python 类(线性二次调节器)
- ios - 是否可以在不使用 APNs 的情况下在关闭的 Intranet 应用程序中让 iOS 推送通知?
- controls - ExoPlayer 的底部控件在视频中不可见但可点击
- c# - WCF AppSettings 值变为 NULL
- python - 有没有办法修复 TCL tkinter 错误?
- sql - SQL 转换意外结果