0

私はこれにかなり慣れていないので、これは素人の間違いだと確信しています。基本的な金融計算機を作成しようとしていますが、コンパイルしようとするとこのエラーが発生し続けます。

findn.c: 関数 'main' 内: findn.c:36:3: 警告: 形式 '%f' は型 'float *' の引数を予期していますが、引数 2 の型は 'double' です [-Wformat] findn.c: 50:3: 警告: フォーマット '%f' はタイプ 'float *' の引数を想定していますが、引数 2 のタイプは 'double' です [-Wformat]

私が知る限り、引数float 型です。何を与える?また、何か他のことを遠慮なく指摘してください。私のコードがずさんであると確信しています。

#include <stdio.h>
#include <math.h>

void findN (float PV, float FV, float interest)
{
float iDec = interest / 100;
float onePlusI = iDec + 1;
float leftSide = FV / PV;
float logOne = log(leftSide);
float logTwo = log(onePlusI);
float N = logOne / logTwo;
printf("%f\n", N);
}

void findI (float PV, float FV, float N)
{
float leftSide = FV / PV;
float expN = 1 / N;
float iPlusOne = pow(leftSide, expN);
float iDec = iPlusOne - 1;
float interest = iPlusOne * 100;
printf("%f\n", interest);
}

main ( )
{
int userInput;
printf("Press 1 to find Present Value, 2 to find Future Value, 3 to find Interest, or 4 to find Number of Periods\n");
scanf("%d", &userInput);
if (userInput = 3)
    {
    float Pres3;
    float Fut3;
    float Num3;
    printf("Enter Present Value\n");
    scanf("%f", Pres3);
    printf("Enter Future Value\n");
    scanf("%f", &Fut3);
    printf("Enter the Number of Periods\n");
    scanf("%f", &Num3);
    findN(Pres3, Fut3, Num3);
    }

else if (userInput = 4)
    {
    float Pres4;
    float Fut4;
    float Int4;
    printf("Enter Present Value\n");
    scanf("%f", Pres4);
    printf("Enter Future Value\n");
    scanf("%f", &Fut4);
    printf("Enter interest\n");
    scanf("%f", &Int4);
    findN(Pres4, Fut4, Int4);
    }
}
4

2 に答える 2

2
if (userInput = 3)

これは間違っています。ここでは value を再度比較しているのではなく、 valueを3に代入しています。代入演算子の代わりに等価演算子を使用します。3userInput===

それで:

scanf("%f", Pres3);

へのポインタを渡す必要がありますPres3。使用する:

scanf("%f", &Pres3);

代わりは。

これら 2 つの問題は、プログラムの他の場所で繰り返されます。

最後に、Cmain()で宣言する有効な方法ではありません。mainint main(void)

于 2013-10-13T00:30:13.600 に答える
2

scanf("%f", Pres3);の代わりに書きましたscanf("%f", &Pres3);引数がポインタではないという事実について不平を言っています。

floatと の間の混乱doubleはおそらく、 がfloatと同じマシン上にいるためですdouble

于 2013-10-13T00:31:32.350 に答える