昨天有人问我一个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;
}
比如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;
}
输入的时候是浮点数,没错
scanf("%f",&x);
但输出的时候是
printf("%d的平方根是%d\n",x,y);
注意第一个参数x是以%d输出的,这就错了
=>
scanf("%d",&x);
#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;
}
哈..又拷错了...
quickly 08:32:20
错误是声明类型出问题
quickly 08:32:36
申明float x=0,y=0;
而不是double
double x=0,y=0;
改为
float x=0,y=0;