C語言基礎 求輸入的數字是幾位數
阿新 • • 發佈:2018-12-15
問題:任意輸入一個整數,求這是一個幾位數字? 思路:每次除以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) 三位數