1. 程式人生 > >c語言入門—數字倒序

c語言入門—數字倒序

題目
程式每次讀入一個正三位數,然後輸出逆序的數字。
注意,當輸入的數字含有結尾的0時,輸出不應帶有前導的0。比如輸入700,輸出應該是7。

回答
分析:我們可以通過十進位制的取整取餘特點來分別取到個位、十位、百位的數字
百位:a/100; 對a 進行除以100 那麼可以取到百位
個位:a%10;對a 進行10 的取餘那麼一定會取到最後一位(即個位)
十位:最最複雜的就是取十位 的數字 其實由取一頭(百位)一尾(十位)可以知道 我們可以將三位數變成兩位數,然後對兩位數取餘就可以取到十位的數字不是嗎?表示式: a/10%10;
程式碼如下

  int main()
 {
    int a  = 100
; printf("請輸入一個三位數:\n"); scanf("%d",&a); int baiwei = a / 100; //百位 int shiwei= (a / 10) % 10; // 十位 int gewei = a % 10;// 個位 printf("倒序後結過是:%d%d%d", gewei, shiwei, baiwei); return 0; }

但是執行結果會發現
結果會將100 顯示成 001
那麼開動你們的小腦袋就可回想起來0乘以任何數都等於0,那麼利用這個 特性,我們可以把程式改成如下形式以消除開頭位置上的0

  int
main() { int a = 100; printf("請輸入一個三位數:\n"); scanf("%d",&a); int baiwei = a / 100; //百位 int shiwei= (a / 10) % 10; // 十位 int gewei = a % 10;// 個位 /*雖然我們取到了各個位置上的數字但是我們怎麼把0去掉呢?? 數學中 0*任何數都等於0 利用這個這個特性可以將 前面的0 去掉 */ printf("倒序後結過是:%d", gewei * 100 + shiwei * 10 + baiwei); return
0; }

哈哈!收工。