0

これらは指示でした:
正規分布の平均 u と標準偏差 s をユーザーに尋ねることから始まるプログラムを書きます (wiki の記事http://en.wikipedia.org/wiki/Normal_distributionを参照してください)。 N を入力し、N 個の値 x を要求します。x ごとに f(x) を画面に書き出します。プログラムは、ユーザーに u、s、および N を 1 回だけ要求することに注意してください。その後、x の N 個の値を 1 つずつ要求します。各値 x の後に、関数の対応する値を書き出します。

そして、これは私のコードです:

#include <stdio.h>

#define PI 3.141592653589793238462643383
#define E 2.7182818284590452353602874713526624977572470937
#include <math.h>
#include <stdlib.h>

int main()
{
    double u,s, N, x1,math1, math2, math3,n, v, x;
    printf("Enter Mean: \n");
    scanf("%d", &u);
    printf("Enter Standard Deviation: \n");
    scanf("%d", &s);
    printf("Enter number of x's \n");
    scanf("%d", &N);

for (v=1; v<=N; v++)
{
     printf("Enter Value \n");
     scanf("%d", &x);
     n=1/2;
         math1 =1/(u*sqrt(2*PI));
         math2= (x-u)/s * (x-u)/s;
         math3= E * exp(n);
         x1 = math1 * exp(math3)*exp(math2);
         printf("%d \n", x1);
    }
    system("Pause");
 }

私のプログラムは、「Xの数を入力してください。これがなぜなのかを理解するのを手伝ってくれますか?

4

1 に答える 1

3

scanf() に不正なフォーマット文字列を渡すと、未定義の動作が発生します。すべてのフォーマット指定子は%lf、値が次のdoubleとおりである必要があります。

scanf("%lf", &u);

このため、for ループには入らず、 で停止しpauseます。

于 2013-01-27T01:57:07.350 に答える