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++中提供了三种逻辑运算符:
&&
逻辑与 相当于其他语言(python)中的 and||
逻辑或 相当于其他语言(python)中的 or!
逻辑非 相当于其他语言(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循环语句的执行过程如下:
- 先求解表达式A;
- 求解表达式B,同时判断表达式B的结果,如果为假则直接跳出for循环,如果为真则执行循环体语句X;
- 求解表达式C;
- 再次执行步骤 2;
- 再次执行步骤 3;
- 以此类推。。。
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;
}