ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Day1记录C语言学习心得

Day1记录C语言学习心得 1.学习了在C语言中的进制转换牛客入门级刷题心得1.如注释所写表示八进制是字母小写o而不是0被豆包骗了,还是自己尝试之后发现豆包欺人太甚唉然后就是十六进制用x表示需要表达后的十六进制是大写的则用X小写的则用x。2.需要有前缀0的加上#号2.遇到了类似精度的问题发现问题:某一段输入21.195竟然四舍五入成了21.19这是编译器的问题还是函数的问题目前不知道,于是询问ai试图解决问题,将float函数改成double。修改之后发现scanf中的赋值应该从%f-%lf这个为规范性问题我没有意见但是为什么又出现了精度问题这个编译器太笨了么难道然后在解题的栏目中也没有看到很正确的解决方式这个将作为一个疑点放在这里希望有大佬可以帮忙解决一下谢谢大家了询问AI后得到的代码示例如下:得到了解决 竟然是真的要使用math.h中的round这貌似是最权威的解法了。3.关于计算的问题问题:一直在蒙蔽为什么输出的值一直都是零原来在定义完初始值之后不可以立刻进行计算因为此时并未进行任何的输入所有的值都是0所以得到的a始终为0。解决方法尝试将计算放在printf中自作聪明了一把。。首先一开始的c和d最好是不要再定义初始值0了哈。第二个就是(d/c)是大忌如果这么计算的话因为d和c都是整形再进行/的计算就会变为0因为都是小于1那么进行/的计算之后都为0。依旧是白忙活所以应该把(d/c)给去掉然后只保留(float)那么就是先强制性转换d将其变为浮点数再进行计算。以上为错误示范我先放在这里了让自己长记性。4.复读机问题错误清单1.在要输入长整形的时候应该使用long long 来定义这个整形并且最后输入和输出的时候使用%lld2.由于char类型会读取空格则在%f读取完含有小数的数据例如311.34的时候在读取完数据后缓冲区中还存在\n没有读取那么下一个数据%c将会继续读取所以需要使用getchar把上一个数据中残余的\n消除重新进行读取。否则将导致后续的程序出现大错误感觉这个好细节会不会在实际工作过程中也有人犯过类似的错误5.反向输出应该怎么解决0不输出的一个问题呢直接打印输入的数字而不进行数学计算因为如果进行数学计算则第一个0原则上不存在那么直接把数字进行搬运正确的
返回列表