使用C#实现Morse码的输出

一直在研读的《C语言的科学和艺术》一书中有这么一道题,涉及了string类型。但是作者给提供的库实在是不好用,因此我想改用C#开发。众所周知,C和C#的不同是:C语言是面向过程的传统编程语言,C#是面向对象的现代编程语言。尽管如此,但我认为我们仍然可以在C#中学习面向过程的思想。采用控制台应用程序,在Program类中编写代码。

原题:

1844年5月,Samuel F.B.Morse 用电报从美国的华盛顿发送了一条消息“What hath God wrought !”美国的巴尔的摩,从此开创了电子通信的新纪元。为了使这种通信方式只需要使用一种音符的有无就可以进行,Morse设计了一种编码系统。在这种编码系 统中,字母和其他的字符分别用长短不一的编码系列来实现,我们通常称之为点和横,在Morse编码系统中,字母表中的26个字母是用如下方法表示的:
A . - 
B - . . .
C - . - .
D - . .
E .
F . . - .
G - - .
H . . . .
I . .
J . - - -
K - . -
L . - . .
M - -
N - .
O - - -
P . - - .
Q - - . -
R . - .
S …
T – 
U . . –
V. . . –
W . - -
X - . . –
Y - . - -
Z - - . .

我们很容易在程序中声明一个含有26个元素的数组.存储26个字母的Morse码。
写一个程序,从用户处输入一个字符串,将字符串中每个字母转换成相应的Morse码,用句号表示点,用破折号表示横。用换行符来表示单词之间的空格,而忽略其中的其他标点符号。你的程序应该产生下列运行示例:

其实仔细分析一下,程序还是非常简单的。C#实现代码如下:

 1class Program
 2{
 3    static void Main(string[] args)
 4    {
 5
 6        Console.WriteLine("This program translates a line into Morse code.");
 7        Console.Write("Enter English text:");
 8        string str = Convert.ToString(Console.ReadLine());
 9        ShowMorse(str);
10        Console.Read();
11    }

12
13    private static void ShowMorse(string input)
14    {
15        char[] chs=input.ToCharArray();
16        foreach (char ch in chs)
17        {
18            if (ch == ' ')
19            {
20                Console.WriteLine();
21            }

22            else
23            {
24                ParseToMorse(ch);
25            }

26
27        }

28    }

29
30    private static void ParseToMorse(char ch)
31    {
32        string[] morses = new string[]{
33            "._",//a
34            "-",//b
35            "_._.",//c
36            "-..",//d
37            ".",//e
38            "..-.",//f
39            "--.",//g
40            ".",//h
41           ".."//i
42            ".---",//g
43            "-.-",//k
44           ".-.."//l
45           "--"//m
46           "-."//n
47           "---"//o
48           ".--."//p
49            "--.-",//q
50           ".-."//r
51           ""//s
52           "-"//t
53           "..-"//u
54           "-"//v
55           ".--"//w
56           "-..-"//x
57           "-.--"//y
58           "--.."//z     
59        }
;
60        Console.Write(morses[char.ToLower(ch) - 'a']);
61        Console.Write(" ");            
62    }

63}



原文地址:https://www.cnblogs.com/iPeterRex/p/1326691.html