练习
(1)下面的转换哪些不是隐式转换?
a. int 转换为 short
b. short 转换为 int
c. bool 转换为 string
d. byte 转换为 float
答案:a和c的转换不能隐式进行。
(2) 以 short
类型作为基本类型编写一个 color
枚举,使其包含彩虹的颜色加上黑色和白色。这个枚举可使用 byte
类型作为基本类型吗?
答案:
enum color : short
{
Red, Orige, Yellow, Green, Blue, Indigo, Violet, Black, White
}
可以,byte类型可以包含0~255之间的数字。
如果枚举项使用不同值,基于byte的枚举可以包含256项;
如果给枚举项使用重复的值,就可以包含更多的项。
(3)修改第 4 章的 Mandelbrot
集合生成程序示例,使用下面的结构表示复数:
struct imagNum
{
public double real, imag;
}
(4)下面的代码可以成功编译吗?为什么?
string[] blab = new string[5]
blab[5] = "5th string".
答案:
不,原因如下:
• 遗漏了语句末尾的分号。
• 第二行尝试访问blab中不存在的第6个元素。
• 第二行尝试指定未包含在双引号中的字符串。
(5)编写一个控制台应用程序,它接收用户输入的一个字符串,将其中的字符以与输入相反的顺序输出。
答案:
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
。
答案:
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)编写一个控制台应用程序,给字符串中的每个单词加上双引号。
答案:
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);
}