1. 程式人生 > 其它 >P5705 【深基2.例7】數字反轉 題解

P5705 【深基2.例7】數字反轉 題解

P5705 【深基2.例7】數字反轉 題解

Content

給定一個一位小數\(n(100<n<1000)\),將數字反轉並輸出,如\(123.4\rightarrow 4.321\)

Solution

這裡運用到了一種巧妙的辦法,利用字串讀入。

為什麼這樣可以呢?

大家跳出數的包圍圈,仔細想想,\(123.4\rightarrow 4.321\),誒?不就是讀入字串並將其倒序輸出嗎?我們可以用另外一個數驗證:\(235.4\)。如果將其按照題目中的規則反轉,應該是\(4.532\),這就驗證了我們的想法是正確的。要證明也很簡單:設有個小數\(\overline{abc.d}\),那麼按照題目中的來的話,就是將原來那個數的小數部分提到整數部分,原來的整數部分提到小數部分,並將現在這個數的小數部分按照原來的數字中相反的順序輸出

。所以,反轉後的小數就是\(\overline{d.cba}\),正好是將原來的小數當作字串,求出來的就是字串的倒序表示。

Code

#include <cstdio>
#include <cstring>
using namespace std;

char c[17];

int main() {
	scanf("%s", c);
	for(int i = strlen(c) - 1; i >= 0; --i)
		printf("%c", c[i]);
	return 0;
}