0
//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);
}

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

4

2 回答 2

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

cost[i]是你程序中的类型floatnot int

使用%f转换规范来读取float.

还:

temp = costs[i];

您的temp值是 typeintcosts[i]属于 type float。我不认为这是故意的。

于 2012-10-28T22:35:33.827 回答
1

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

还有,你

#define SIZE 5

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

没什么不好

i = i + 1;

但这更常见的写成

i++;
于 2012-10-28T22:37:16.303 回答