c程序中的输出错误为零
我正在学习C语言,我决定制作一个文件,一旦用户给出球体的半径,它将计算球体的表面积和体积。但是,当我试图通过键入来编译程序时:c程序中的输出错误为零,c,C,我正在学习C语言,我决定制作一个文件,一旦用户给出球体的半径,它将计算球体的表面积和体积。但是,当我试图通过键入来编译程序时: gcc-Sphere.c-lm-o-Sphere 当我被提示输入半径时,SA和V输出总是为零。这是怎么回事?我可能忽略了一些简单的事情。这是我的密码: #包括 #包括 双主 { 双rad; 双sa,vol; 常数双pi=3.141592654; printf(“输入球体的半径:\n”); 扫描频率(“%f”、&rad); vol=(4.0/3.0)*pi*(功率(
gcc-Sphere.c-lm-o-Sphere
当我被提示输入半径时,SA和V输出总是为零。这是怎么回事?我可能忽略了一些简单的事情。这是我的密码:
#包括
#包括
双主
{
双rad;
双sa,vol;
常数双pi=3.141592654;
printf(“输入球体的半径:\n”);
扫描频率(“%f”、&rad);
vol=(4.0/3.0)*pi*(功率(rad,3));
sa=4.0*pi*(功率(rad,3));
printf(“球体体积为%.3f”,体积);
printf(“\n球体的表面积为:%.3f”,sa);
返回0;
}
您使用了错误的scanf()
说明符
double
的正确说明符是“%lf”
,并且scanf()
返回一个您忽略的值,该值可能导致未定义的行为
另外,main()
没有您使用的签名,它返回一个int
,而不是double
或其他任何东西,因此如果您按以下方式修复,代码将正常工作
#include <stdio.h>
#include <math.h>
int main(void)
{
double rad;
double sa, vol;
const double pi = 3.141592654;
printf("enter the radius of the sphere: \n");
if (scanf("%lf", &rad) == 1)
{
vol = (4.0/3.0)* pi *(pow(rad,3));
sa = 4.0 * pi * (pow(rad,3));
printf("Volume of sphere is: %.3f", vol);
printf("\n Surface area of sphere is: %.3f", sa);
}
else
fprintf(stderr, "Invalid Input\n");
return 0;
}
这会让你知道你有时可能犯的愚蠢错误
编辑:
正如@在下面的评论中所注意到的,表面积公式有一个错误
A=4πr2
你有
A=4πr3
这是错误的。vim文件究竟是什么
main()
不会返回double
,用gcc-Wall-Werror-g3-O0-Sphere.c-o-Sphere-lm
编译你的代码,看你的编译器会对你大喊大叫。vim
是一个文本编辑器,这是不相关的。@FiddlingBits我知道vim是什么。@iharob个人,我更喜欢emacs
文件。)我从来没有得到它,我知道有一个emacs命令,虽然我喜欢vim。耶!成功了!是的,我知道我忽略了一些我还没有学到的东西。谢谢。sa=4.0*pi*(功率(rad,3));//这里的错误:(rad,2)不是(rad,3);)@A.S.H是的,它与问题无关,但它是正确的,它必须是平方的,而不是表面积的立方。是的,这不是问题,但我认为它会有用,因为我注意到它也感谢它,尽管我确实注意到,一旦我看到输出。