一、問題:
程式每次讀入一個正三位數,然後輸出逆序的數字。注意,當輸入的數字含有結尾的0時,輸出不應帶有前導的0。比如輸入700,輸出應該是7。
二、分析:
問題的難點,在于如何分離這個正三位數的個位、十位、百位,那麼根據題意,我們可以設這個正三位數為m,分析如下:
- 個位:m % 10 取餘,獲得 個位;
- 百位:m / 100 取商,獲得 百位;
- 十位:
- 方法1:m / 10 % 10,先取商,再取餘,獲得 十位;
- 方法2: m % 100 / 10,先取餘,再取商,獲得 十位;
最後輸出 個位 * 100 + 十位 *1 0 + 百位 即可。
- 個位:ones
- 十位:tens
- 百位:hundreds
C語言如下:
#include <stdio.h>
int main()
{
int m = 0;
scanf("%d", &m);
int ones = m % 10;
int tens = m % 100 / 10; // OR int tens = m / 10 % 10;
int hundreds = m / 100;
int n = ones * 100 + tens * 10 + hundreds;
printf("%d", n);
return 0;
}
Python如下:
m = int(input())
ones = m % 10
tens = m % 100 // 10
# OR tens = m // 10 % 10
hundreds = m // 100
n = ones * 100 + tens * 10 + hundreds
print(n)
/ classic division returns a float
// floor division discards the fractional part
是以,此處使用 floor division // 。
總結:Python不需要聲明類型,代碼更少,寫起來比C舒服多了。