1. 程式人生 > >計算數字是幾位數並將每位數字逆序輸出

計算數字是幾位數並將每位數字逆序輸出

這道題對於C語言初學者來說,算是一道比較經典的題目了,然後為了加深鞏固知識點,將這道題整理進我的部落格

例題.給出一個不多於5位的正整數,要求: 求出它是幾位數; 分別輸出每一位數字; 按逆序輸出各位數字,例如原數為321,應輸出123。 先看第一問,求n是幾位數,n的取值可以是5,4,3,2,1。N的值如何得到呢,可以通過如下迴圈來實現:

int Count(int n)
{
	int count=0;
	if(n==0)
	{
		return 1;
	}
	while(n!=0)
	{
		n/=10;
		count++;
	}
	return count;
}

值得注意的是,不能忘記了0這個特殊元素,當n=0是,執行上述程式結果會是0,但是0顯然是一位數。

再看第二問,分別輸出每一位的數字,這一步的前提是如何求出每一位的數字。其功能可以通過下面程式碼實現:

void PrintOrder(int n)
{
	unsigned char figures = Count(n);                         /*  獲取n的位數                      */
	int power = (int)pow((float)10,(float)figures-1);              /*  獲取n最高位數字需要除模的數字    */
	int temp;

	if (0 == figures)                                              /*  n為0                             */
	{
		printf("0\n");
	}

	if (n < 0)                                                     /*  n小於0先列印“-”再處理數值      */
	{
		n = -n;
		printf("-");
	}

	while(power != 0)
	{
		temp = n / power;
		n %= power;
		power /= 10;
		printf("%d",temp);
	}
	printf("\n");
}

第三問是在第二問的基礎上,對第二問獲得的結果進行逆序輸出,程式碼如下:

void PrintReverse(int n)
{
	int temp;

	if (0 == n)                                                    /*  n為0                             */
	{
		printf("0\n");
	}

	if (n < 0)                                                     /*  n小於0先列印“-”再處理數值      */
	{
		n = -n;
		printf("-");
	}

	while(n != 0)
	{
		temp = n % 10;    
		n /= 10;
		printf("%d",temp);
	}
	printf("\n");
}

以上內容便是我對這道關於數位的例題的整理,希望對你能夠有所幫助,下次再見!