2012-10-28 31 views
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); 
} 

为什么我的产品成本平均值为零?据我可以看到我所有的变量都被声明为float?我尝试了各种各样的组合,并且我似乎无法让它工作。我非常感谢你的帮助!为什么我的产品成本平均值为0?

+0

这将是有益的知道你需要实现的代码是什么。有几个错误btw .. – Acorbe

+0

一遍又一遍,UB使用scanf ...嘿家伙,是你没有阅读一些C标准之前问/做? – 2012-10-28 22:39:59

+0

“我<4”是正确的吗? –

回答

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

cost[i]float类型的程序中的不int

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

另外:

temp = costs[i]; 

tempint类型,但costs[i]float类型。我不认为这是故意的。

+0

谢谢,我也想知道为什么我的平均数稍微偏离了,但是你用我的临时变量捕获的错误修正了它!你也很快,谢谢! – user1724390

+0

@ user1724390不客气! – ouah

1

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

此外,您

#define SIZE 5 

但是你用5层的整个代码,而不是大小。使用SIZE来减少错误的可能性。

没有什么错

i = i + 1; 

但更常用写成

i++; 
相关问题