程序按编码顺序执行,不发生跳转。
包含单条件if语句、多条件if语句及嵌套if语句
#include
using namespace std;
int main()
{
//选择结构
//例:输入分数,判断是几本分数线:580 - 750 一本线, 420 - 579 二本线; 300 - 419 三本线;< 300 落榜
int score;
cout << "请输入您的分数:" << endl;
cin >> score;
cout << "您输入的分数为:" << score << endl;
//单条件if语句
if (score > 750 || score < 0)
{
cout << "您输入的分数不在分数线范围内,请重新输入!" << endl;
cin >> score;
}
//多条件if语句
if (score < 300)
{
cout << "抱歉,您落榜了" << endl;
}
else if (score < 420)
{
cout << "恭喜,您考上了三本分数线" << endl;
}
else if (score < 580)
{
cout << "恭喜,您考上了二本分数线" << endl;
}
else
{
cout << "恭喜,您考上了一本分数线" << endl;
//嵌套if语句
if (score == 750)
{
cout << "恭喜,您是高考状元无疑了" << endl;
}
}
system("pause");
return 0;
}
输出结果(只展示其中一个测试结果)
请输入您的分数:
900
您输入的分数为:900
您输入的分数不在分数线范围内,请重新输入!
750
恭喜,您考上了一本分数线
恭喜,您是高考状元无疑了
package main
import "fmt"
func main() {
var score int
fmt.Println("请输入您的分数:")
fmt.Scan(&score)
fmt.Println("您输入的分数为:", score)
if score > 750 || score < 0 {
fmt.Println("您输入的分数不在分数线范围内,请重新输入!")
fmt.Scan(&score)
}
if score < 300 {
fmt.Println("抱歉,您落榜了")
} else if score < 420 {
fmt.Println("恭喜,您考上了三本分数线")
} else if score < 580 {
fmt.Println("恭喜,您考上了二本分数线")
} else {
fmt.Println("恭喜,您考上了一本分数线")
if score == 750 {
fmt.Println("恭喜,您是高考状元无疑了")
}
}
}
输出结果(只展示其中一个测试结果)
请输入您的分数:
-1
您输入的分数为: -1
您输入的分数不在分数线范围内,请重新输入!
666
恭喜,您考上了一本分数线
语法: 表达式1 ? 表达式2 : 表达式3
如果表达式1 为真,执行表达式2,否则执行表达式3
在C++中,若三目运算符返回的是变量,可以继续赋值。
#include
using namespace std;
int main()
{
//选择结构 - 三目运算符
int a = 5;
int b = 3;
int c = 0;
c = (a > b ? a : b);
cout << "c = " << c << endl;
//在C++中,若三目运算符返回的是变量,可以继续赋值
(a > b ? a : b) = 10;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
system("pause");
return 0;
}
输出结果
c = 5
a = 10
b = 3
switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上至下逐一测试,直到匹配为止。
C++选择结构switch语句中,若只想执行符合的case语句,不再执行下面的case,需要加break;若不加break,则会执行下面的case,不判断下面的的case是否为true。
switch语句与if语句区别:switch判断时只能是整型或字符型,不可以是一个区间; switch结构清晰,执行效率更高。
#include
using namespace std;
int main()
{
//选择结构 - switch
//例:输入0-6数字,输出星期几
int day;
cout << "请输入0-6数字:" << endl;
cin >> day;
cout << "您输入的数字为:" << day << endl;
switch (day)
{
case 0:
cout << "星期日" << endl;
break;
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
case 6:
cout << "星期六" << endl;
break;
default:
cout << "输入错误" << endl;
break;
}
system("pause");
return 0;
}
输出结果(仅展示其中一种情况,没有break的case分支)
请输入0-6数字:
5
您输入的数字为:5
星期五
星期六
在Go语言中,switch语句中的case默认自带break(这与C++不同),匹配成功后不会执行其它case语句;若想执行下面的case语句,可以使用 fallthrough,会强制执行后面的 case 语句,不会判断后面的case是否为true。
Go语言中,switch语句与if区别:判断时不限制为整型或字符型(这点与C++不同),只要是相同的类型即可,判断不可以是一个区间
package main
import "fmt"
func main() {
var day int
fmt.Println("请输入0-6数字:")
fmt.Scan(&day)
fmt.Println("您输入的数字为:", day)
switch day {
case 0:
fmt.Println("星期日")
case 1:
fmt.Println("星期一")
case 2:
fmt.Println("星期二")
case 3:
fmt.Println("星期三")
case 4:
fmt.Println("星期四")
case 5:
fmt.Println("星期五")
//fallthrough 会强制执行后面的 case 语句,不会判断后面的case是否为true
//此处仅为演示fallthrough,用在这个例子中肯定是不合适的
fallthrough
case 6:
fmt.Println("星期六")
default:
fmt.Println("输入错误")
}
}
输出结果(仅展示其中一种情况,包含fallthrough的case分支)
请输入0-6数字:
5
您输入的数字为: 5
星期五
星期六
满足循环条件,执行循环语句,需要避免死循环
语法:while (循环条件) { 循环语句 }
循环语句中可以使用break退出当前循环
#include
using namespace std;
int main()
{
//循环结构
//while循环语句
int i = 0;
while (i < 5)
{
cout << "while - 第 " << i + 1 << " 次循环" << endl;
i++;
}
system("pause");
return 0;
}
输出结果
while - 第 1 次循环
while - 第 2 次循环
while - 第 3 次循环
while - 第 4 次循环
while - 第 5 次循环
do { 循环语句 } while (循环条件);
do...while语句总是会先执行一次循环语句,再判断循环条件
do...while语句与while语句区别:do...while会先执行一次循环语句
#include
using namespace std;
int main()
{
//循环结构
//do while循环语句
i = 0;
do
{
cout << "do while - 第 " << i + 1 << " 次循环" << endl;
i++;
} while (i < 5);
system("pause");
return 0;
}
输出结果
do while - 第 1 次循环
do while - 第 2 次循环
do while - 第 3 次循环
do while - 第 4 次循环
do while - 第 5 次循环
语法:for (起始表达式; 条件表达式; 末尾循环体) { 循环语句 }
#include
using namespace std;
int main()
{
//循环结构
//for 循环语句
i = 0;
for (; i < 5; i++)
{
cout << "for - 第 " << i + 1 << " 次循环" << endl;
}
system("pause");
return 0;
}
输出结果
for - 第 1 次循环
for - 第 2 次循环
for - 第 3 次循环
for - 第 4 次循环
for - 第 5 次循环
package main
import "fmt"
func main() {
for i:=0; i < 5; i++ {
fmt.Printf("for - 第 %d 次循环\n", i + 1)
}
}
输出结果
for - 第 1 次循环
for - 第 2 次循环
for - 第 3 次循环
for - 第 4 次循环
for - 第 5 次循环
用于跳出选择结构 或者 循环结构
switch条件语句中,终止case并跳出switch(参见上面选择语句中的switch)
在循环语句中,跳出当前的循环语句
在嵌套循环中,跳出最近的内层循环语句
#include
using namespace std;
int main()
{
//跳转语句
//break
for (int i = 0; i < 5; i++)
{
cout << "for - 第 " << i + 1 << " 次循环" << endl;
if (i == 2) {
cout << "跳出循环" << endl;
break;
}
}
//跳出内循环
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
cout << "for - 第 " << j + 1 << " 次循环" << endl;
if (j == 1) {
cout << "跳出内循环" << endl;
break;
}
}
}
system("pause");
return 0;
}
输出结果
for - 第 1 次循环
for - 第 2 次循环
for - 第 3 次循环
跳出循环
for - 第 1 次循环
for - 第 2 次循环
跳出内循环
for - 第 1 次循环
for - 第 2 次循环
跳出内循环
for - 第 1 次循环
for - 第 2 次循环
跳出内循环
在循环语句中,跳出当前的循环语句
在嵌套循环中,跳出最近的内层循环语句
package main
import "fmt"
func main() {
for i:=0; i < 5; i++ {
fmt.Printf("for - 第 %d 次循环\n", i + 1)
if i == 2 {
fmt.Println("跳出循环")
break
}
}
//跳出内循环
for i:=0; i < 3; i++ {
for j:=0; j < 3; j++ {
fmt.Printf("for - 第 %d 次循环\n", i + 1)
if j == 1 {
fmt.Println("跳出内循环")
break
}
}
}
}
输出结果
for - 第 1 次循环
for - 第 2 次循环
for - 第 3 次循环
跳出循环
for - 第 1 次循环
for - 第 1 次循环
跳出内循环
for - 第 2 次循环
for - 第 2 次循环
跳出内循环
for - 第 3 次循环
for - 第 3 次循环
跳出内循环
在循环语句中,路过本次循环(不执行尚未执行的语句),继续执行下一次循环。
#include
using namespace std;
int main()
{
//跳转语句
//continue
for (int i = 0; i < 5; i++)
{
if (i % 2 == 0) {
cout << "跳过本次循环" << endl;
continue;
}
cout << "for - 第 " << i + 1 << " 次循环" << endl;
}
system("pause");
return 0;
}
输出结果
跳过本次循环
for - 第 2 次循环
跳过本次循环
for - 第 4 次循环
跳过本次循环
package main
import "fmt"
func main() {
//continue语句
for i:=0; i < 5; i++ {
if i % 2 == 0 {
fmt.Println("跳过本次循环")
continue
}
fmt.Printf("for - 第 %d 次循环\n", i + 1)
}
}
输出结果
跳过本次循环
for - 第 2 次循环
跳过本次循环
for - 第 4 次循环
跳过本次循环
无条件跳转语句,尽量避免使用goto语句。
语法: goto 标记;
#include
using namespace std;
int main()
{
//跳转语句
//goto语句
int i = 0;
LOOP: for (; i < 5; i++) {
if (i == 2) {
i++;
cout << "" << endl;
goto LOOP;
}
cout << "for - 第 " << i + 1 << " 次循环" << endl;
}
system("pause");
return 0;
}
输出结果
for - 第 1 次循环
for - 第 2 次循环
当 i==2 时跳转,跳转前需要i++,否则死循环
for - 第 4 次循环
for - 第 5 次循环
package main
import "fmt"
func main() {
//goto语句
i := 0
LOOP: for ; i < 5; i++ {
if i == 2 {
i++
fmt.Println("当 i==2 时跳转,跳转前需要i++,否则死循环")
goto LOOP
}
fmt.Printf("for - 第 %d 次循环\n", i + 1)
}
}
输出结果
for - 第 1 次循环
for - 第 2 次循环
当 i==2 时跳转,跳转前需要i++,否则死循环
for - 第 4 次循环
for - 第 5 次循环