整數的位數及列印
阿新 • • 發佈:2018-11-10
(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次方)
程式碼如下:
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;
}
}