- 2.1 程序流程结构
- 2.1.1 顺序结构
- 2.1.2 选择结构
- if语句
- 三目运算符
- switch语句
- 2.1.3 循环结构
- while循环语句
- do...while循环语句
- for循环
- 嵌套循环
- 2.1.4 跳转语句
- break语句
- continue语句
- goto语句
含义:程序按顺序执行,不发生跳转。
含义:依据条件是否满足,有选择地执行相应功能。
作用:执行满足条件的语句。
if语句的三种形式:
- 单行格式if语句
- 多行格式if语句
- 多条件的if语句
1、单行格式if语句:
if(条件){
条件满足执行的语句
}
2、多行格式if语句:
if(条件){
条件满足执行的语句
}else{
条件不满足执行的语句
}
例1
//判断用户输入的分数是否大于等于60分,输出及格或不及格
int score = 0;
cout << "请输入分数:" << endl;
cin >> score;
if (score > 60) {
cout << "及格" << endl;
}
else {
cout << "不及格" << endl;
}
运行结果:
3、多条件的if语句
if(条件1){
条件1满足执行的语句
}else if(条件2){
条件2满足执行的语句
}
…
else{
都不满足执行的语句
}
例2
//判断用户输入的分数,大于等于60分,输出及格,否则输出不及格
//大于等于75,输出中等
//大于等于85,输出良好
//大于等于95,输出优秀
int score = 0;
cout << "请输入分数:" << endl;
cin >> score;
if (score >= 60 && score<75) {
cout << "及格" << endl;
}
else if(score>=75 && score<85){
cout << "中等" << endl;
}
else if (score >= 85 && score < 95) {
cout << "良好" << endl;
}
else if(score>=95){
cout << "优秀" << endl;
}
else {
cout << "不及格" << endl;
}
运行结果:
补充:嵌套if语句(精准判断)
例3
/*
用户输一个高考分数,分数>600,则考上一本;分数>500,则考入二本;分数>400,则考入三本;
其余视为未考上本科;
在一本分数中,分数>700分,考入北大;分数>650分,考入清华;分数>600分,考入人大。
*/
int score = 0;
cout << "请输入您的高考分数:" << endl;
cin >> score;
if (score > 600) {
if (score <=650) {
cout << "考上一本,并考入人大" << endl;
}
else if(score<=700){
cout << "考上一本,并考入清华" << endl;
}
else {
cout << "考上一本,并考入北大" << endl;
}
}
else if (score > 500 && score <= 600) {
cout << "考入二本" << endl;
}
else if (score > 400 && score <= 500) {
cout << "考入三本" << endl;
}
else {
cout << "很抱歉,未考上" << endl;
}
运行结果:
语法:表达式1 ? 表达式2 :表达式3
解释:
- 如果表达式1的值为真,执行表达式2,并返回表达式2的结果;
- 如果表达式1的值为假,执行表达式3,并返回表达式3的结果。
例4
int a = 20;
int b = 10;
cout << (a > b ? a : b) << endl;
switch语句在C++中三目运算符返回的是变量,可以继续赋值
作用:执行多条件分支语句
语法:
switch(表达式1){
case 结果1:执行语句;break;
case 结果2:执行语句;break;
...
default:执行语句;break;
}
break:表示退出当前分支。
如果不加的话,会一直执行到底。
例5
/*
给电影打分
10~9 经典
8~7 非常好
6~5 一般
5以下 烂片
*/
int score = 0;
cout << "请给电影打分:" << endl;
cin >> score;
switch (score) {
case 10:cout << "经典" << endl; break;
case 9:cout << "经典" << endl; break;
case 8:cout << "非常好" << endl; break;
case 7:cout << "非常好" << endl; break;
case 6:cout << "一般" << endl; break;
case 5:cout << "一般" << endl; break;
default:cout << "烂片" << endl; break;
}
运行结果:
2.1.3 循环结构 while循环语句switch
缺点:判断的时候只能是整型或字符型,不可以是一个区间
优点:结构清晰,执行效率高
语法:
while(循环条件){循环语句}
解释:只要循环条件结果为真,就执行循环语句。
例6(打印数字)
//在屏幕中打印0~9这10个数字
int i = 0;
while (i < 10) {
cout << i++ << " ";
}
运行结果:
例7(猜数字)
//猜数字
//添加随机数种子(加头文件),利用当前系统时间生成随机数,让其变化
srand((unsigned int)time(NULL));
int n = rand() % 100 + 1;
cout << "请玩家猜测一个数字:" << endl;
while (true) {
int num = 0;
cin >> num;
if (num > n) {
cout << "猜的数字过大,请重新输入\n" << endl;
}
else if (num == n) {
cout << "恭喜您,猜对了" << endl;
break;//退出循环
}
else {
cout << "猜的数字过小,请重新输入\n" << endl;
}
}
运行结果:
do…while循环语句srand()可用来设置rand()产生随机数时的随机数种子。
通过设置不同的种子,我们可以获取不同的随机数序列。
可以利用srand((unsigned int)(time(NULL))的方法,利用系统时钟,产生不同的随机数种子。
不过要调用time(),需要加入头文件< ctime >
- 取得(0,x)的随机整数:rand()%x;
- 取得(a,b)的随机整数:rand()%(b-a);
- 取得[a,b)的随机整数:rand()%(b-a)+a;
- 取得[a,b]的随机整数:rand()%(b-a+1)+a;
- 取得(a,b]的随机整数:rand()%(b-a)+a+1;
- 取得0-1之间的浮点数:rand()/double(RAND_MAX)。
语法:
do{循环语句} while(循环语句);//切莫忘分号
与while的区别:do…while会先执行一次循环语句;while先判断条件。
例8(打印数字)
int n = 0;
do
cout<<n++<<" ";
while (n < 10);
return 0;
运行结果:
例9(水仙花数)
//打印100~1000的水仙花数
int n = 100;
int a = 0;
int b = 0;
int c = 0;
do {
a = n / 100;
b = n / 10 % 10;
c = n % 10;
if ((a * a * a + b * b * b + c * c * c) == n) {
cout << n << endl;
}
n++;
} while (n < 1000);
运行结果:
语法:
for(起始表达式;条件表达式;末尾循环体){循环语句;}
例10(打印0~9)
for(int i=0;i<10;i++){
cout << i << " ";
}
运行结果:
例11(敲桌子)
for (int i = 1; i <= 100; i++) {
if (i % 10 == 7 || i / 10 == 7 || i % 7 == 0) {
cout << "敲桌子" << endl;
continue;
}
cout << i << endl;
}
运行结果:
作用:在循环体中再嵌入一层循环,解决一些实际问题
例12(打印*)
//打印*
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
cout << "* ";
}
cout << endl;
}
运行结果:
例13(打印乘法口诀表)
//打印乘法口诀表
for (int i = 1; i < 10; i++) {
for (int j = 1; j < i+1; j++) {
cout << i << "x" << j << "=" << i * j << " ";
}
cout << endl;
}
运行结果:
作用:用于跳出选择结构或者循环结构
break使用的时机:
- 出现在switch条件语句中,作用是终止case并跳出switch
- 出现在循环语句中,作用是跳出当前的循环语句
- 出现在嵌套循环中,跳出最近的内层循环语句
作用:在循环语句中,跳出本次循环中余下未执行的语句,继续执行下一次循环
goto语句作用:可以无条件跳转语句
语法:
goto 标记;
如果标记的名称存在,执行到goto语句时,会跳转到标记的位置
例14
//goto语句
cout << 1 << endl;
cout << 2 << endl;
goto flag;
cout << 3 << endl;
cout << 4 << endl;
flag://建立标记,跳到此处
cout << 5 << endl;
cout << 6 << endl;
运行结果:
在程序中不建议使用goto语句,以免造成程序流程混乱
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)