duzunchong 发表于 2017-10-11 22:18:23

C语言渣渣小白遇到了点不明白的地方,请大神指教

#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:我知道我问的问题很低级,但是还是希望大神能回答下,谢谢{:10_256:}

丶忘却的年少o 发表于 2017-10-11 22:37:00

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?mod=viewthread&tid=66471&extra=page%3D1%26filter%3Dtypeid%26typeid%3D583

duzunchong 发表于 2017-10-11 22:52:20

丶忘却的年少o 发表于 2017-10-11 22:37
1.你自己设定的输入格式是 scanf("%lf,%lf,%lf",&a,&b,&c); 一个数一个逗号,你要是想用空格就scanf("%lf % ...

感谢热心大神,也就是说在输入的时候一定要加上&对吧?

丶忘却的年少o 发表于 2017-10-11 23:00:52

duzunchong 发表于 2017-10-11 22:52
感谢热心大神,也就是说在输入的时候一定要加上&对吧?

对,但是也有不要的。数组的名字可以代表地址,就可以不要加

duzunchong 发表于 2017-10-11 23:06:21

丶忘却的年少o 发表于 2017-10-11 23:00
对,但是也有不要的。数组的名字可以代表地址,就可以不要加

好的,感觉自己差的太多了,慢慢来吧,再次谢谢您{:10_256:}

丶忘却的年少o 发表于 2017-10-11 23:11:06

duzunchong 发表于 2017-10-11 23:06
好的,感觉自己差的太多了,慢慢来吧,再次谢谢您

不用客气,刚学是这样,个把月就会了,但是深入要花点功夫。每天坚持学,巩固下学过的,多打代码,慢慢的就会了

duzunchong 发表于 2017-10-12 16:12:02

丶忘却的年少o 发表于 2017-10-11 23:11
不用客气,刚学是这样,个把月就会了,但是深入要花点功夫。每天坚持学,巩固下学过的,多打代码,慢慢的 ...

不好意思,我还想问下您,如果我想把\n打印出来应该在它前后加个什么可以实现?因为这个问题太小了,实在不好意思开帖子,所以又麻烦您了

丶忘却的年少o 发表于 2017-10-12 16:16:53

duzunchong 发表于 2017-10-12 16:12
不好意思,我还想问下您,如果我想把\n打印出来应该在它前后加个什么可以实现?因为这个问题太小了,实 ...

什么都不加,就是在printf的语句里写就好了,你可以多写几个\n看看,就是换行,多写多换,也可以单独printf("\n");

duzunchong 发表于 2017-10-12 17:46:38

丶忘却的年少o 发表于 2017-10-12 16:16
什么都不加,就是在printf的语句里写就好了,你可以多写几个\n看看,就是换行,多写多换,也可以单独prin ...

不是,我的意思是想让“\n”以文字的形式打印出来该怎么办

丶忘却的年少o 发表于 2017-10-12 19:09:03

duzunchong 发表于 2017-10-12 17:46
不是,我的意思是想让“\n”以文字的形式打印出来该怎么办

printf("\\n");
直接这样,反斜杠大法。来自帖子:http://bbs.fishc.com/forum.php?mod=viewthread&tid=66479&extra=page%3D1%26filter%3Dtypeid%26typeid%3D584
页: [1]
查看完整版本: C语言渣渣小白遇到了点不明白的地方,请大神指教