零
概述
编程的核心在于处理数据,即玩转数据,如何操控数据,涉及到程序的流程控制,就像是走路一样,选择哪一条路才能更方便的走到目的地是一门技术活,程序中的流程控制就是指引数据最终走到目的地。
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=12*1=2 2*2=43*1=3 3*2=6 3*3=94*1=4 4*2=8 4*3=12 4*4=165*1=5 5*2=10 5*3=15 5*4=20 5*5=256*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=367*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=498*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=649*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=98*8=64 8*7=56 8*6=48 8*5=40 8*4=32 8*3=24 8*2=16 8*1=87*7=49 7*6=42 7*5=35 7*4=28 7*3=21 7*2=14 7*1=76*6=36 6*5=30 6*4=24 6*3=18 6*2=12 6*1=65*5=25 5*4=20 5*3=15 5*2=10 5*1=54*4=16 4*3=12 4*2=8 4*1=43*3=9 3*2=6 3*1=32*2=4 2*1=21*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++中经常使用的程序控制结构。