3

我搜索了与我的问题相似的问题Similar question 。但我的问题是使用 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

4

4 回答 4

4

scanf(),%ffloat. 您需要%lf用于double

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

这与printf()type-promotion 允许%f同时用于float和的情况形成对比double

于 2012-01-29T07:55:04.870 回答
2

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

#include <stdio.h>
#include <math.h>
#include <conio.h> /* I think */

最后一个用于clrscr()andgetch()调用;它们是非标准的,但我认为它们是在<conio.h>.

如果没有#include <math.h>,编译器将假定sqrt()返回int结果而不是double.

(旁白:你为什么打电话clrscr()?在做任何其他事情之前清除屏幕有什么好处?getch()调用也不是绝对必要的,但在某些系统上,运行程序的默认方法会导致窗口尽快关闭因为它终止。)

于 2012-01-29T09:47:27.137 回答
2

尝试这个 :

   scanf("%lf",&a);

或将变量 a 更改为浮点数:

 float a;
于 2012-01-29T07:54:59.627 回答
0

a在 float中声明变量,result在 double 中声明变量,并使用math.h头文件。
并用于获取输入("%f", &a);以获取输入
,然后以格式result = sqrt(a);
打印结果, 它在 turbo c 中完美运行"%lf"

于 2022-01-29T03:02:29.580 回答