天天看點

輸入一個數判斷它是幾位數,并逆序和正序将各位數輸出

判斷一個數是幾位數,并逆序和正序輸出各位數字

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

小白作者自我吐槽:天生語言組織能力很撈,啰裡啰嗦,若是有看不明白的部分可以留言,我盡全力解決!