C++的程序流程结构
C++的程序流程结构
C++的程序流程结构分为顺序结构、选择结构、循环结构。
顺序结构
顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。
选择结构
选择结构用于判断给定的条件,根据判断的结果判断某些条件,根据判断的结果来控制程序的流程。
一、if语句
1、单行if语句
int main() {
//用户输入分数,如果分数大于600,视为考上一本大学,再屏幕上输出
//1、用户输入分数
int score1 = 0;
cout << "请输入一个分数:" << endl;
cin >> score1;
//2、打印用户输入的分数
cout << "您输入的分数为:" << score1 << endl;
//3、判断分数是否大于600,如果大于,那么输出
//注意事项,if后面不能添加分号
if (score1 > 600)
{
cout << "恭喜您考上了一本大学" << endl;
}
return 0;
}
2、多行if语句
int main() {
//用户输入分数,如果分数大于600,视为考上一本大学,在屏幕上输出
//如果没有考上一本大学,打印未考上一本大学
//1、输入考试分数
int score2 = 0;
cout << "请输入一个考试分数:" << endl;
cin >> score2;
//2、提示用户输入的分数
cout << "您输入的分数为:" << score2 << endl;
//3、判断 如果大于600,打印考上一本,否则打印未考上一本
if (score2 > 600)//大于600分执行下面大括号中的内容
{
cout << "恭喜您考上了一本大学" << endl;
}
else//不大于600分,执行else中的语句
{
cout << "未考上一本大学" << endl;
}
return 0;
}
3、嵌套if语句
int main() {
//提示用户输入一个高考考试分数,根据分数做如下判断
//分数如果大于600分视为考上一本,大于500考上二本,大于400考上三本,其余视为未考上本科
//大于600人大,大于650清华,700北大
//1、提示输入高考分数
int score3 = 0;
cout << "请输入一个考试分数:" << endl;
cin >> score3;
//2、显示高考分数
cout << "您输入的分数为:" << score3 << endl;
//3、判断
// 如果大于600 一本
// //大于700北大
// //大于650清华
// //其余人大
// 如果大于500 二本
// 如果大于400 三本
if (score3 > 600)
{
if (score3 > 700)
{
cout << "恭喜您考上了北大" << endl;
}
if (score3 > 650)
{
cout << "恭喜您考上了清华" << endl;
}
else
{
cout << "恭喜您考上了人大" << endl;
}
}
if (score3 > 500)
{
cout << "恭喜您考上了二本" << endl;
}
if (score3 > 400)
{
cout << "恭喜您考上了三本" << endl;
}
else
{
cout << "很遗憾,您没有考上本科" << endl;
}
return 0;
}
4、实践案例
三只小猪称体重,判断哪只最重
int main() {
//1、创建三只小猪的体重变量
int num1 = 0;
int num2 = 0;
int num3 = 0;
//2、创建三只小猪的体重变量
cout << "请输入小猪A的体重" << endl;
cin >> num1;
cout << "请输入小猪B的体重" << endl;
cin >> num2;
cout << "请输入小猪C的体重" << endl;
cin >> num3;
cout << "小猪A的体重为:" << num1 << endl;
cout << "小猪B的体重为:" << num2 << endl;
cout << "小猪C的体重为:" << num3 << endl;
//3、判断哪只最重
//先判断A和B的重量
if (num1 > num2)//A比B重
{
if (num1 > num3)//A比C重
{
cout << "小猪A最重" << endl;
}
else//C比A重
{
cout << "小猪C最重" << endl;
}
}
else//B比A重
{
if (num2 > num3)//B比C重
{
cout << "小猪B最重" << endl;
}
else//C比B重
{
cout << "小猪C最重" << endl;
}
}
return 0;
}
5、三目运算符
语法:
表达式1?表达式2:表达式3
- 先求解表达式1,若其值为真(非0)则将表达式2的值作为整个表达式的取值
- 否则(表达式1的值为0)将表达式3的值作为整个表达式的取值。
int main() {
//三目运算符
//创建三个变量a b c
//将a和b做比较,将变量大的值赋值给变量c
int a = 10;
int b = 20;
int c = 0;
c = (a > b ? a : b);
cout << "c = " << c << endl;
//在C++中三目运算符返回的是变量,可以继续赋值
(a > b ? a : b) = 100;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
return 0;
}
二、switch语句
注意:
- switch语句中的case如果没有break会一直向下执行。
- switch 优点:结构清晰,执行效率高。
- switch 缺点:判断时候只能是整型或者字符型,不可以是一个区间。
int main() {
//switch语句
//给电影打分
//10-9 经典
//8-7 非常好
//6-5 一般
//5以下 烂片
//1、提示用户给电影评分
cout << "请给电影进行打分" << endl;
//2、用户开始进行打分
int score = 0;
cin >> score;
cout << "您打的分数为:" << score << endl;
//3、根据用户输入的分数来提示用户最后的结果
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;//退出当前分支
}
return 0;
}
循环结构
循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构。它由循环体中的条件,判断继续执行某个功能还是退出循环。根据判断条件,循环结构又可细分为以下两种形式:先判断后执行的循环结构和先执行后判断的循环结构。
注意: 在执行循环语句的时候,程序必须提供跳出循环的出口,否则出现死循环
一、while循环
int main() {
//while循环
//在屏幕中打印0-9这10个数字
int num = 0;
//while()中填入循环条件
while (num < 10) {
cout << num << endl;
num++;
}
return 0;
}
二、while循环实现猜数字
//while循环猜数字
int main() {
//1、系统生成随机数
//添加随机数种子 作用利用当前系统时间生成随机数,防止每次随机数一样
srand((unsigned int)time(NULL));
int num = rand() % 100 + 1; //rand()%100 生成 0 + 1-99 + 1随机数
//2、玩家进行猜测
int val = 0;//玩家输入的数据
cout << "请输入数字:" << endl;
cin >> val;
//3、判断玩家的猜测
//猜错 提示猜的结果 过大或者过小 重新返回第2步
while (1)
{
if (val > num)
{
cout << "您猜的数字过大" << endl;
cout << "请继续输入" << endl;
cin >> val;
}
if (val < num)
{
cout << "您猜的数字过小" << endl;
cout << "请继续输入" << endl;
cin >> val;
}
else
{
cout << "恭喜您,猜对了!" << endl;
break;//猜对 退出游戏
}
}
return 0;
}
三、do…while循环
int main() {
int num = 0;
do
{
cout << num << endl;
num++;
} while (num < 10);
return 0;
}
四、do…while实现“水仙花数”
水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153
int main() {
//1、先打印所有三位数字
int num = 100;
do
{
//2、从所有三位数字中找到水仙花数
int a = 0;//个位
int b = 0;//十位
int c = 0;//百位
a = num % 10;//获取数字的个位
b = num / 10 % 10;//获取数字的十位
a = num % 100;//获取数字的百位
if (a * a * a + b * b * b + c * c * c == num)//如果是水仙花数,才打印
{
cout << num << endl;
}
num++;
} while (num < 1000);
return 0;
}
五、for循环
for循环是编程语言中一种循环语句,而循环语句由循环体及循环的判定条件两部分组成,其表达式为:for(单次表达式;条件表达式;末尾循环体){中间循环体;}
int main() {
//for循环
//数字0 打印到 数字9
for (int i = 0; i < 10; i++)
{
cout << i << endl;
}
return 0;
}
五、for循环实现“敲桌子”
7的倍数 num%7=0
个位有7 num%10=7
十位有7 num%/10=7
int main() {
//敲桌子案例
//1、先输出1-100这些数字
for (int i = 1; i <= 100; i++)
{
//2、从这100个数字中找到特殊数字,改为“敲桌子”
//7的倍数 %7=0
//个位有7 %10=7
//十位有7 %/10=7
if (i%7==0||i%10==7||i/10==7)//如果是特殊数字,打印敲桌子
{
cout << "敲桌子" << endl;
}
else
{
cout << i << endl;
}
}
return 0;
}
六、for循环的嵌套循环
循环嵌套,逻辑程序中常用的一种方法,不仅在C语言编程中用到,在卡西欧科学计算器中也常能用到的逻辑语言。在一个循环体语句中又包含另一个循环语句,称为循环嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环。各种语言中关于循环的嵌套的概念都是一样的
int main() {
//利用嵌套循环实现星图
//打印一行星图
//外层执行一次,内层执行一周
//外层循环
for (int i = 0; i < 10; i++)
{
//内层循环
for (int j = 0; j < 10; j++)
{
cout << "* ";
}
cout << endl;
}
return 0;
}
七、for循环的嵌套循环实现“乘法口诀表”
int main() {
//乘法口诀表
//列数<=当前行数
for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= i; j++)
{
cout << j << " * " << i << " = " << j * i << " ";
}
cout << endl;
}
return 0;
}
八、break语句
作用: 用于跳出选择结构或者循环结构
break使用的时机:
- 出现在switch条件语句中,作用是终止case并跳出switch
- 出现在循环语句中,作用是跳出当前的循环语句
- 出现在嵌套循环中,跳出最近的内层循环语句
int main() {
//break的使用时机
//1、出现在switch语句中
cout << "请选择副本难度" << endl;
cout << "1、普通" << endl;
cout << "2、中等" << endl;
cout << "3、困难" << endl;
int select = 0;//创建结果的变量
cin >> select;//等待用户的输入
switch (select)
{
case 1:
cout << "您选择的是普通难度" << endl;
break;
case 2:
cout << "您选择的是中等难度" << endl;
break;
case 3:
cout << "您选择的是困难难度" << endl;
break;
default:
break;
}
//2、出现在循环语句中
for (int i = 0; i < 10; i++)
{
//如果i等于5,推出循环,不再打印
if (i == 5)
{
break;//推出循环
}
cout << i << endl;
}
//3、出现在嵌套循环语句中
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (j == 5)
{
break;
}
cout << " * ";
}
cout << endl;
}
return 0;
}
九、continue语句
continue语句,执行到本行,就不再执行后面的代码了,而执行下一次循环(可以筛选一些数字)
int main() {
//continue语句,执行到本行,就不再执行后面的代码了,而执行下一次循环
for (int i = 0; i <= 100; i++)
{
//如果是奇数输出,偶数不输出
if (i%2 == 0)//0 2 4 6 8 10
{
continue;//可以筛选一些数字
}
cout << i << endl;
}
return 0;
}
十、goto语句
语法: goto FALG
int main() {
//goto语句,可以无条件跳转语句
cout << "1、xxxxx" << endl;
cout << "2、xxxxx" << endl;
goto FLAG;
cout << "3、xxxxx" << endl;
cout << "4、xxxxx" << endl;
FLAG:
cout << "5、xxxxx" << endl;
return 0;
}