1. 程式人生 > >整數的位數及列印

整數的位數及列印

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