1. 程式人生 > >#巧用"/"和"%"解決實際

#巧用"/"和"%"解決實際

在使用“/”和“%”中,主要存在兩個問題 1:區分不清楚;2:在解決問題使不能充分的利用這兩個運算子。

  • 基本概念:
    [1 ] “/” 表示除法;兩個整數相除的結果為整數,所以想要得到float型別或double型別,需要進行數值轉換或將分子乘以1.0;
    e.g:
    5/3=1;(5*1.0)/ 3=1.666667;

    [2 ] "%"表示求餘數;%運算子要求運算的運算物件為整數,結果也為整數;要注意負數的求餘和正數不一樣。
    e.g:
    8%3=2;
    -5%3=-1;
    5%-3=1;

  • 利用這兩個運算子:一般用於解決求整數位數,順序輸出,逆序輸出,水仙花數,完數問題,在具體問題裡這兩個運算子的用法:
    [1 ] 對於整數n來說,n/10表示n除10,如123/10=12,223/10=22,從結果看到它丟掉了後面的數字,即有:
    n/(10的i次方)=丟掉 n 後面的 i 位數,保留前面的數
    e.g:
    12345/10000=1;
    2345/1000=2;
    1234/100=12;

[2 ] 對於整數n來說,n%10表示n對10求餘,如123%10=3,234%10=4,從結果看到它丟掉了前面的數,保留了最後一位,即有:
n%(10的i次方)=保留後面的i位數,丟掉前面的數
e.g:
12345%10000=2345;
345%100=45;
67%10=7;

  • 解決應用問題
    [ 1 ] 問題:給一個任意整數,求:
    (1)它是幾位數;
    (2)按逆序輸出個位數字,例如123輸出321;
    (3)分別順序輸出每位數字;
    [ 2 ] 解決:
    (1)求位數
    ****思路:
    求一個數為幾位數,採取丟數字的方法,每次丟掉後面的一位保留前面的,直至到0,所以我們利用除法“/”,設定一個累加器,丟一次加一下,最後累加器的值即表示它為幾位數。如下圖

    ****程式碼:
    在visual上編譯程式碼執行如下圖
    在這裡插入圖片描述

(2)按逆序輸出個位數字,例如123輸出321;
****思路:
在第一問求位數時,每次都用“/”丟掉最後一位,現在我們需要逆序輸出,可以在它丟掉數字前先使用一下,即保留後面的數字,丟掉前面的,所以用運算子“%”,得到最後一個數後,丟掉,再求倒數第二個數輸出。如下圖
在這裡插入圖片描述
****程式碼:
在visual上編譯程式碼執行如下圖
在這裡插入圖片描述
(3)分別順序輸出每位數字;
****思路:要順序輸出每一位數字,即將前面的數字輸出,再捨棄第一位,求得第二位數字再輸出,再捨棄,重複這樣的工作,直至n=0,但若n的位數不確定,就不能得到第一位,第二位,因為我們得到第一位的辦法是用“/” n/(10的i次方)=丟掉 n 後面的 i 位數,保留前面的數,所以先呼叫第一個函式求出位數,再進行求解。如下圖
在這裡插入圖片描述


****程式碼:
在visual上編譯程式碼執行如下圖
在這裡插入圖片描述

  • 總結:
    相信你現在一定對“/”和“%”的用法瞭如指掌了吧,在用的時候一定要注意相關事項哦!