//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?我尝试了各种各样的组合,似乎无法让它发挥作用。我真的很感谢你的帮助!
答案 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++;