#include<stdio.h> #define PI 3.14 int main() {float s,v,r,h; scanf("r=%lf,h=%lf",&r,&h); s=PI*r*

#include<stdio.h>#definePI3.14intmain(){floats,v,r,h;scanf("r=%lf,h=%lf",&r,&h);s=PI*... #include<stdio.h>
#define PI 3.14
int main()
{float s,v,r,h;
scanf("r=%lf,h=%lf",&r,&h);
s=PI*r*r;
v=PI*r*r/3;
printf("s=%lf,v=%lf",s,v);
}
大神,我求面积和体积,哪里有问题,怎么出了负数?
展开
 我来答
百度网友c1994c5f8
2018-04-30 · TA获得超过1332个赞
知道小有建树答主
回答量:264
采纳率:89%
帮助的人:209万
展开全部

1、scanf函数不能像printf函数那样写,这样写是有问题的:scanf("r=%lf,h=%lf",&r,&h);

这种情况下,假设r=1和h=1,如果你输入的时候不完整输入r=1,h=1然后回车,那么r和h都不能获得正确的输入值。所以按最简单的写法就好了:scanf("%f%f",&r,&h); 输入时用空格分隔两个数。

2、scanf 和 printf 格式串中的修饰符,如果和变量定义的类型不一致,会因为类型转换导致读取或输出的值不正确,所以既然定义为 float,就应该只用 %f 而不要用 %lf

3、球体积公式是 v=4/3*PI*r*r*r,定义的变量 h 没有使用。

4、类似3.14这样的浮点常量,默认类型是double。如果想统一类型为float,严格来讲应该写成3.14f,不过问题不大。

整理后代码如下:

#include<stdio.h>

#define PI 3.14

int main()
{
 float s, v, r, h;
 scanf("%f%f", &r, &h);
 s = PI*r*r;
 v = 4.0 * PI*r*r*r / 3;
 printf("s=%f,v=%f\n", s, v);
}
White_MouseYBZ
2016-10-25 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:7043万
展开全部
scanf("r=%lf,h=%lf",&r,&h);这种写法在输入r和h时要如下写才能得到正确的值,比如要给r赋3.3,给h赋12.8——
r=3.3,h=12.8回车!
最好写成scanf("%lf%lf",&r,&h);,""除了标准控制符外不附加任何符号,想要提示的话在前面用printf提供……
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式