Day 03 C++程序流程结构
Day 03 程序流程结构
C/C++中支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构
- 顺序结构:程序按顺序执行,不发生跳转
- 选择结构:依据条件是否满足(条件判断),有选择的执行相应的语句功能
- 循环结构:依据条件是否满足(条件判断),循环多次执行某段代码
一、选择结构
1. if语句
作用:执行满足条件的语句。三种形式:
单行格式if语句
多行格式if语句
多条件的if语句
1.1 单行格式的if语句:
if(条件){条件满足需要执行的语句};
int a = 0;
cout << "请输入分数:"<< endl;
cin >> a;
cout << "用户分数为:"<< a << endl;
if(a > 60)
{
cout << "学生及格了" << endl;
}
cout << "结束" << endl;
1.2 多行格式if语句:
if(条件){条件满足需要执行的语句} else{不满足执行的语句};
if(a > 60)
{
cout << "学生及格了" << endl;
}
else
{
cout << "不及格" << endl;
}
1.3 多条件的if语句:
if(条件1){条件1满足需要执行的语句} else if (条件2){满足条件2需要执行的语句}…else{条件都不满足需要执行的语句};
if(a > 90)
{
cout << "学生优秀" << endl;
}
else if(a > 60)
{
cout << "学生及格" << endl;
}
...
else
{
cout << "不及格" << endl;
}
else if(),可以写无数个,用else收尾,前面的都不满足
1.4 嵌套if:
if中嵌套使用if。
if(条件1){if(条件2){条件1和2都满足需要执行的语句};条件1满足需要执行的语句};
作用:可以达到更精准的判断
if(a > 60)
{
cout << "学生及格了" << endl;
if(a > 90)
{
cout << "学生很优秀" << endl;
}
else(a > 80)
{
cout << "学生良好" << endl;
}
}
例子1:
三个苹果重量比较,看哪个苹果重,分别输入三个苹果的重量,判断哪个苹果最重?
int a = 0;
int b = 0;
int c = 0;
cout << "请输入第一个苹果的重量:"<< endl;
cin >> a;
cout << "请输入第二个苹果的重量:"<< endl;
cin >> b;
cout << "请输入第三个苹果的重量:"<< endl;
cin >> c;
if(a > b)
{
if(a > c)
{
cout << "第一个苹果最重" << endl;
}
else
{
cout << "第三个苹果最重" << endl;
}
}
else
{
if(b > c)
{
cout << "第二个苹果最重" << endl;
break;
}
else
{
cout << "第三个苹果最重" << endl;
}
}
2. 三目运算符:
作用:通过三目运算符实现简单的判断。表达式1?表达式2:表达式3
若表达式1的值为真,则执行表达式2,并返回表达式2的结果;
若表达式1的值为假,则执行表达式3,并返回表达式3的结果。
int a = 1;
int b = 0;
a < b ? a : b;//返回a与b中的最小值
//若a<b,则返回a,反之返回b
(a < b ? a : b) = 7;//小值赋值7
三目运算符的返回值是变量,可以继续赋值
3. switch语句:
作用:执行多条件分支语句。
switch(表达式)
{
case 结果1:执行语句1;break;
case 结果2:执行语句2;break;
case 结果3:执行语句3;break;
...
default:执行语句;break;
}
char a = 'Z';
cout << "请输入等级:"<< endl;
cin >> a;
cout << "用户等级为:"<< a << endl;
switch(a)
{
case A:
cout << "学生十分优秀!" << endl;
break;
case B:
cout << "学生优秀!" << endl;
break;
case C:
cout << "学生较好!" << endl;
break;
case D:
cout << "学生及格!" << endl;
break;
default:
cout << "学生不及格!" << endl;
break;
}
注:在判断分支时,只能是整型或字符型,不能是区间,但是结构清晰,执行效率高。
二、循环结构
1. while循环语句
作用:满足循环条件,执行循环语句。while(循环条件){循环语句}
int a = 0;
//打印0-9
while(a < 10) //a<10,就执行下面循环体中的循环语句
{
cout << a << endl;
a++;
}
只要循环条件为真,就可以一直执行循环语句,知道循环条件为假,就跳出循环。避免死循环的出现(循环条件永为真)
例子2:
猜数字,系统会随机生成0-100的字,玩家进行猜测,若猜错,提示玩家过大还是过小,如果猜对提示玩家胜利!并退出游戏
int a = 0;
int b = rand()%100;//随机生成0-100的数字
while(1)
{
cout<<"请输入猜测数字"<<endl;
cin>>a;
if(a < b)
{
cout << "结果过小" << endl;
}
else if(a>b)
{
cout << "结果过大" << endl;
}
else
{
cout << "恭喜!猜对了" << endl;
break;
}
}
可以添加随机数种子,利用当前系统实践生成随机数,防止每次随机数都一样
#include <ctime>//使用time,需要引入头文件
srand((unsigned int)time(NULL))
2. do while循环
do{循环语句}while(循环条件)
int a = 0;
do
{
cout << a << endl;
a++;
} while(a < 10) //a<10,就继续执行上面循环体中的循环语句
先执行再判断,会先执行一次(至少会执行一次)
例子3:
水仙花数,水仙花数是指一个三位数,它的每个位数上的数字的3次幂之后等于它本身,求出所有三位数中的水仙花数。
int a = 100;
do
{
int a1 = 0;
int a2 = 0;
int a3 = 0;
a1 = a%10;
a2 = a/10%10;
a3 = a/100;
if((a1*a1*a1+a2*a2*a2+a3*a3*a3)==a)
{
cout << a << endl;
}
a++;
}while(a<1000);
3. for循环语句
for(起始表达式;条件表达式;变化操作){循环体循环语句}
for(int i=0;i<10;i++)
{
cout << i << endl;
}
起始表达式可以省略,末尾表达式(变化操作)可以省略,写在循环体中即可。
例子4:
敲桌子,报数1-100,如果数字各位包含数字7或者是7的倍数,则输出敲桌子,其余正常输出。
for(int i =1;i<=100;i++)
{
if(((i%7)==0)||((i%10)==7)||((i/10)==7))
{
cout<<"敲桌子"<<endl;
}
else
{
cout<<i<<endl;
}
}
5. 嵌套循环
在循环体中再写一个循环。
//打印10x10的*
//外层循环
for(int i=0;i<10;i++)
{//内层循环
for(int j=0;j<10;j++)
{
cout << "* " ;
}
cout << endl;
}
外层执行一次,内层循环执行一周。
例子5:
乘法口诀表输出。
for(int i=1;i<=9;i++)
{
for(int j=1;j<=i;j++)
{
cout<<i<<"x"<<j<<"="<<(i*j)<<" ";
}
cout<<endl;
}
三、跳转语句
1. break语句
用于跳出选择结构或者循环结构
使用时机:
- switch中,终止case并跳出swtich
- 循环语句中,跳出当前整个循环
- 嵌套循环中,跳出最近的内层循环语句
//switch中
switch(a)
{
case A:
cout << "学生十分优秀!" << endl;
break; // 跳出switch,若不加,则会顺序执行后续的case
case B:
cout << "学生优秀!" << endl;
break;
default:
cout << "学生不及格!" << endl;
break;
}
//循环语句中
for(int i=0;i<10;i++)
{//当i=7时,跳出循环,不再输出,即7及以后不打印
if(i == 7)
{
break;
}
cout << i << endl;
}
//嵌套循环中:
for(int i=0;i<10;i++)
{//内层循环
for(int j=0;j<10;j++)
{
//i=7,则跳出for循环,每行只输出7个*
if(i == 7)
{
berak;
}
cout << "* " ;
}
cout << endl;
}
2. continue语句
在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环。
for(int i=0;i<10;i++)
{//当i=7时,跳出本次循环,即7不打印,但会打印后续的
if(i == 7)
{
continue; // 若执行到此,本次循环的后续执行语句跳过,进入下一次循环
}
cout << i << endl;
}
3. goto语句
可以无条件跳转语句。goto 标记;。若标记的名称存在,执行到goto语句时,会跳转到标记的位置。
goto PZ;//遇到这里时,直接跳到PZ去执行,中间的跳过不执行
...
...
PZ:
...
功能过于厉害,不建议使用,代码不够简明,流程混乱。
更多推荐
所有评论(0)