scanf无法读取输入的问题

时间:2013-01-27 01:54:40

标签: c scanf

这些是指示:
编写一个程序,开始向用户询问正态分布的均值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的数量后停止。有人能帮我弄明白这是为什么吗?

1 个答案:

答案 0 :(得分:3)

将不正确的格式字符串传递给scanf()会调用undefined behvaiour。所有格式说明符都应为%lf,因为值为double

scanf("%lf", &u);

因此,未输入for循环并停在pause