给小伙伴们预告一下:《斗破CPP》第贰章与第叁章将会分成上下两部分分享给大家,(上)偏向于讲述语句,(下)偏向于讲解各式各样的运算符。
目录
if语句
if语句(其一)
if语句(其二)
嵌套if语句
破!----if语句的语法
方案1
方案2
switch语句
switch的妙用
标签
break语句
default标签
if语句与switch语句的交流
未完待续
我们先来个开胃小菜引出if语句:
//chap0201
#include
using namespace std;
int main()
{
int n;
cout << "整数值:";
cin >> n;
if (n > 0)
cout << "这个值为正。\n";
}
上述代码中出现的用来判断n是否大于0的语句,是if语句。其语法如下所示:
if(条件)语句 |
仅当()内的条件成立、表达式为真时才执行语句。这显然有很多的局限性。
该程序的条件是n>0。如果左操作数的值大于右操作数,则>运算符返回真,否则返回假。
true和flase是bool型的常量值,成为布尔字面量。
chap0201流程图如下:
如果输入的n的值小于等于0,则不执行这条语句,在画面上不显示任何内容。
我们来优化一下chap0201代码:
//chap0202
#include
using namespace std;
int main()
{
int n;
cout << "整数值:";
cin >> n;
if (n > 0)
cout << "这个值为正。\n";
else
cout << "这个值为0或负。\n";
}
这次的if语句的语法如下所示:
if(条件)语句 else 语句 |
这种形式的if语句会执行两条语句中的一个,而不会两者都执行或两者都不执行。
初学者在写if语句的时候可能会犯以下两个错误:
if a < b cout << "a小于b。"; //条件缺少括号
if (c > d) else b = 3; //else前缺少语句
嵌套的意思是:在已有的表格、图像或图层中再加进去一个或多个表格、图像或图层。或两个物体有装配关系时,将一个物体嵌入另一物体。
故嵌套if语句的意思是在一个if语句中嵌套另一个if语句。(不是只能嵌套一个if语句,只要条件够多,想嵌套多少个就嵌套多少个)
接下来我们再来看一个结构与上不同的嵌套if语句:
//chap0203
#include
using namespace std;
int main()
{
int n;
cout << "整数值:";
cin >> n;
if (n > 0)
if (n % 2 == 0)
cout << "这个值为偶数。\n";
else
cout << "这个值为奇数。\n";
else
cout << "输入了非正值。\n";
}
如果读入的整数值为正,则显示它是偶数还是奇数;如果为负,则显示相应的信息。
请小伙伴们来思考下面这段代码中的语句1和语句2:
if (x == 1)
if(y == 1)
语句1;
else
语句2;
遇到这样的问题我们思考过后会有两种答案:
语句1 | 当x为1且y也为1时 |
语句2 | 当x不为1时 |
显然这是大多数初学的小伙伴的答案,但现实总是残酷无情的。在这样的if语句中,else在规则上是与距离与其最近的if对应的。也就是说。上面的if语句中的else对应的暴怒是if(x == 1),而是if(y == 1)。方案一不行,那就只能寄托希望于希望二了。
语句1 | 当x为1且y也为1时 |
语句2 | 当x为1且y不为1时 |
如果我们这样去写代码,或许就不会有困扰了:
if(x == 1)
if(y == 1)
语句1;
else
语句2;
//chap0204
#include
using namespace std;
int main()
{
int n;
cout << "请输入整数:";
cin >> n;
switch (n) {
case 0 : cout << "A";
cout << "B"; break;
case 2 : cout << "C";
case 5 : cout << "D"; break;
case 6 :
case 7 : cout << "E"; break;
default: cout << "F"; break;
}
cout << "\n";
}
如果条件n的值为5,则程序流会直接跳转至“case 5:”处:
像case 5:这样表示程序要跳转到的地方的标记称为标签。
5和:之间可以不键入空格,但请切记,case和5之间必须要有空格。
当chap0204中的程序流遇到break语句,即
break; //break语句:跳出switch语句
时,将结束switch语句的执行。break是”打破“ ”跳出“ 的意思。在执行break语句后,程序流将打破包围它的switch语句并跳出。
因此,在通过break语句跳出后,程序将执行switch语句之后的语句。
标签default:当用于程序流分支的条件的求职结果与哪一个case都不匹配时,程序流将跳转至该default标签处。我们来看看它的流程图:
可以看出,在没有break语句的地方,程序流将”滑落“至下一条语句。
如果改变switch语句内标签的出现顺序,则程序的运行结果也会改变。在使用switch语句,小伙伴们务必要考虑标签顺序哦!
看过上面部分的小伙伴都知道,if语句和switch语句都可以实现程序流的分支结构,两者统称为选择语句。对于使用if语句或switch语句均可实现的分支结构,使用switch语句实现更容易阅读,我们来看看下图:
上面这两段代码是等价的。可在连续的if语句中,用于程序流分支的比较对象并非必须是一个表达式。对于最后的判断语句,人们可能会将其误读为if(p == 4),或者怀疑其是if(p == 4)的误写。从这一点来看,switch语句便于通览全局,也可以减少阅读者的疑惑。所以综上所述:相比使用if语句,使用switch语句来实现基于一个表达式的程序流分支会更好!
很感激阅读到这里的你,《斗破CPP》的精彩并不止于这些,学有余力的小伙伴可以看看下面这些博客,都是有着极多的技巧与干货❤!
《斗破CPP》 第壹章 ---- 初窥CPP :https://blog.csdn.net/qq_64263760/article/details/124053651
C语言小游戏(一)----猜数游戏:
https://blog.csdn.net/qq_64263760/article/details/122880908
如果觉得本篇博客对正在学习编程的你有帮助的话,请给施律.多一点的支持与关注!未来的一段时间里施律.将和小伙伴们一起斗破CPP,希望下次的我能为大家奉上更好的博客内容,也希望下次的博客有你!