0

これはおそらく私の側では本当にばかげたエラーであることはわかっていますが、C を学び始めたばかりです。基本的な電卓を作成したかったのですが、const char * を期待しているプログラムに関するエラーが発生し続けていますが、float があります。また、最後のprintfコマンド(50行目と思われます)には正しい構文または正しい形式がありません。繰り返しますが、私は本当に新しいので、不便をおかけして申し訳ありません。助けてくれてありがとう!私のコードは以下です。

#include <stdio.h>

#include <math.h>

int main()
{
    char firstnum, secondnum, answer;
    char function;

    printf("Hello and welcome to my calculator!");

    printf("Please input the function you would like to use");

    scanf("%c", &function);

    printf("Now please input the two variables.");

    scanf("%f", &firstnum);

    scanf("%f", &secondnum);

    if (function == '+')
    {
        answer = firstnum+secondnum;
    }
    else if (function == '-')
    {
        answer = firstnum-secondnum;
    }
    else if (function == '*')
    {
        answer = firstnum*secondnum;
    }
    else if (function == '/')
    {
        answer = firstnum/secondnum;
    }
    else
    {
        printf("Sorry that was an incorrect function.  The correct inputs are +, -, *, /.");
    }

    printf(answer);

    return 0;


}
4

5 に答える 5

3

いくつかのこと:

1)浮動小数点数を使用するため、行を変更します

char firstnum, secondnum, answer;

する必要があります

float firstnum, secondnum, answer;

2)改行

printf(answer);

printf("Answer %f \n", answer);
于 2013-02-20T05:29:00.900 に答える
0

あなたの最終的なprintfものは

printf("%f", answer);

またはより良い

printf("Answer : %f \n", answer);

これは、 の宣言がprintf次のようになっているためです。

int printf ( const char * format, ... );

期待される最初のパラメーターは出力の形式で、残りは挿入される変数です。

これに加えて、他の人が指摘しているように、データ型を修正する必要があります。

于 2013-02-20T05:28:38.667 に答える
0
char firstnum, secondnum, answer;
:
scanf("%f", &firstnum);

これではなかなか終わりません。scanfのデータ型をフォーマット指定子に一致させる必要があります。

これらの変数は型である必要がありますがfloat、正直なところ、最近では追加の範囲と精度のために double を使用しない本当の理由はありません。その場合、必ず%lfフォーマット指定子に使用してください。

さらに、最終的にはフォーマット指定子が完全に欠けているため、変数を指定子としてprintf使用しようとします。answer上記のようにデータ型を修正したら、これを次のように変更する必要があります。

printf ("%f\n", answer);  // %lf for double.
于 2013-02-20T05:29:30.147 に答える
0

ステートメントを に変更します printf("%f",answer);

また、変数をchars として宣言しました。それらをfloats として宣言します。

おすすめされた:

あなたは初心者のようですので、アドバイスをお願いします。プログラムの実行時間を減らして、プログラムを効率的にするようにしてください。したがって、非常に多くのif---elseブロックの代わりに、switchケースを使用した可能性があります。

于 2013-02-20T05:31:40.133 に答える
0

変数を次のように宣言します-

float firstnum, secondnum, answer;

最後printfを -に変更します

printf("Answer is: %f", answer);
于 2013-02-20T05:27:29.810 に答える