C++(三)逻辑控制语句(if、while、switch、for)

if 语句

关于if语句这里不在多讲,说白了就是:如果。。。就。。。否则。。。
为了防止语义上出现不必要的错误出现,即使if下只有一条语句,也应该放到花括号 {} 中。

int apple_weight = 0;
cin >> apple_weight;

if (apple_weight < 1)
{
        cout << "最小苹果" << endl;
}
else if (apple_weight < 3)
{
        cout << "小苹果" << endl;
}
else if (apple_weight < 5)
{
        cout << "中苹果" << endl;
}
else if (zhangsan_age < 9)
{
        cout << "大苹果" << endl;
}
else
{
        cout << "确定这是苹果?" << endl;
}

if 语句的另一种嵌套:

int tong = 0;
cin >> tong;

if (tong < 18)
{
	if (tong == 3)
	{
		cout << "这是个小桶" << endl;
	}
	else if (tong == 5)
	{
		cout << "这是个中桶" << endl;
	}
	else
	{
		cout << "这是个桶的规格未定" << endl;
	}
}
else if (tong >= 18)
{
	if (tong == 20)
	{
		cout << "这是个大桶" << endl;
	}
	else if (tong == 40)
	{
		cout << "这是个巨桶" << endl;
	}
	else
	{
		cout << "这是个桶的规格未定" << endl;
	}
}

若只是简单的逻辑,则直接用三目运算符,简单省事。

冒号表达式的规则:表达式1 ? 表达式2 : 表达式3
若表达式1为真,则返回表达式2的值,若表达式1为假,则返回表达式3的值。如此而已
max = x > y ? x : y;

C++中提供了三种逻辑运算符:

  1. && 逻辑与 相当于其他语言(python)中的 and
  2. || 逻辑或 相当于其他语言(python)中的 or
  3. ! 逻辑非 相当于其他语言(python)中的 not

若是不清楚运算符的优先级,则直接加个括号就好了。
如:if ((tong > 14) && (tong < 60))if (!(tong == 40)) 相当于if(tong!=40)

int tong = 0;
cin >> tong ;

if (tong < 14 || tong > 60)
{
    cout << "这个桶要么太大要么太小" << endl;
}
else
{
    cout << "这个桶尺寸还行" << endl;
}

switch语句

if-else语句只有两个分支,可如果条件比较多,就会出现很多个 if-else if-else if-else-if 等。
这样会导致代码冗余,不易于阅读,同时如果条件很多的情况下效率也不高,这种情况下建议使用switch语句来解决。

switch语句的格式:
switch(表达式)
{
case 常量表达式1:语句1
break;
case 常量表达式2:语句2
break;
case 常量表达式3:语句3
break;

case 常量表达式n:语句n
break;
default:语句n+1;
break;
}

格式说明:
①、switch后面括号内的表达式必须是数值类型(包括字符类型,枚举类型(其实也是整形))的数据,不能使用字符串,;
②、如果switch表达式的值与某一个case子句中的常量表达式的值匹配时,就执行此case子句中的内嵌语句,如果所有的case常量表达式都不匹配,那么就执行default子句的内嵌语句;
③、每个case标签的常量表达式的值必须不能相同,否则会出现错误的情况,而且以当前vs2015的编译器来说编译也会不通过的;
④、每个case语句,包括default语句的顺序不影响结果,可以任意放置,比如把default放在上面也是一样的;
⑤、switch语句也是本着从上往下的顺序执行,可这个从上往下是以第一个case匹配到的常量表达式开始,往下执行。如果执行完一个case语句之后不想继续执行其他case语句可以使用break关键字跳出switch结构即可;

#include <iostream>
using namespace std;

int main()
{
	cout << "请输入楼层:" << endl;
	int num = 0;
	cin >> num;

	switch (num)
	{
	case 1:
		cout << "这是一楼" << endl;
		break;
	case 2:
		cout << "这是二楼" << endl;
		break;
	case 3:
		cout << "这是三楼" << endl;
		break;
	case 4:
		cout << "这是四楼" << endl;
		break;
	case 5:
		cout << "这是五楼" << endl;
		break;
	default:
		cout << "这是地下室" << endl;
		break;
	}
	return 0;
}

while 循环语句

while 循环语句的格式:
while(表达式A)
{
语句B
}

在这里插入图片描述
执行流程是:当表达式A的值为真(非0)时,执行下面的语句B(即循环体),否则不执行语句B。
注意:要避免死循环。

#include <iostream>
using namespace std;

int main()
{
	int xx = 1, sum_0 = 0;
	while (xx <= 100)
	{
		if (xx % 2 != 0)
		{
			sum_0 += xx;
		}
		++xx;
	}

	cout << "1~100的奇数累加和 = " << sum_0 << endl;
    return 0;
}

do-while 循环语句的格式:
do
{
语句B
}
while(表达式A)

跟 while 循环的格式也是大同小异。但是跟 while 有个很重要的区别:先执行循环体语句B,之后再判断表达式A。

for循环及break和continue

for循环语句的格式:(注意:表达式A、B、C 之间的分割是分号;
for(表达式A ; 表达式B ; 表达式C)
{
语句X
}
在这里插入图片描述
for循环语句的执行过程如下:

  1. 先求解表达式A;
  2. 求解表达式B,同时判断表达式B的结果,如果为假则直接跳出for循环,如果为真则执行循环体语句X;
  3. 求解表达式C;
  4. 再次执行步骤 2;
  5. 再次执行步骤 3;
  6. 以此类推。。。

break 语句提前结束循环过程并跳出:
在 switch-case语句中,break可以跳出当前的switch-case语句结构。同理break语句也可以使用在循环语句中,使用之后直接提前跳出当前的循环过程。

continue 语句提前结束本次循环:
continue 语句一般用于循环语句中,作用是提前结束本次循环,即跳过循环体语句中X中尚未执行的语句,直接进行下一次的循环。

#include <iostream>
using namespace std;

int main()
{
	cout << "100 ~ 200之间的素数如下:" << endl;

	int x = 0;
	for (x = 100; x <= 200; ++x)
	{
		int y = 2;
		for (y = 2; y < x / 2; ++y)
		{
			if (x % y == 0)
			{
				break;
			}
		}

		if (y < x / 2) continue;
		cout << x << endl;
	}

	cout << endl;
	return 0;
}
发布了386 篇原创文章 · 获赞 592 · 访问量 72万+

猜你喜欢

转载自blog.csdn.net/wsp_1138886114/article/details/104265070