-4

だからここに私のコードがあります。何らかの理由で、四半期の量が 4 であると常に表示されます。何が間違っていますか?

#include <stdio.h>

#define QUARTER 25      // Define the constant cent values of the quarters, dimes, nickels, and pennies.
#define DIME    10
#define NICKEL  5
#define PENNY   1

int main( void ){

    int priceOfitem;  // Initialize the variable that will be the price.
    printf("Enter the price of an item less than one dollar (in cents) (eg: 57) : ");
    scanf("%lg", &priceOfitem);

    if(priceOfitem >= 100){
    printf("The price must be less than one dollar. \nProgramming exiting.");
    return 0;
    }



    int changeAmount = 100 - priceOfitem; /* Create the variable that is the amount of change needed.
                                           * This variable will be modified later on.
                                           */

    int amountOfQuarters = ((changeAmount - (changeAmount % QUARTER)) / QUARTER); // Utilizing the modulus operator to determine the amount of quarters.

    printf("\n\nThe Amount of Quarters Needed in the Change is: %d", amountOfQuarters);

    changeAmount = changeAmount - (amountOfQuarters * QUARTER); // Modifying the change amount


    int amountOfDimes = ((changeAmount - (changeAmount % DIME)) / DIME); // Utilizing the modulus operator to determine the amount of dimes.

    printf("\n\nThe Amount of Dimes Needed in the Change is: %d", amountOfDimes);

    changeAmount = changeAmount - (amountOfDimes * DIME); // Modifying the change amount


    int amountOfNickels = ((changeAmount - (changeAmount % NICKEL)) / NICKEL); // Utilizing the modulus operator to determine the amount of nickels.

    printf("\n\nThe Amount of Nickels Needed in the Change is: %d", amountOfNickels);

    changeAmount = changeAmount - (amountOfNickels * NICKEL); // Modifying the change amount


    int amountOfPennies = changeAmount; // Since the changeAmount can now be expressed with pennies only, set the amountOfPennies variable as such.

    printf("\n\nThe Amount of Pennies Needed in the Change is: %d", amountOfPennies);

    return 0;
}
4

2 に答える 2

3

ここ:

int priceOfitem;  // Initialize the variable that will be the price.
printf("Enter the price of an item less than one dollar (in cents) (eg: 57) : ");
scanf("%lg", &priceOfitem);

"%d"整数入力のために scanfに渡す必要があります。

scanf("%d", &priceOfitem);

また、この減算は必要ありません。

int changeAmount = priceOfitem; //int changeAmount = 100 - priceOfitem

-Wall -Werrorコンパイルするときは常に (または選択したコンパイラの同様のフラグ) を使用します。

于 2013-01-18T23:22:32.580 に答える
2

これは実際にはあなたの質問に対する答えではありませんが...

通常、整数演算を使用して除算するだけで四半期の数 (およびこのようなもの) を計算します。これにより、小数部分が破棄されます。

 int amountOfQuarters = changeAmount / QUARTER;

したがって、changeAmount が 57 で、整数演算を使用して 25 で除算すると、2 になります。

于 2013-01-18T23:26:48.003 に答える