計算數字是幾位數並將每位數字逆序輸出
阿新 • • 發佈:2018-12-19
這道題對於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"); }
以上內容便是我對這道關於數位的例題的整理,希望對你能夠有所幫助,下次再見!