1. 程式人生 > >C語言基礎 求輸入的數字是幾位數

C語言基礎 求輸入的數字是幾位數

問題:任意輸入一個整數,求這是一個幾位數字? 思路:每次除以10,則去掉一位數,統計一次。經過迴圈,直到最後一位數,除以10為0,停止迴圈,停止統計。

程式碼: (1)使用for迴圈

#include<stdio.h>

int Count(int n)
{
	int i;

	if(n==0)
	{
		i=1;
	}

	for(i=0;n!=0;i++)
	{
		n/=10;
	}
	return i;
}

int main()
{
	printf("這是一個 %d 位數",Count(123456));

	return 0;
}

(2)使用do–while迴圈

int Count(int n)
{
	int tmp=0;

	do
	{
		n/=10;
		tmp++;
	}
	while(n!=0);

	return tmp;
}

區別:若使用for迴圈則需要特別考慮無法進入迴圈的數字“0”,do–while迴圈則始終會執行一次,至少統計一次,所以不需要單獨討論“0”

問題引申:用20進製表示123,則為幾位數? 用5進製表示123,則為幾位數?

解決關鍵:如上述題,用十進位制表示,統計位數,每次除以十。 本題用20進位制則除以20,用5進製表示則除以5。

10進位制 123=1*(102)+2*(101)+3*(100) 三位數 5進位制 123=4*(52)+4*(51)+3*(50) 二位數 20進位制 123=6*(201)+3*(200) 三位數