3.5. Hello world 分支版
上一版的Hello world中,我们实现了“人机交互”。在例子中,我先输入“志玲”、后来又输入“BOSS”。程序分别打印出对这两人的问好。
新的需求产生了!程序可不可以区分一下,当遇上志玲时,我们需要稍微有点的不同问候方式——至少和碰上BOSS的状况相比。
这段需求用自然语言描述一下:
“如果遇上的是志玲,我想说……;否则,我就说Hello! XXX。 XXX代表非志玲之外的任何人。”
3.5.1. 流程控制-if
在C++中,前述的需求可以使用 if/else 语句实现。
if (条件)
{
//条件成立时,执行这里
}
else
{
//条件不成立,执行这里
}
3.5.2. 修改Hello函数
创建一个新的C++控制台应用,项目名称为“HelloWorldIfElse”。由于我们将要在代码中直接输入汉字,因此请将main.cpp的文件编码改为“系统默认”(具体方法请参看“HelloWorld 中文版”)。
起始代码为“交互版”的HelloWorld。因此现有的Hello函数代码为:
void Hello(string const name)
{
cout << "Hello! " << name << "." << endl;
}
该函数接收到“名字”之后,就整齐划一输出:“Hello! XXX.”,并没有根据name是什么,而区别对待。
新代码为:
void Hello(string const name)
{
007 if (name == "志玲")
008 {
009 cout << "Hi! 志玲,志玲你好。你演小乔,好好棒呢~~" << endl;
010 }
011 else
012 {
013 cout << "Hello! " << name << "." << endl;
014 }
}
007 行,我们使用C++的等号操作符“==”来判断name是不是和“志玲”相等。
〖危险〗:相等判断操作符:==
注意,“==”是两个连续普通的“=”字符。在C++中,它用于判断左右两个数据是否相等。而单个=用于“赋值”,如果在该用到==的地方,不小心写成=,那么有可能会造成运行时才爆发的错误。
运行结果:
(图 18 分支版Hello World运行结果)
3.5.3. 多级if-else
if-else 结构,当需多级判断时,可以连续使用,形成多级if-else结构。比如,如果想在前例中加入对“嘉玲”的判断,那么代码如下:
if (name == "志玲")
{
cout << "Hi! 志玲,志玲你好。你演小乔,好好棒呢~~" << endl;
}
else if (name == "嘉玲")
{
cout << "Hi! 嘉玲,嘉玲你好。恭喜你和小梁的喜事!" << endl;
}
else
{
cout << "Hello! " << name << "." << endl;
}
解读:
是“志玲”吗?
____是,……
不是?那看看是不是 “嘉玲”?
____是,……
再不是
____则……
〖现场作业〗:多级if-else练习
请在上述代码基础上,再加上一级if-else,用以判断name是否为“美玲”。