判斷一個數是幾位數,并逆序和正序輸出各位數字
1、解題思路
(1) 首先,想要判斷這個數是幾位數,就是不斷地把原數字的 個位 采用對 10取餘的方式得到後再剝離出,例如原數字是 123,第一次對 10 取餘得到 3,然後剝離 3 ,就是把 123 對 10 取整,得到 12 ,此時數字少了一位,就對位數統計加一,一直循環,直到剝離出所有數字。
(2) 然後是逆序輸出各個位的數字,這個就簡單了,剛才數位數的時候,就是從後往前剝離數字,你直接在循環體的後面加上一個輸出該數字的語句就行了。
(3) 最麻煩的就是這個正序輸出了,你想把它解決的話可以借用逆序輸出的思想,一位一位地剝離數字再輸出,但是這個得從最高位開始,應如何解決呢,比如 123 想把1 取出來,可以整除100就可以得到 1,這個整除的 100 可以了解為 10 的 原數字的位數減1 次方,但是想得到 2 就得把 1 去掉,就是對 100 取整,下一次就是對 10 取整,以此類推,就行了。
C語言代碼
#include<stdio.h>
#include<string.h>
#include<math.h>
int GetFigures(int n) //數位數
{
int count=0;
if(n==0)
{
return 1;
}
while(n!=0)
{
count++;
n/=10;
}
return count;
}
void PrintReverse(int n) //逆序輸出各位數字;
{
do
{
printf("%d ",n%10);
n/=10;
}while(n!=0);
printf("\n");
}
void PrintOrder(int n) //正序輸出;
{
int len = GetFigures(n);
int power = pow(10.0,len-1);
for(int i=0;i<len;i++)
{
printf("%d ",n/power);
n%=power;
power/=10;
}
printf("\n");
}
int main()
{
PrintOrder(12345); //正序輸出
PrintReverse(12345); // 逆序輸出
printf("%d\n",GetFigures(12345)); //
return 0;
}