作业帮 > 数学 > 作业

请输入任意一个正整数n,求出该数字为几位数字.

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/07/07 15:51:53
请输入任意一个正整数n,求出该数字为几位数字.
本人初学者,麻烦大大给出详细的步骤,及其步骤说明,
解决的办法很多.
楼主想用程序的办法来解决吗?
我写个伪代码给你参考下.
i = 1
while(n / 10 > 0)
{
i = i + 1
n = n / 10
}
print i
这里算出来的i就是n的位数.
如果有什么不明白了,
再问: 我说说我的程序给你听 input"输入一个正整数" to n m=0 do while n!=0 n=int(n/10) m=m+1 end do ?"该数为"m,位数 这是老师讲的,但我不是很明白n=int(n/10)这里,麻烦解释下行吗,为什么要除以10来取整
再答: 除以10的解释: n退出循环的条件是n == 0,这里要看你语言来,n/10如果他返回的是int型,就不用取整,相当于自动取整.如果n/10返回的是float型,那么你这个循环就会出错.你的程序貌似是basic的,好像basic不会自动取整,所以要你加上强制转换int 打个比方吧,假如我的n是等于321的 执行完第一次循环后 n = 32 执行完第二次循环后 n = 3 执行完第三次循环后 n = 0, 然后就推出循环了. 如果不取整,就会这样. 执行完第一次循环后 n = 32.1 执行完第二次循环后 n = 3.21 执行完第三次循环后 n = 0.321 执行完第四次循环后 n = 0.0321 执行完第五次循环后 n = 0.00321 .... 执行完第很多次循环后 n = 0.00......0321 要过很久才会退出循环,这样算出的结果就不对了
再问: 你是不是讲复杂了啊,我只是问干嘛一个正整数要除以10再取整,这个不是意味着少了一位吗?在这里有什么具体意义啊
再答: 恩,是少了一位.你看我上面写的. 打个比方吧,假如我的n是等于321的 执行完第一次循环后 n = 32 执行完第二次循环后 n = 3 执行完第三次循环后 n = 0, 然后就退出循环了. 简单来说计算数字n除以10多少次让他变成0,这个次数就是这个n的位数.
再问: 这下总算是明白了,谢谢啊,再问一个问题:求出表达式S=1+2+3+4+·······n的值,直到n为20时结束,我给出的程序是这样的: clear s=0 这里不明白为什么s=0,初值s不是最小也是一吗,为什么却是0 n=1 do while n!=20 s=s+n 不明白这里为什么总值等于总值加n n=n+1 end do ?"表达式值为:”,s cancel 就这两个地方不是很懂,后面发现很多循环的题都有这样的推导公式,麻烦帮我解答下
再答: s是求和的值的放的地方.n是计数器. 你应该是把s和n弄混淆了吧. 所以,刚才是没有算的时候s是等于0的. 执行完第一次循环后s = 1 执行完第一次循环后s = 1 + 2 执行完第一次循环后s = 1 + 2 + 3