昨天有人问我一个c的问题,很奇怪啊  为什么   scanf("%f",&x);执行完后x不是我键入的数字呢?
比如x输入5   ,断点到那一步,x确实1.25  E20    很奇怪的数,哪里有问题啊???
#include <stdio.h>
#include <math.h>int main()
{
    double x=0,y=0;
    printf("请输入要求平方根的数字:");
    scanf("%f",&x);
    if(x>=0)
        {
        y=sqrt(x);
        printf("%d的平方根是%d\n",x,y);
        return 0;
        }
    printf("%d没有平方根\n",x);
    return 0;
}

解决方案 »

  1.   

    楼主发错地方了吧,不过可以帮你回答一下:
    输入的时候是浮点数,没错
    scanf("%f",&x);
    但输出的时候是
    printf("%d的平方根是%d\n",x,y);
    注意第一个参数x是以%d输出的,这就错了
      

  2.   

    将printf里的%d换成%f
      

  3.   

    scanf("%f",&x);
    =>
    scanf("%d",&x);
      

  4.   

    汗~~~c怎么发到js里了~~楼主忙晕了~~
      

  5.   

    #include <stdio.h>
    #include <math.h>int main()
    {
        float x=0,y=0;
        printf("a:");
        scanf("%f",&x);
        if(x>=0)
    {
    y=sqrt(x);
    printf("%f=\n",x);
    printf("%f\n",y);
            return 0;
            }
        printf("%d没有平方根\n",x);
        return 0;
    }
    哈..又拷错了...
      

  6.   

     
    quickly 08:32:20
    错误是声明类型出问题 
     
    quickly 08:32:36
    申明float x=0,y=0;
    而不是double  
     
      

  7.   

    再改个,把
    double x=0,y=0;
    改为
    float x=0,y=0;