-3

プログラミングは初めてですが、プログラミングコースに参加して導入を開始します。問題は、彼らが私たちにやるべきことを与えるだけであることを教えていないことです。ユーザーが持っているコインとドルの数に基づいて、誰かが持っているセントの額を計算する関数を作成する必要があります (これはユーザーから入力されます)。何をしているのか、関数プロトタイプを正しく使用しているのかどうかはわかりませんが、プログラムを実行してもエラーは発生しませんが、大きな負の数が出力されます。これが私が持っているものです。長い間申し訳ありませんでしたが、どんな助けも大歓迎です。

#include <stdio.h>
#include <stdlib.h>
#include </home/TU/tue64800/include/myheader.h>

#define PENNYCOIN      1
#define NICKELCOIN     5
#define DIMECOIN      10
#define QUARTERCOIN   25
#define HALFCOIN      50
#define DOLLAR       100

int penny_coin_worth( int number_of_pennies );  
int nickel_coin_worth( int number_of_nickels );
int dime_coin_worth( int number_of_dimes );
int quarter_coin_worth( int number_of_quarters );                  
int half_coin_worth( int number_of_half );             
int dollar_coin_worth( int number_of_dollars );            
int total_worth ( int number_of_pennies, int number_of_nickels, int number_of_dimes,
int number_of_quarters, int number_of_half, int number_of_dollars );

int number_of_pennies, number_of_nickels, number_of_dimes, number_of_quarters,
number_of_half, number_of_dollars;
int total;

int main (void)
{
printf( "This program was written by %s.\n", PROGRAMMER_NAME );

printf( "Enter number of pennies:\n");
scanf( "%lf", &number_of_pennies);

printf( "Enter number of nickels:\n");
scanf( "%lf", &number_of_nickels);

printf( "Enter number of dimes:\n");
scanf( "%lf", &number_of_dimes);

printf( "Enter number of quarters:\n");
scanf( "%lf", &number_of_quarters);

printf( "Enter number of half dollars:\n");
scanf( "%lf", &number_of_half);

printf( "Enter number of dollars:\n");
scanf( "%lf", &number_of_dollars);

penny_coin_worth (number_of_pennies);
nickel_coin_worth (number_of_nickels);
dime_coin_worth (number_of_dimes);
quarter_coin_worth (number_of_quarters);
half_coin_worth (number_of_half);
dollar_coin_worth (number_of_dollars);

total_worth ( number_of_pennies, number_of_nickels, number_of_dimes,   
number_of_quarters, number_of_half, number_of_dollars );

return EXIT_SUCCESS;
}

int penny_coin_worth (int number_of_pennies)
{
    return ( number_of_pennies * PENNYCOIN);
}

int nickel_coin_worth (int number_of_nickels)
{
    return ( number_of_nickels * NICKELCOIN);
}

int dime_coin_worth (int number_of_dimes)
{
    return ( number_of_dimes * DIMECOIN);
}

int quarter_coin_worth (int number_of_quarters)
{
    return ( number_of_quarters * QUARTERCOIN);
}

int half_coin_worth (int number_of_half)
{
    return ( number_of_half * HALFCOIN );
}

int dollar_coin_worth (int number_of_dollars)
{
    return ( number_of_dollars * DOLLAR);
}

int total_worth ( int number_of_pennies, int number_of_nickels, int number_of_dimes,  
int number_of_quarters, int number_of_half, int number_of_dollars)
{
printf("The number of cents is%lf\n", (number_of_pennies * PENNYCOIN +    
number_of_nickels *  NICKELCOIN + number_of_dimes * DIMECOIN + number_of_quarters *  
QUARTERCOIN +  number_of_half * HALFCOIN + number_of_dollars * DOLLAR)*.01);
    return (0);
}
4

2 に答える 2

3

printfフォーマット指定子を読んでください。Guy Sirtonが言ったように、あなたの間違いは、それらが異なるタイプであるときに、 (in )%lfを読み込むために使用することです。に使用する必要があります。intscanf%dint

将来的には、GDBなどのデバッガーの使用方法を学び、それを使用してプログラムの実行をステップ実行し、変数の値を確認する必要があります。

于 2013-02-08T01:31:14.110 に答える
2

あなたのステートメントでは、入力値を( )scanfとして解釈しようとしています。代わりに、すべての変数を として宣言したため、整数で読み取る必要があります。次のように使用します。double%lfint%d

scanf("%d", &number_of_pennies);

まだ混乱している場合は、printfフォーマット仕様を読んでください。

于 2013-02-08T01:32:32.897 に答える