零
概述
编程的核心在于处理数据,即玩转数据,如何操控数据,涉及到程序的流程控制,就像是走路一样,选择哪一条路才能更方便的走到目的地是一门技术活,程序中的流程控制就是指引数据最终走到目的地。
C++提供了三种程序流程:顺序结构、选择结构和循环结构,下面依次讲解这三种程序控制结构。
壹
顺序结构
从程序语句的执行来看,顺序结构是逐行执行语句,一直执行到程序结束,不走回头路。本系列帖子之前的大部分程序都是顺序结构。
using namespace std;
int main(){
cout << "这是程序的第七行" << endl;
cout << "这是程序的第九行" << endl;
cout << "这是程序的第十一行" << endl;
system("pause");
return 0;
}
上面的程序会依次输出
这是程序的第七行
这是程序的第九行
这是程序的第十一行
这就是顺序执行结构,一根直肠子,一杆子捅到底,不跳过任何语句,下面就开始有花花肠子了。
贰
选择结构
选择结构,顾名思义,就是依据数据选择性的执行一些语句,这就意味着有些语句是会被跳过的
using namespace std;
int main(){
float a = 0;
cout << "Please input your data:\t" << endl;
cin >> a;
if (a > 600){
cout << "你的分数在600以上" << endl;
}
else if (500 < a && a < 600){
cout << "你的分数在500~600" << endl;
}
else if (a < 500){
cout << "你的分数在500以下" << endl;
}
system("pause");
return 0;
}
上面的程序依据输入的分数而选择性的执行一些数据,如果输入的数据是1000,则会有以下输出
Please input your data:
10000
你的分数在600以上
如果输入的数据是1,则会有以下输出
Please input your data:
1
你的分数在500以下
下面介绍switch语句,这种选择结构根据一个整型数值或者一个字符执行一些语句,下面的程序根据输入的分数判断电影的质量
using namespace std;
int main() {
//请给电影评分
//10 ~ 9 经典
// 8 ~ 7 非常好
// 6 ~ 5 一般
// 5分以下 烂片
int score = 0;
cout << "请给电影打分" << endl;
cin >> score;
switch (score)
{
case 10:
case 9:
cout << "经典" << endl;
break;
case 8:
cout << "非常好" << endl;
break;
case 7:
case 6:
cout << "一般" << endl;
break;
default:
cout << "烂片" << endl;
break;
}
system("pause");
return 0;
}
如果输入的是10,输出如下
请给电影打分
10
经典
以上是选择结构,需要注意的是,switch选择结构中,case后面的只能是整型数据和单个字符;并且程序中一定要有break语句,不然会顺序执行所有程序。
下面介绍循环结构,这就能完成更加复杂的功能了。
叁
循环结构
循环结构有好几种,首先介绍for型循环,for型循环的语句为
for(起始表达式;条件表达式;末尾循环体){
\\程序语句
}
下面以一个输出9*9乘法表的程序为例讲解
using namespace std;
int main() {
int i = 0;
int ii = 0;
for (i = 1; i < 10; i++){
for (ii = 1; ii <= i; ii++){
if (ii == i){
cout << "\t" << i << "*" << ii << "=" << i*ii << endl;
}
else{
cout <<"\t"<< i<<"*"<<ii<<"=" << i*ii;
}
}
}
system("pause");
return 0;
}
下面是输出的结果
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
上面的程序设置了两层循环,第一层循环决定了乘法表中第几行数据,第二层循环决定了每一行输出的终止位置
注意for语句后面的括号
(ii = 1; ii <= i; ii++)
这里的意思是,当ii大于i时候,跳出循环,在每一次循环中ii递增1;
如果我们想要反向输出乘法表呢,即第一行输出九个数字,那么我们只需要修改for循环中的语句为
for (i = 9; i >=1; i--){
for (ii = i; ii >=1; ii--){
if (ii == 1){
cout << "\t" << i << "*" << ii << "=" << i*ii << endl;
}
else{
cout << "\t" << i << "*" << ii << "=" << i*ii;
}
}
}
输出的结果就变成
9*9=81 9*8=72 9*7=63 9*6=54 9*5=45 9*4=36 9*3=27 9*2=18 9*1=9
8*8=64 8*7=56 8*6=48 8*5=40 8*4=32 8*3=24 8*2=16 8*1=8
7*7=49 7*6=42 7*5=35 7*4=28 7*3=21 7*2=14 7*1=7
6*6=36 6*5=30 6*4=24 6*3=18 6*2=12 6*1=6
5*5=25 5*4=20 5*3=15 5*2=10 5*1=5
4*4=16 4*3=12 4*2=8 4*1=4
3*3=9 3*2=6 3*1=3
2*2=4 2*1=2
1*1=1
循环结构中还有do...while循环,当满足某种条件时候,循环开始执行,如
using namespace std;
int main() {
int a = 0;
do {
cout << "输入一个x小于10的数字,不然会一直输出这一句话!" << endl;
cin >> a;
} while (a > 10);
system("pause");
return 0;
}
当while语句后括号的值为1时候,程序会一直执行do后括号内的内容,当输入的数字小于10的时候,循环结束,如
输入一个小于10的数字,不然会一直输出这一句话!
22
输入一个小于10的数字,不然会一直输出这一句话!
33
输入一个小于10的数字,不然会一直输出这一句话!
888
输入一个小于10的数字,不然会一直输出这一句话!
1
以上就是C++中经常使用的程序控制结构。