这些是指示:
编写一个程序,开始向用户询问正态分布的均值u和标准差s(参见wiki文章http://en.wikipedia.org/wiki/Normal_distribution)
程序然后要求N,然后要求N值x。对于每个x它
将f(x)写出到屏幕上。
请注意,程序仅向用户询问u,s和N一次。之后呢
一个接一个地询问x的N值。在每个值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的数量后停止。有人能帮我弄明白这是为什么吗?
答案 0 :(得分:3)
将不正确的格式字符串传递给scanf()会调用undefined behvaiour。所有格式说明符都应为%lf
,因为值为double
:
scanf("%lf", &u);
等
因此,未输入for循环并停在pause
。