整数的位数及打印

(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;
   }
}

猜你喜欢

转载自blog.csdn.net/w1216702236/article/details/83066529