c - 寻找元素平均值的问题
问题描述
使用 Repl.it 并尝试使用 C 中的函数来平均可变长度数组中的元素。除了返回的平均值之外,我的程序在所有其他 i/o 区域都可以正常工作:
当天的平均值是:-nan。关于问题可能是什么的任何见解?
目标是接收用户输入的双倍输入(例如,在 7 小时内每小时抽取多少品脱血,然后使用函数调用计算这 7 小时内的平均量。
新代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
double average(int size, float ary[*]);
int main(void)
{
char dayOne[8], dayTwo[8];
int size;
float ave;
printf("Over how many hours do you want to view donation amounts?: ");
scanf("%d", &size);
if (size < 7 || size > 7)
size = 7;
printf("Enter day that you want to see average donation amount for: ");
scanf("%s", dayOne);
{
float ary[size];
for (int i = 0; i < size; i++)
{
printf("\nEnter amount taken in hour %d:", i + 1);
scanf("%f", &ary[i]);
}
ave = average(size, ary);
printf("\nThe average donated for %s is: %2.1f", dayOne, ave);
}
printf("\n\nEnter day that you want to see average donation amount for: ");
scanf("%s", dayTwo);
if(strcmp(dayOne, dayTwo)== 0)
printf("\nEnter a different day please: ");
scanf("%s", dayTwo);
{
float ary[size];
for (int i = 0; i < size; i++)
{
printf("\nEnter amount taken in hour %d:", i + 1);
scanf("%f", &ary[i]);
}
ave = average(size, ary);
printf("\nThe average donated for %s is: %2.1f", dayTwo, ave);
}
return 0;
}
double average(int size, float ary[])
{
double sum = 0;
double ave;
for (int i = 0; i < size; i++)
sum += ary[i];
ave = (double)sum / size;
return ave;
}
解决方案
这是错误的:
int ary[7];
…
scanf("%f", &ary[i]);
%f
是用于扫描 a float
,但是ary[i]
是int
. 结果行为未定义。
这是错误的:
double size;
…
ave = average(size, ary);
“...”中的任何内容都没有为 赋值,因此在调用size
时它没有定义的值。average
推荐阅读
- php - wp 安装文件夹外的 the_permalink() wordpress
- c# - 通过 Web 浏览器从 WCF 服务主机加载时无法获取文件大小
- arrays - Symfony - 将数组保存到数据库
- node.js - 如何将数据从邮递员发布到 Output.json 文件?
- ios - 如何在 Swift 中创建自定义分段控件
- r - 如何以闪亮的百分比显示“numericInput”中的值?
- javascript - Angular6轮询不返回数据
- javascript - 剑道 - 滚动时关闭的角度下拉菜单
- python - 满足条件时根据其他列替换列数据框中的值
- python - 维护良好的“conda”频道列表