Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 我将一个双整数输入到一个等式中,但一直得到0_C - Fatal编程技术网

C 我将一个双整数输入到一个等式中,但一直得到0

C 我将一个双整数输入到一个等式中,但一直得到0,c,C,我对C编程相当陌生,遇到了一个小问题 我输入0.05作为双浮点数,并通过解决方案图片中给出的公式运行它,以获得答案0.06242。但是,无论输入什么,我都会得到0.000000。有人能解释一下我的代码是否有问题,或者解释一下我在scanf和printf中是否正确使用了“%lf”吗?谢谢 #包括 #包括 #包括 main(){ 双猜测,pow1,pow2,pow3,估计; printf(“键入根的初始猜测(对于这种情况,键入0.05):”; scanf(“%lf”,&guess); printf

我对C编程相当陌生,遇到了一个小问题

我输入0.05作为双浮点数,并通过解决方案图片中给出的公式运行它,以获得答案0.06242。但是,无论输入什么,我都会得到0.000000。有人能解释一下我的代码是否有问题,或者解释一下我在scanf和printf中是否正确使用了“%lf”吗?谢谢

#包括
#包括
#包括
main(){
双猜测,pow1,pow2,pow3,估计;
printf(“键入根的初始猜测(对于这种情况,键入0.05):”;
scanf(“%lf”,&guess);
printf(“使用解决方案中的公式计算根估计…\n”);
pow1=pow(猜测,3);
pow2=0.165*pow(猜测为2);
pow3=3*pow(猜测为2);
估算=猜测-((pow1-pow2+0.0003993)/(pow3-0.33*猜测));
printf(“估计=%lf\n”,估计);
}
存在
main()
而不是
int main(void)
意味着您使用的是一个称为C90的古老版本的C,而不是标准C,因为
main()
只会在古老的C90中干净地编译

C90不支持
printf
%lf
,只是作为编译器扩展。它只支持所有浮点类型的
%f
。这可以解释为什么会有奇怪的输出。看


通过获取更新的编译器和学习C的更新源来解决此问题。

逐行调试代码,看看值哪里出错了什么是“双整数”?不是双整数,是双整数float@DAGonz它不是整数输入,而是浮点输入。你明白整数和浮点之间的区别吗?我正在“最新”下载的codeblocks@DAGonzCodeblocks使用的Mingw gcc端口不一定要更新,因为它可能比gcc 5.0旧。它仍然是一个有点现代的编译器,但默认为C90。有关如何强制它运行现代标准C的描述,请参阅。我编译了这段代码,没有出现与
gcc-std=c18
有关的问题。它给出了一个警告,但编译并运行良好。@klutt与OP不同,那么你的观点是什么<代码>-std=c18在默认代码块安装中可能甚至不可用。幸运的是,近年来他们更新了gcc 5.0以外的版本。@klutt或者如果这是另一场“只需警告就可以编译”的辩论,我不会再这样了。阅读C17 5.1.1.3后,开始使用
-pedantic errors
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

main(){
    double guess, pow1,pow2,pow3, estimate;
    printf("Type in an initial guess of the root(for this case type 0.05):  ");
    scanf("%lf", &guess);

    printf("Calculating the root estimate using formula from solution...\n");
    pow1 = pow(guess, 3);
    pow2 = 0.165*pow(guess, 2);
    pow3 = 3*pow(guess, 2);

    estimate = guess - ((pow1 - pow2 + 0.0003993) / (pow3 - 0.33*guess));
    printf("Estimate = %lf\n", estimate);
}