哟喵uneko:c语言问题

来源:百度文库 编辑:高校问答 时间:2024/05/08 02:44:47
#include<stdio.h>
#define s(r,l,v) l=2*3.14*r;v=3/4*3.14*r*r*r
main ()
{int R,l,v;
scanf ("%d",&R);
s(R,l,v);
printf ("l=%f\nv=%f\n",l,v);

}
为什麼printf出
l=0.00000
v=0.00000
当我把int转成float
l=-NAN
v=-NAN
为什麼?>>

1:l,v要用double型
2:3/4得到0
这2个是问题所在

#include<stdio.h>
#define s(r,l,v) l=2*3.14*r;v=3*3.14*r*r*r/4

void main ()
{int r;
double l,v;
scanf ("%d",&r);
s(r,l,v);
printf ("l=%f\nv=%f\n",l,v);
}

define的用法如下:
#define a b
是用b代替a,注意中间有空格,用空格后的字符串代替空格前的。
如果没有,默认用0代替,它只是单纯的字符串替代。
s(r,l,v)和 s(R,l,v)不同,不能替代。
建议使用函数,不要经常使用define

v输出0是因为3/4作为整数除法返回是0,
l没看出来啊。

编程的问题还是调试一下好了。

但是这里的问题是输出应该用%d,
要不然就把l,v声明成float