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 として宣言されていることがわかりますか? 私はあらゆる種類の組み合わせを試しましたが、うまくいかないようです。あなたの助けに本当に感謝します!

4

2 に答える 2

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

cost[i]floatはあなたのプログラムのタイプではありませんint

%fを読み取るには、変換指定を使用しますfloat

また:

temp = costs[i];

あなたのtemp値は typeintですがcosts[i]、 typefloatです。わざとではないと思います。

于 2012-10-28T22:35:33.827 に答える
1

"%d" ではなく float を取得するには、 scanfで "%f" 修飾子を使用します。

あなたも

#define SIZE 5

ただし、コード全体で SIZE ではなく 5 を使用します。SIZE を使用して、バグの可能性を減らします。

何も問題はありませ

i = i + 1;

しかし、それははるかに一般的に次のように書かれています

i++;
于 2012-10-28T22:37:16.303 に答える