c - 平均函数返回 nan

标签 c arrays nan

我制作了这个程序来排序数据集并显示最大值、最小值、平均值和中值。最初我在 main 中拥有所有内容,我决定通过创建函数来稍微清理一下。平均函数是工作基金,但在添加更多后,返回的值为 'nan 的平均值。有什么建议么?提前谢谢大家

#include <stdio.h>

int findSize();
double findAverage(int size, double num[]);
double findMedian(int size, double num[]);
void findLowtoHigh(int size, double num[]);
void findHightoLow(int size, double num[]);

int main()
{
 while(1)
 {
  int size = findSize();

  if(size <= 1)
  {
   return 0;
  }

  double num[size];
  double holder;
  double lowest;
  double highest;
  double average;
  double median;

  fprintf(stdout, "\n"); 

  for(int i = 0; i <= size - 1; i++)
  {
   int j = i+1;
   fprintf(stdout, "Please enter number %d: ", j);
   fscanf(stdin, "%lf", &num[i]);
  }

  if(size > 1)
  {
   for(int y = 0; y < size - 1; y++)
   { 
    for(int k = 0; k < size - 1; k++)
    {
     if(num[k] > num[k+1])
     { 
      holder = num[k];
      num[k] = num[k+1];
      num[k+1] = holder;
     }
    }
   }
  }

  findLowtoHigh(size, num);

  findHightoLow(size, num);

  average = findAverage(size, num);

  median = findMedian(size, num);

  fprintf(stdout, "\n\nLowest Value: %3.4f", num[0]);
  fprintf(stdout, "\nHighest Value: %3.4f", num[size-1]);
  fprintf(stdout, "\n\nAverage Value: %3.4f\n", average);  
  fprintf(stdout, "Median Value: %3.4f", median);

  fprintf(stdout, "\n");
 }

}

int findSize()
{
 int size;

 fprintf(stdout, "\nPlease enter size of the array: ");
 scanf("%d", &size);

 return size;
}

void findLowtoHigh(int size, double num[])
{
 fprintf(stdout, "\nFrom least to greatest: ");

 for(int x = 0; x <= size - 1; x++)
 {
  fprintf(stdout, "%3.2f ", num[x]);
 }
}

void findHightoLow(int size, double num[])
{
 fprintf(stdout, "\nFrom greatest to least: ");

 int reverse = size - 1;

 while(reverse != -1)
 {
  fprintf(stdout, "%3.2f ", num[reverse]);
  reverse--;
 }
}

double findAverage(int size, double num[])
{
 double average;

 for(int a = 0; a <= size - 1; a++)
 {
  average = average + num[a];
 }

 average = average / size;

 return average;
} 

double findMedian(int size, double num[])
{
 double median;

 if(size % 2 == 0)
 {
  median = (num[size/2 - 1] + num[size/2])/2;
 }
 else
 {
  median = num[size/2];
 }

 return median;
}

最佳答案

你必须初始化average。改为

double average=0;

关于c - 平均函数返回 nan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22619221/

相关文章:

php - MySQLI Bind_param 查询不返回结果

C:是否可以自动创建给定数量的数组?

c - 第二次使用 sqlite3_prepare_v2 时 SQLite 崩溃

C# 相当于 C union

java - 我正在尝试将两个一维数组交织成一个新数组

python - numpy.isnan(value) 与 value == numpy.nan 不同吗?

java - 双数据类型解析 "NaN"为 "NaN"为什么?

python - 在 Pandas 中将 NaN 转换为 'category' 时遇到问题

c - 将结构定义的地址存储到指针中时是否会创建结构实例?

c++ - Redis客户端命令错误