-1

これが私のコードです:

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

static const int PI = 3.14159; // Defined global constant for PI
int areaR;
int circumferenceR;
int areaD;
int circumferenceD;

int main(void)
{
#define radius 6
#define diameter 12

    areaR = PI * pow(radius, 2);
    circumferenceR = 2 * PI * radius;

    areaD = PI * pow(diameter, 2)) / 4;
    circumferenceD = PI * diameter;

    puts("Results given a circle of radius 6 and diameter 12:\n");
    printf("areaR is %d\n", areaR);
    printf("circumferenceR is %d\n", circumferenceR);
    printf("areaD is %d\n", areaD);
    printf("circumferenceD is %d\n", circumferenceD);
}

コード


これは、面積と円周の値を出力すると想定されており、面積は約 113 に等しく、円周は 37 程度です。それはさておき、私の出力は間違った値を示しています。面積は 108、円周は 36 です。これらの値が間違っていることはわかっていますが、想定よりわずかに小さいだけです。これは私の最初の C プログラムで、どこが間違っているのかわかりません。

4

2 に答える 2

13

type:intをすべての変数/定数に使用しています。これは、値が整数として表されていることを意味します。たとえばstatic const int PI = 3.14159、3.14159 は 3 に切り捨てられることを意味します。 の代わりに、またはintを使用してみてください。floatdouble

于 2013-09-02T19:36:05.753 に答える
2

int のデータ型を変数に設定すると、整数値のみが格納され、小数部分が切り捨てられます。あなたの ans は期待どおりではありませstatic const int PI = 3.14159;ん.PI33.14159

次の行にはタイプミスさえあります。

areaD = PI * pow(diameter, 2)) / 4;

の後に余分なブラケットがあり2)ます。答えに違いはありませんが、コンパイル中にエラーが発生する場合があります。

于 2013-09-02T23:15:23.803 に答える