用 Haskell 求解 ACM 竞赛题(3):顺序结构程序设计

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/quicmous/article/details/83904228

三位数反转

例题 三位数反转:输入一个三位数, 分离出它的百位、 十位和个位,反转后输出。

样例输入: 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 语言代码越来越漂亮了!

猜你喜欢

转载自blog.csdn.net/quicmous/article/details/83904228