马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#include <math.h>
void main()
{
double a,b,c,s,area;
scanf("%lf,%lf,%lf",&a,&b,&c);
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%7.2g,b=%7.2g,c=%7.2g,s=%7.2g\n",a,b,c,s);
printf("area=%7.2f\n",area);
}
关于上面的代码我想问:1.为什么输入的时候需要用“,”隔开,我用空格就出现乱七八糟的数,为什么我在做有些例题的时候用空格是可以的。
2.为什么在输入的那行后面一定要加"&",我试了下不加为什么就不可以,我只知道是地址的意思,但是我不是特别理解,百度了下,解释的意思也不太明白,就是酒店房间号之类的,也不是特别明白,请大神指点。
3.我百度了下printf那行的"g"是去掉多余的0的意思,如果是这样的话不是跟7.2冲突了吗?7.2中的2不是保留两位有效数字吗?我打印了下,a b c的值是去掉零的,为什么是按照"g"执行的。
PS:我知道我问的问题很低级,但是还是希望大神能回答下,谢谢
1.你自己设定的输入格式是 scanf("%lf,%lf,%lf",&a,&b,&c); 一个数一个逗号,你要是想用空格就scanf("%lf %lf %lf",&a,&b,&c);
2.这个是规范,大致的意思是你去酒店,你去和人家说开房,她说开好了,这个时候你要把你的行李放进去,是不是要有一个具体的地址,比如401什么的,你找到这个地址才能放东西进去呀。不然你就只知道开好了在这个酒店,但是房间号是什么?
3..precision(.精度,可选),通过点号(.)分隔字段的宽度和精度
对于字符串,它指定打印的字符的最大个数
对于整数,它指定打印的数字位数(必要时可加填充位 0 以达到宽度要求)
对于转换字符为 e、E 或 f,它指定打印的小数点后的数字位数
对于转换字符为 g 或 G,它指定打印的有效数字位数
就是说,要是保留两位,但是两位都是0没用的就去掉了,你可以输入下1.2什么的,就会保留呀
参考帖子: http://bbs.fishc.com/forum.php?m ... peid%26typeid%3D583
|