这个程序为什么不对

来源:百度知道 编辑:UC知道 时间:2024/05/07 05:38:47
#include "stdio.h"
#include "math.h"
double velo(double r)
{
double v;
double Qp=1.60e-19,Qe=1.60e-19,K=9.1e+9,m=9.11e-31;
v=sqrt(K*Qp*Qe/(m*r));
return v;
}
void main()
{
double r,v;
printf("please input r:\n");
scanf("%f",&r);
v=velo(r);
printf("v=%f\n",v);
}
这个程序为什么不对,为什么我把所有的double都换成float就对了呢

#include "stdio.h"
#include "math.h"
double velo(double r)
{
double v;
double Qp=1.60e-19,Qe=1.60e-19,K=9.1e+9,m=9.11e-31;
v=sqrt(K*Qp*Qe/(m*r));
return v;
}
void main()
{
double r,v;
printf("please input r:\n");
scanf("%lf",&r); //r是长整型,格式说明符错误
v=velo(r);
printf("v=%f\n",v);
}

晕啊~~为什么你的程序我用VC6.0的时候没有报错呢??你用的什么编译的啊~~

我也觉得奇怪,编译没问题,运行说domain: error

你在void main中定义的r为double型的,输入输出的时候又是float型的,类型都不同当然要错了.