为什么我的产品成本平均为0?

时间:2012-10-28 22:33:35

标签: c

//Program Written By: Andre Chitsaz-zadeh
//Program Written On: 10/7/12
//Program calculates book cost for multiple book orders. 
//Program written using multiple functions.

#include <stdio.h>
#define SIZE 5

void inputData();
void processingData(float costs[]);
float costs[5];
float sortedCosts[5];

int main()
{
   inputData();
   processingData(costs);
}

void inputData()
{
   int i = 0;
   printf("\nPlease enter five products costs.\n");
   while (i < 5)
   {
      scanf("%d", &costs[i]);
      i = i + 1;
   }
}

void processingData(float costs[])
{
   int i;
   int j;
   float sum = 0.00f;
   float average = 0.00f;
   for (i = 0; i < 4; ++i)
   {
      int j, min, temp;
      min = i;
      for (j = i + 1; j < 5; ++j)
         if (costs[j] < costs[min])
            min = j;
      temp = costs[i];
      costs[i] = costs[min];
      costs[min] = temp;
   }
   for (i = 0; i < 5; i++)
      for (j = 0; j < 5; j++)
         sortedCosts[i] = costs[i];

   for (i = 0; i < 5; ++i)
      sum += costs[i];
   average = sum / 5;
   printf("Product Cost Average = %.2f\n", average);
}

为什么我的产品成本平均为零?据我所知,我的所有变量都被声明为float?我尝试了各种各样的组合,似乎无法让它发挥作用。我真的很感谢你的帮助!

2 个答案:

答案 0 :(得分:3)

scanf("%d", &costs[i]);

cost[i]在您的计划中的float类型不是int

使用%f转化规范来阅读float

此外:

temp = costs[i];

您的temp值类型为int,但costs[i]的类型为float。我不认为这是故意的。

答案 1 :(得分:1)

使用 scanf 中的“%f”修饰符获取浮点数,而不是“%d”。

另外,你

#define SIZE 5

但是你在代码中使用的是5而不是SIZE。使用SIZE减少错误的可能性。

没有错误的
i = i + 1;

但更常见的是

i++;