一、 求位數
基本思路:每次丟棄數字的個位數字,同時定義乙個計算器count,初始化化為零來記錄個位數字丟棄的次數,每丟棄一次,計數器加一。其中,丟棄的次數即計算器最終的值就是這個數字的位數。例如:12345,需要丟棄五次,計數器count最終值為5,即12345的位數為5。
具體操作見下表:(對數字12345舉例)
數字n保留丟棄後數字操作
丟棄後數字
count
12345
12345/10
1234
11234
1234/10
1232
123123/10123
1212/1014
11/1005
操作的總結
count++
n/10
count++
由上圖可知:求乙個數的位數可利用迴圈,將數字n/10便可丟棄最後一位,並且將n/10賦給n,帶入下一次迴圈,同時count++。迴圈結束條件為當n等於0時。此時應當考慮當輸入n為0的特殊情況,此情況有兩種解決辦法:
i、用if語句進行判斷,當n等於0時,輸出位數為1。
ii、用do while迴圈,此迴圈可以保證至少執行一次。
二、 逆序輸出
基本思路:將第一問中丟棄的個位數字在丟棄前輸出一下即可。例如:對於整數12345,每次將個位數字丟棄前列印一下,便可得到逆序輸出序列「5、4、3、2、1」。
具體操作見下表:(對數字12345舉例)
數字n丟棄個位操作
丟棄的個位
保留丟棄後數字操作
丟棄後數n
12345
12345%10
512345/10
1234
1234
1234%10
41234/10
123123
123%10
3123/10
1212
12%10
212/1011
1%10
11/10
0操作總結
n%10
printf
n/10
n=n/10
由上圖可知:首先利用n%10可得到整數個位數字,接著將其列印,最後利用n/10得到丟棄個位數字後的n,並將其賦給n,帶入下一次迴圈。迴圈結束條件為當n等於0時。基本思路與求位數相似,只是多了利用n%10得到個位數字,並將其列印的操作。
三、 正序輸出
1、首先對於數字12345舉例,尋找規律。
數字n丟棄第一位操作
第一位數字
保留丟棄後數字操作
丟棄後數n
pow12345
12345/10000
112345%10000
2345
10000/10
2345
2345/1000
21234%1000
3451000/10
345345/100
3123%100
45100/10
4545/10
412%10
510/10
55/1
55%1
0操作總結
n/pow
printf
n%pow
n=n/10
pow=pow/10
由上圖可知:首先利用n/( 10^(位數-1) )可得到整數的第乙個數字,接著將其列印,最後利用n%( 10^(位數-1) )得到丟棄第一位數字後的n值,並將其賦給n,帶入下一次迴圈。迴圈結束條件為當n等於0時。其中的位數的值,可以通過呼叫求位數的函式。
四、 **實現
int count(int n)
while(n != 0)
return tmp;
}void printreverse(int n)//逆序輸出
printf("\n");
}void printorder(int n)
while(n != 0)
printf("\n");
}int main()
求乙個數字的位數,輸出正序反序
給出乙個正整數,要求1.求該數的位數 2.正序輸出每一位數字 3.倒序輸出每一位數字。include include 對正整數進行計數操作,統計時採用統計一位,丟棄最低位的計數方式 intcount int n return count 對正整數進行正序列印,通過呼叫計數函式實現,採用列印最高位,捨...
正序逆序輸出正整數中各位數字
一 輸出整數各位數字 求出它是幾位數 分別列印出每一位數字 按逆序列印出各位數字。define crt secure no warnings include include intgetdigit int num 整數有多少位 return count void reprintnum int num...
輸入乙個數判斷它是幾位數,並逆序和正序將各位數輸出
1 解題思路 1 首先,想要判斷這個數是幾位數,就是不斷地把原數字的個位採用對10取餘的方式得到後再剝離出,例如原數字是123,第一次對10取餘得到3,然後剝離3,就是把123對10取整,得到12,此時數字少了一位,就對位數統計加一,一直迴圈,直到剝離出所有數字。2 然後是逆序輸出各個位的數字,這個...