(1)求一个整数的位数 //计数器
例如: 12345
思路如下:
12345——>1234——>123——>12——>1
每次丢弃个位;直到 n 等于0
重点: 十进制数,要丢弃个位就是整除10,
那么如果要将一个十进制数转为十六进制有多少位???
由此发现, 十六 进制数整除16; n 进制数整除 n
代码如下:
int Count( int n)
{
int tmp = 0; // 位数
if( n = 0)
{
return 1;
}
while ( n != 0)
{
n /= 10; //丢弃个位
tmp++;
}
return tmp;
}
(2)将一个整数的各位逆序输出
思路如下:
在(1)函数中 在将个位丢弃前将其打印出来
代码如下:
void PrintReverse( int n)
{
while(n != 0)
{
printf("%d ",n/10);
n /= 10;
}
printf("\n");
}
(3)将一个整数的各位顺序输出
例如:12345
思路如下:12345——>2345——>345——>45——>5
12345%10000 //10的4次方*
2345%1000 //10的3次方*
345%100 //10的2次方*
45%10 //10的1次方*
每次 n % (10的 n的位数减1次方),要打印的数字就是 n/(10的 n的位数减1次方)
代码如下:
void PrintOrder(int n)
{
int x=1;
int m = Count(n) //调用(1)
for(int i =0; i< m-1;i++)
{
x*=10;
}
while( n != 0)
{
printf("%d ",n/x);
n%=x;
}
}