用 Haskell 求解 ACM 競賽題(3):順序結構程式設計
阿新 • • 發佈:2018-11-10
三位數反轉
例題 三位數反轉:輸入一個三位數, 分離出它的百位、 十位和個位,反轉後輸出。
樣例輸入: 127
樣例輸出: 721
【分析】 首先將三位數讀入變數 n, 然後進行分離。 百位等於 n/ 100( 注意這裡取的是商 的整數部分),十位等於 n/10% 10(這裡的%是取餘數操作),個位等於 n%10。程式如下:程式1-6三位數反轉
C 語言程式碼如下:
#include <stdio.h> int main() { int n; scanf("% d", &n); printf("% d% d% d\ n", n% 10, n/ 10% 10, n/ 100); return 0; }
Haskell 程式碼如下:
main = do
s <- getLine
let n = read s :: Int
return ((mod n 10) * 100 + mod (div n 10) 10 * 10 + div n 100)
哈哈,Haskell 程式碼終於比 C 語言看起來舒服一些了。
交換變數
例題 交換變數: 輸入兩個整數 a 和 b, 交換 二者 的 值, 然後 輸出。
樣例輸入: 824 16
樣例輸出: 16 824
【分析】 按照題目所說, 先把輸入存入變數 a 和 b, 然後交換。 如何交換兩個變數 呢? 最 經典的方法是三變數法:
C 語言程式碼:
#include <stdio.h>
int main() {
int a, b, t;
scanf("% d% d", &a, &b);
t = a;
a = b;
b = t;
printf("% d %d\ n", a, b);
return 0;
}
Haskell 程式碼:
main = do a <- getLine b <- getLine let t = a let a = b let b = t return (a, b)
我覺得 Haskell 語言程式碼越來越漂亮了!