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

时间:2012-01-29 07:49:40

标签: c turbo-c math.h sqrt

我搜索了类似于我的问题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

3 个答案:

答案 0 :(得分:4)

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

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

这与printf()形成鲜明对比,%f类型推广允许floatdouble同时使用{{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()电话也不是必须的,但在某些系统上是默认的运行程序的方法导致窗口一旦终止就关闭。)