c語言入門—數字倒序
阿新 • • 發佈:2019-02-14
題目
程式每次讀入一個正三位數,然後輸出逆序的數字。
注意,當輸入的數字含有結尾的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;
}
哈哈!收工。