關於數字處理,例如計算位數,以及輸出每位的數字,首先即是學會 「丟棄高位」和 「丟棄低位」。
例:給出乙個正整數 1
,求出它是幾位數 2
,順序輸出各位數字 3
,逆序輸出各位數字
c語言中,整數除以整數的結果必然為整數,如15/10=1,31/5=6 ,因此若是給定的正整數為n,我們可以用n/10來丟棄個位,直至當n==0時,丟棄了幾次個位,do while迴圈了幾次,n就是幾位數,定義count來儲存這個資料,作為返回值。
例:如n==1234,令n=n/10=123,count++,count==1,迴圈了一次
此時n==123,令n=n/10=12,count++,count==2,迴圈了兩次
此時n==12 ,令n=n/10=1,count++,count==3,迴圈了三次
此時n==1,令n=n/10=0,count++,count==4,迴圈了四次,n==0,停止迴圈,故1234是四位數
#include #include //求其是幾位數
int getfigures(int n)
while(n != 0);
return count;
}
用丟棄高位求得順序輸出各位數字的值,可知n除以n的(位數-1)的次方即可得到n的最高位,然後捨棄高位,即得餘數代入n,繼續重複上述方法至n==0時,可得每位數的值,這裡用c表示n的位數
例:定義power=pow(10.0,c-1)即10的c-1次方。
假如n==1234,則c==4,n/power即為1234/1000==1,得到高位進行輸出,進行取餘,令n=n%power即n=1234%1000=234,得到餘數234,此時位數降低了一位,234是三位數,故而令c-1==3
以此類推,n==234, 234/100==2,得到高位進行輸出,令n=234%100=34得到餘數34
n==34,34/10==3,得到高位進行輸出,令n=34%10=4得到餘數4
n==4,4/1==4,得到高位進行輸出,令n=4%1=0,此時n==0,停止迴圈。
//順序輸出各位數字
void printorder(int n)
while(n != 0);
printf("\n");
}
用丟棄低位求得逆序輸出各位數字的值,可知n%10的餘數即是n的最低位,進行輸出,接著用n/10來達到丟棄低位,輸出下一位的目的,重複上述,直至n==0停止迴圈
例:假如n==1234, 令n%10即1234%10==4,得到低位進行輸出,然後令n=n/10=123 捨棄低位
此時n==123, n%10=123%10==3,得到低位進行輸出,令n=n/10=12 捨棄低位
n==12, n%10=12%10==2,得到低位進行輸出,令n=n/10=1 捨棄低位
n==1, n%10=1%10==1, 得到低位進行輸出, 令n=n/10=0 捨棄低位,此時n=0,停止迴圈
//逆序輸出各位數字
void printreverse(int n)
while(n != 0);
printf("\n");
}
最後建立乙個主函式即可聯絡上面的函式解決本例題
int main()
19:02:02
以上為個人意見總結
若有不足或是錯誤,還望指點
基於數字處理的問題總結
數字處理是c語言中極為重要的乙個板塊,有關於數字處理常見的有以下幾個問題 1 統計輸入的數字n是幾位數 2 順序輸出每一位數字 3 逆序輸出每一位數字 則針對於以上問題我們常見的解法有 丟棄高位或者丟棄低位,得到高位或者得到低位,我們用到最多的便是整除與取餘。例題 給乙個不多於五位數的正整數,要求 ...
C C 數字處理函式總結
1.絕對值 標頭檔案 函式原型 int abs int x long abs long x double abs double x long double abs long double x float abs float abs 返回 x的絕對值 2.浮點數絕對值 標頭檔案 函式原型 double...
XDOJ 數字處理
標題 數字處理 類別函式與遞迴 時間限制 2s記憶體限制 1000kb 問題描述 編寫乙個程式,從鍵盤輸入乙個非零整數n 0 n 1000000000 對整數n進行如下處理 將整數的各位數字取出來相加,如果結果是一位數則輸出該數,否則重複上述過程,直到得到的結果為一位數,並輸出該結果。例如 n 45...