C语言基础 求输入的数字是几位数 | 您所在的位置:网站首页 › 输出0到9的数字是多少位 › C语言基础 求输入的数字是几位数 |
---------------------------------------start reading------------------------------------------------- 问题:任意输入一个整数,求这是一个几位数字? 思路:每次除以10,则去掉一位数,统计一次。经过循环,直到最后一位数,除以10为0,停止循环,停止统计。 代码: (1)使用for循环 #include int Count(int n) { int i; if(n==0) { i=1; } for(i=0;n!=0;i++) { n/=10; } return i; } int main() { printf("这是一个 %d 位数",Count(123456)); return 0; }(2)使用do–while循环 int Count(int n) { int tmp=0; do { n/=10; tmp++; } while(n!=0); return tmp; }区别:若使用for循环则需要特别考虑无法进入循环的数字“0”,do–while循环则始终会执行一次,至少统计一次,所以不需要单独讨论“0” 问题引申:用20进制表示123,则为几位数? 用5进制表示123,则为几位数? 解决关键:如上述题,用十进制表示,统计位数,每次除以十。 本题用20进制则除以20,用5进制表示则除以5。 10进制 123=1*(102)+2*(101)+3*(100) 三位数 5进制 123=4*(52)+4*(51)+3*(50) 二位数 20进制 123=6*(201)+3*(200) 三位数 ------------------------------------------------End------------------------------------------------------- |
CopyRight 2018-2019 实验室设备网 版权所有 |