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
用于float
和double
。
试试这个 :
scanf("%lf",&a);
或者将变量a更改为float:
float a;
除了使用"%lf"
作为scanf
格式之外,您还需要
#include #include #include /* I think */
最后一个用于clrscr()
和getch()
调用; 它们是非标准的,但我认为它们是在
声明的。
如果没有#include
,编译器将假设sqrt()
返回int
结果而不是double
。
(旁边:为什么要调用clrscr()
?在执行任何其他操作之前清除屏幕有什么好处? getch()
调用也不是必需的,但在某些系统上运行程序的默认方法会导致窗口一旦终止就关闭。)