练习

(1)下面的转换哪些不是隐式转换?

  1. a. int 转换为 short
  2. b. short 转换为 int
  3. c. bool 转换为 string
  4. d. byte 转换为 float
答案:a和c的转换不能隐式进行。

(2) 以 short 类型作为基本类型编写一个 color 枚举,使其包含彩虹的颜色加上黑色和白色。这个枚举可使用 byte 类型作为基本类型吗?

答案:

  1. enum color : short
    {
    Red, Orige, Yellow, Green, Blue, Indigo, Violet, Black, White
    }
    可以,byte类型可以包含0255之间的数字。
    如果枚举项使用不同值,基于byte的枚举可以包含256项;
    如果给枚举项使用重复的值,就可以包含更多的项。


(3)修改第 4 章的 Mandelbrot 集合生成程序示例,使用下面的结构表示复数:

  1. struct imagNum
  2. {
  3. public double real, imag;
  4. }

(4)下面的代码可以成功编译吗?为什么?

  1. string[] blab = new string[5]
  2. blab[5] = "5th string".
答案:

  1. 不,原因如下:
    遗漏了语句末尾的分号。
    第二行尝试访问blab中不存在的第6个元素。
    第二行尝试指定未包含在双引号中的字符串。


(5)编写一个控制台应用程序,它接收用户输入的一个字符串,将其中的字符以与输入相反的顺序输出。

答案:

  1. static void Main(string[] args)
    {
    Console.WriteLine("Enter a string:");
    string myString = Console.ReadLine();
    string reversedString = "";
    for(int index = myString.Length - 1; index >= 0; index—)
    {
    reversedString += myString[index];
    }
    Console.WriteLine("Reversed: {0}", reversedString);
    }


(6)编写一个控制台应用程序,它接收一个字符串,用 yes 替换字符串中所有的 no

答案:

  1. static void Main(string[] args)
    {
    Console.WriteLine("Enter a string:");
    string myString = Console.ReadLine();
    myString = myString.Replace("no", "yes");
    Console.WriteLine("Replace \"no\" with \"yes\": {0}", myString);
    }


(7)编写一个控制台应用程序,给字符串中的每个单词加上双引号。

答案:

  1. static void Main(string[] args)
    {
    Console.WriteLine("Enter a string:");
    string myString = Console.ReadLine();
    myString = "\" + myString.Replace(" ", "\" \"") + "\"";
    Console.WriteLine("Added double quotes arround words: {0}", myString);
    }

    或者使用String.Split();
    static void Main(string[] args)
    {
    Console.WriteLine("Enter a string:");
    string myString = Console.ReadLine();
    string[] myWords = myString.Split(' ');
    Console.WriteLine("Added double quotes arround words:");
    }
    foreach(string myWord in myWords)
    {
    Console.Write("\"{0}\" ", myWord);
    }