Turbo C编译器问题,sqrt()函数不能使用变量参数

我搜索类似于我的问题类似的问题 。 但我的问题是使用Turbo C编译器v3.0时。 我是否应该为math.h文件做一些额外的工作? 请帮忙。

int main (void){ double result, a; clrscr(); printf("Enter a # for square root.\n"); scanf("%f",&a); printf("a = %f\n",a); result = sqrt(a); printf("a = %f and square root is %f\n",a, result); getch(); return 0; } 

输出是这样的:

输入#作为平方根。

64

a = 0.000000

a = 0.000000,平方根为0.000000

对于scanf()%f用于float 。 您需要将%lf用于double

 printf("Enter a # for square root.\n"); scanf("%lf",&a); 

这与printf()相反,其中type-promotion允许%f用于floatdouble

试试这个 :

  scanf("%lf",&a); 

或者将变量a更改为float:

  float a; 

除了使用"%lf"作为scanf格式之外,您还需要

 #include  #include  #include  /* I think */ 

最后一个用于clrscr()getch()调用; 它们是非标准的,但我认为它们是在声明的。

如果没有#include ,编译器将假设sqrt()返回int结果而不是double

(旁边:为什么要调用clrscr() ?在执行任何其他操作之前清除屏幕有什么好处? getch()调用也不是必需的,但在某些系统上运行程序的默认方法会导致窗口一旦终止就关闭。)