我搜索了类似于我的问题Similar problem的问题。但我的问题是使用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
答案 0 :(得分:4)
对于scanf()
,%f
适用于float
。您需要%lf
使用double
:
printf("Enter a # for square root.\n");
scanf("%lf",&a);
这与printf()
形成鲜明对比,%f
类型推广允许float
和double
同时使用{{1}}。
答案 1 :(得分:2)
试试这个:
scanf("%lf",&a);
或将变量a更改为float:
float a;
答案 2 :(得分:2)
除了使用"%lf"
作为scanf
格式外,您还需要
#include <stdio.h>
#include <math.h>
#include <conio.h> /* I think */
最后一个用于clrscr()
和getch()
来电;它们是非标准的,但我认为它们是在<conio.h>
中声明的。
如果没有#include <math.h>
,编译器将假设sqrt()
返回int
结果而不是double
。
(旁边:你为什么打电话给clrscr()
?在做其他事情之前清除屏幕有什么好处?getch()
电话也不是必须的,但在某些系统上是默认的运行程序的方法导致窗口一旦终止就关闭。)