鱼C论坛

 找回密码
 立即注册
查看: 2045|回复: 9

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

[复制链接]
发表于 2017-10-11 22:18:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

最佳答案
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?m ... peid%26typeid%3D583
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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?m ... peid%26typeid%3D583
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

感谢热心大神,也就是说在输入的时候一定要加上&对吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-11 23:00:52 From FishC Mobile | 显示全部楼层
duzunchong 发表于 2017-10-11 22:52
感谢热心大神,也就是说在输入的时候一定要加上&对吧?

对,但是也有不要的。数组的名字可以代表地址,就可以不要加
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-11 23:06:21 | 显示全部楼层
丶忘却的年少o 发表于 2017-10-11 23:00
对,但是也有不要的。数组的名字可以代表地址,就可以不要加

好的,感觉自己差的太多了,慢慢来吧,再次谢谢您
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-11 23:11:06 From FishC Mobile | 显示全部楼层
duzunchong 发表于 2017-10-11 23:06
好的,感觉自己差的太多了,慢慢来吧,再次谢谢您

不用客气,刚学是这样,个把月就会了,但是深入要花点功夫。每天坚持学,巩固下学过的,多打代码,慢慢的就会了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

不好意思,我还想问下您,如果我想把\n  打印出来应该在它前后加个什么可以实现?因为这个问题太小了,实在不好意思开帖子,所以又麻烦您了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

什么都不加,就是在printf的语句里写就好了,你可以多写几个\n看看,就是换行,多写多换,也可以单独printf("\n");
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

不是,我的意思是想让“\n”以文字的形式打印出来该怎么办  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-12 19:09:03 | 显示全部楼层
duzunchong 发表于 2017-10-12 17:46
不是,我的意思是想让“\n”以文字的形式打印出来该怎么办

printf("\\n");
直接这样,反斜杠大法。来自帖子:http://bbs.fishc.com/forum.php?m ... peid%26typeid%3D584
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-28 16:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表