题目是随意输入一个数求其位数,的确有更简便的方法,但是为什么这张代码运行出来结果永远是1 ?再不济也是1.000000吧
2条回答 默认 最新
- 庞加莱的算法空间 2023-11-14 19:54关注
嗯,我感觉你的这个思路还挺不错的哈,先看number大约是10的多少次幂,然后用log把这个次幂给取出来。不过有个小问题,就是number在声明的时候是double,但是scanf的时候又是%d(整型),这样的话虽然屏幕输入的是2333,但是这种"错位"的声明会导致底层解析的时候,number并不是预期的值了(具体是多少,这个我原理我就不懂了)。你可以尝试把number改成int number,我跑了你的代码,输出就是4了哈
就把最开始变量声明这里改成下面这样试试,其他地方可以先不动
double u,j,i; int number;
另外就是一般写作int main(),写成double main()我理解也行,不过我看大部分都是int main()哈
(然后还有,你这个思路虽然也不错,不过因为用了log可能会有边界case哈,就是可能会出现输入的是x位数,但是代码输出是x-1或者x+1之类的)本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 关于将inet引入的相关问题
- ¥15 关于一个倒计时的操作和显示设计
- ¥15 提问STK的问题,哪位航天领域的同学会啊
- ¥15 苹果系统的mac m1芯片的笔记本使用ce修改器使用不了
- ¥15 单相逆变的电压电流双闭环中进行低通滤波PID算法改进
- ¥15 关于#java#的问题,请各位专家解答!
- ¥15 如何卸载arcgis 10.1 data reviewer for desktop
- ¥15 共享文件夹会话中为什么会有WORKGROUP
- ¥15 关于#python#的问题:使用ATL02数据解算光子脚点的坐标(操作系统-windows)
- ¥115 关于#python#的问题:未加密前两个软件都可以打开,加密后只有A软件可打开,B软件可以打开但读取不了数据