C++ 程序流程结构详解

网友投稿 708 2022-12-09

C++ 程序流程结构详解

C++ 程序流程结构详解

目录1.选择结构1.1 判断语句if1.单行if语句 if2.多行if语句 if...else3.多条件if语句 if...else if...else if ...else4.嵌套if语句1.2 三目运算符判断1.3 开关语句switch2.循环结构2.1 while2.2 do...while2.3 for2.4 循环控制1.break:跳出循环2.continu:跳出本次循环,继续下一次循环3.goto:跳转到label,接着往下走2.5 循环嵌套总结

1.选择结构

1.1 判断语句if

1.单行if语句 if

#include

using namespace std;

int main() {

//选择语句 if语句

//用户输入分数,如果分数大于600,视为考上一本,在屏幕上输出

//1、用户输入分数

int score = 0;

cout << "请输入一个分数:"<

cin >> score;

//2、打印用户输入的分数

cout << "您输入的分数为:" << score << endl;

//3、判断是否大于600,如果大于,那么输出

if (score >600)

{

cout << "恭喜您考上了一本大学";

}

return 0;

}

2.多行if语句 if...else

#include

using namespace std;

int main() {

//1、用户输入分数

int score = 0;

cout << "请输入一个分数:" << endl;

cin >> score;

//2、打印用户输入的分数

cout << "您输入的分数为:" << score << endl;

//3、判断是否大于600,如果大于,那么输出

if (score > 600)

{

cout << "恭喜 您考上了一本大学!";

}

else

{

cout << "未考上一本";

}

return 0;

}

3.多条件if语句 if...else if...else if ...else

#include

using namespace std;

int main() {

//1、用户输入分数

int score = 0;

cout << "请输入一个分数:" << endl;

cin >> score;

//2、打印用户输入的分数

cout << "您输入的分数为:" << score << endl;

//3、分数大于600,视为考上一本大学

//大于500,视为考上二本大学,屏幕输出

//大于400,视为考上三本大学,屏幕输出

//小于等于400,视为未考上本科

if (score > 600)

{

cout << "恭喜 您考上了一本大学!";

}

else if (score > 500)

{

cout << "恭喜 您考上了二本大学!";

}

else if (score > 400)

{

cout << "恭喜 您考上了二本大学!";

}

else

{

cout << "未考上本科";

}

return 0;

}

4.嵌套if语句

例1:三个数找最大

#include

using namespace std;

int main() {

int a, http://b, c;

cin >> a >> b >> c;

cout << "A=" << a << endl;

cout << "B=" << b << endl;

cout << "C=" << c << endl;

if (a>b)// a比b大

{

if (a>c)//a最大

{

cout << "A最大" << endl;

}

else

{

cout << "C最大" << endl;

}

}

else// b比a大

{

if (b > c)//b最大

{

cout << "B最大" << endl;

}

else

{

cout << "C最大" << endl;

}

}

return 0;

}

例2:判断是否是闰年

闰年的定义:

能被4整除,但不能被100整除;

能被400整除;

法一:使用关系运算符判断

#include

using namespace std; //命名空间

int main() { //主函数

int year;

cin >> year;

if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)//&&优先级更高

{

cout << "闰年" << endl;

}

else

{

cout << "不是闰年" << endl;

}

return 0;

}

珐二:嵌套if

#include

using namespace std; //命名空间

int main() { //主函数

int year;

cin >> year;

if (year % 4 == 0)

{

if (year%100==0)

{

if (year % 400 == 0) {

cout << "闰年" << endl;

}

else

{

cout << "不是闰年" << endl;

}

}

else

{

cout << "闰年" << endl;

}

}

else

{

cout << "不是闰年" << endl;

}

return 0;

}

1.2 三目运算符判断

语法:表达式1 ? 表达式2 : 表达式3

【解释】若表达式1的值为真,则执行表达式2,并返回表达式2的结果;

若表达式1的值为假,则执行表达式3,并返回表达式3的结果

例3:两个数找最大

#include

using namespace std;

int main() {

//三目运算符

//创建3个变量 a b c

// 将a和b做比较,将变量大的值赋值给变量c

int a = 10;

int b = 0;

int c;

c=(a > b ? a : b);

cout << "C=" << c << endl;//10

//C++中三目运算符返回的是变量,可以继续赋值

(a > b ? a : b)=100;

cout << "A=" << a << endl;

cout << "B=" << b << endl;

return 0;

}

例4:判断一个数是否是3和5的整倍数

#include

using namespace std; //命名空间

int main() { //主函数

int num;

cout << "Please input a number:" << endl;

cin >> num;

//法1:

(num % 3== 0&&num%5==0) ?

cout << "yes" << endl :

cout << "no" << endl;

//法2:

(num % 3 == 0)?

((num%5==0) ? cout << "yes" << endl : cout << "no" << endl):

cout << "no" << endl;

return 0;

}

1.3 开关语句switch

注意点:

1.switch语句中表达式类型只能是整型或字符型;

2.case里如果没有break,那么程序会一直向下执行。

例5:给电影评分

#include

using namespace std;

int main() {

//switch语句

//给电影进行打分

//10~9 经典

//8~7 非常好

//6~5 一般

//5以下 烂片

//1、提示用户给电影评分

cout << "请给电影评分" << endl;

//2、用户开始进行打分

int score;

cin >> score;

cout << "Score=" << 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;

}

//if和switch区别

//switch 缺点,判断时候只能是整型或者字符型,不可以是一个区间

//switch 有点,结构清晰,执行效率高

return 0;

}

例6:星期几

switch语句内遇break才停止执行

#include

using namespace std; //命名空间

int main() { //主函数

int n;

cin >> n;

switch (n)//首先跳转到与输入一样的case,接着往下走,遇break停止或知道语句走完才停止

{

case 1:

cout << "Monday" << endl;

case 2:

cout << "Tuesday" << endl;

case 3:

cout << "Wednesday" << endl;

case 4:

cout << "Thursday" << endl;

case 5:

cout << "Friday" << endl;

case 6:

cout << "Saturday" << endl;

case 7:

cout << "Sunday" << endl;

default:

cout << "input error" << endl;

}

return 0;

}

输出结果:

2.循环结构

2.1 while

例1:用while循环计算1~10累加

#include

using namespace std; //命名空间

int main() { //主函数

int i = 1, sum = 0;

while (i<=10)

{

sum += i;

i++;

}

cout << sum << endl;

return 0;

}

例2:案例-猜数字

#include

using namespace std;

#include

int main() {

//添加随机数种子 作用利用当前系统时间生成随机数,防止每次随机数都一样

srand((unsigned int)time(NULL));

//1、系统生成随机数

int num = rand() % 100 + 1; //生成0~100的随机数

cout << num << endl;

//2、玩家进行猜测

cout << "请玩家输入猜测的数据:" << endl;

int val; //玩家输入的数据

while (1)

{

cin >> val;

//3、判断玩家的猜测

if (val > num)

{

cout << "猜测过大!" << endl;

}

else if(val < num)

{

cout << "猜测过小!" << endl;

}

else

{

cout << "猜对啦!" << endl;

break; //利用该关键字,退出循环

}

}

//猜对 退出游戏

//猜错 提示猜的结果,过大或者过小 重新返回第2步

return 0;

}

2.2 do...while

例3:用do...while循环计算1~10累加

#include

using namespace std; //命名空间

int main() { //主函数

int i = 1, sum = 0;

do

{

sum += i;

i++;

} while (i <= 10);

cout << sum << endl;//55

return 0;

}

while与do...while的区别:

do...while无论while中条件是否为真,先执行{}内语句;

while中条件若为假,则不执行。

例4:案例-水仙花数

#include

using namespace std;

int main() {

int num = 100;

do

{

int a = num % 10;// 个位

int b = num / 10 % 10; //十位

int c = num / 100; //百位

if (num == a*a*a+b*b*b+c*c*c)

{

cout << num << endl;

}

num++;

} while (num<1000);

return 0;

}

2.3 for

例5:用for循环计算1~10累加

#include

using namespace std; //命名空间

int main() { //主函数

int sum = 0;

for (int i = 1; i <= 10; i++)

{

sum += i;

}

cout << sum << endl;

return 0;

}

例6:敲桌子

#include

using namespace std;

int main() {

//1、输出1~100的数字

//2、找7的倍数,个位有7,十位有7

for (int i = 1; i <=100; i++)

{

if (i%7==0||i%10==7||i/10%10==7) {

cout << "敲桌子!" << endl;

}

else

{

cout << i << endl;

}

}

return 0;

}

2.4 循环控制

1.break:跳出循环

例7:遇到负数,则停止累加

#include

using namespace std;

int main()

{

int i, n, sum;

sum = 0;

cout << "input 10 number" << endl;

for (i = 1; i <= 10; i++)

{

cout << i << ":";

cin >> n;

if (n < 0) //判断输入是否为负数,是负数就停止累加

break;

sum += n; //对输入的数进行累加

}

cout << "The Result :" << sum << endl;

return 0;

}

2.continu:跳出本次循环,继续下一次循环

例8:遇负,则不进行累加,接着加下一个正数

#include

using namespace std;

int main()

{

int i, n, sum;

sum = 0;

cout << "input 10 number" << endl;

for (i = 1; i <= 10; i++)

{

cout << i << ":";

cin >> n;

if (n < 0) //判断输入是否为负数

continue;

sum += n; //对输入的数进行累加

}

cout << "The Result :" << sum << endl;

return 0;

}

3.goto:跳转到label,接着往下走

例9:跳转

#include

using namespace std;

int main()

{

int ivar = 0; //定义一个整型变量,初始化为0

int num = 0; //定义一个整型变量,初始化为0

label: //定义一个标签

ivar++; //ivar自加1

num += ivar; //累加求和

if (ivar < 10) //判断ivar是否小于100

{

goto label; //转向标签

}

cout << ivar << num << endl;

return 0;

}

注意点:goto语句不能越过复合语句之外的变量定义的语句,例如,下面是非法的

goto label;

int i 10;

label:

cout << "goto" << endl;

正确的:

goto label;

{

int i 10;

}

label:

cout << "goto" << endl;

2.5 循环嵌套

例10:打印三角形

#include

using namespace std; //命名空间

int main() { //主函数

int i, j, k;

for (i = 1; i <= 5; i++) //控制行数

{

for (j = 1; j <= 5 - i; j++) //控制空格数

cout << " ";

for (k = 1; k <= 2 * i - 1; k++) //控制打印*号的数量

cout << "*";

cout << endl;

}

return 0;

}

例11:打印星图

#include

using namespace std;

int main() {

//利用嵌套循环实现星图

//打印一行星图

//外层循环

for (int i = 0; i < 10; i++)

{

//内层循环

for (int j = 0; j < 10; j++) {

cout << "* ";

}

cout << endl;

}

return 0;

}

例12:输出乘法口诀表

#include

using namespace std;

int main() {

for (int i = 1; i < 10; i++)

{

for (int j = 1; j <= i; j++) {

cout << j << "*" << i << "=" << i * j << "\t";

}

cout << endl;

}

return 0;

}

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

cin >> score;

//2、打印用户输入的分数

cout << "您输入的分数为:" << score << endl;

//3、判断是否大于600,如果大于,那么输出

if (score >600)

{

cout << "恭喜您考上了一本大学";

}

return 0;

}

2.多行if语句 if...else

#include

using namespace std;

int main() {

//1、用户输入分数

int score = 0;

cout << "请输入一个分数:" << endl;

cin >> score;

//2、打印用户输入的分数

cout << "您输入的分数为:" << score << endl;

//3、判断是否大于600,如果大于,那么输出

if (score > 600)

{

cout << "恭喜 您考上了一本大学!";

}

else

{

cout << "未考上一本";

}

return 0;

}

3.多条件if语句 if...else if...else if ...else

#include

using namespace std;

int main() {

//1、用户输入分数

int score = 0;

cout << "请输入一个分数:" << endl;

cin >> score;

//2、打印用户输入的分数

cout << "您输入的分数为:" << score << endl;

//3、分数大于600,视为考上一本大学

//大于500,视为考上二本大学,屏幕输出

//大于400,视为考上三本大学,屏幕输出

//小于等于400,视为未考上本科

if (score > 600)

{

cout << "恭喜 您考上了一本大学!";

}

else if (score > 500)

{

cout << "恭喜 您考上了二本大学!";

}

else if (score > 400)

{

cout << "恭喜 您考上了二本大学!";

}

else

{

cout << "未考上本科";

}

return 0;

}

4.嵌套if语句

例1:三个数找最大

#include

using namespace std;

int main() {

int a, http://b, c;

cin >> a >> b >> c;

cout << "A=" << a << endl;

cout << "B=" << b << endl;

cout << "C=" << c << endl;

if (a>b)// a比b大

{

if (a>c)//a最大

{

cout << "A最大" << endl;

}

else

{

cout << "C最大" << endl;

}

}

else// b比a大

{

if (b > c)//b最大

{

cout << "B最大" << endl;

}

else

{

cout << "C最大" << endl;

}

}

return 0;

}

例2:判断是否是闰年

闰年的定义:

能被4整除,但不能被100整除;

能被400整除;

法一:使用关系运算符判断

#include

using namespace std; //命名空间

int main() { //主函数

int year;

cin >> year;

if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)//&&优先级更高

{

cout << "闰年" << endl;

}

else

{

cout << "不是闰年" << endl;

}

return 0;

}

珐二:嵌套if

#include

using namespace std; //命名空间

int main() { //主函数

int year;

cin >> year;

if (year % 4 == 0)

{

if (year%100==0)

{

if (year % 400 == 0) {

cout << "闰年" << endl;

}

else

{

cout << "不是闰年" << endl;

}

}

else

{

cout << "闰年" << endl;

}

}

else

{

cout << "不是闰年" << endl;

}

return 0;

}

1.2 三目运算符判断

语法:表达式1 ? 表达式2 : 表达式3

【解释】若表达式1的值为真,则执行表达式2,并返回表达式2的结果;

若表达式1的值为假,则执行表达式3,并返回表达式3的结果

例3:两个数找最大

#include

using namespace std;

int main() {

//三目运算符

//创建3个变量 a b c

// 将a和b做比较,将变量大的值赋值给变量c

int a = 10;

int b = 0;

int c;

c=(a > b ? a : b);

cout << "C=" << c << endl;//10

//C++中三目运算符返回的是变量,可以继续赋值

(a > b ? a : b)=100;

cout << "A=" << a << endl;

cout << "B=" << b << endl;

return 0;

}

例4:判断一个数是否是3和5的整倍数

#include

using namespace std; //命名空间

int main() { //主函数

int num;

cout << "Please input a number:" << endl;

cin >> num;

//法1:

(num % 3== 0&&num%5==0) ?

cout << "yes" << endl :

cout << "no" << endl;

//法2:

(num % 3 == 0)?

((num%5==0) ? cout << "yes" << endl : cout << "no" << endl):

cout << "no" << endl;

return 0;

}

1.3 开关语句switch

注意点:

1.switch语句中表达式类型只能是整型或字符型;

2.case里如果没有break,那么程序会一直向下执行。

例5:给电影评分

#include

using namespace std;

int main() {

//switch语句

//给电影进行打分

//10~9 经典

//8~7 非常好

//6~5 一般

//5以下 烂片

//1、提示用户给电影评分

cout << "请给电影评分" << endl;

//2、用户开始进行打分

int score;

cin >> score;

cout << "Score=" << 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;

}

//if和switch区别

//switch 缺点,判断时候只能是整型或者字符型,不可以是一个区间

//switch 有点,结构清晰,执行效率高

return 0;

}

例6:星期几

switch语句内遇break才停止执行

#include

using namespace std; //命名空间

int main() { //主函数

int n;

cin >> n;

switch (n)//首先跳转到与输入一样的case,接着往下走,遇break停止或知道语句走完才停止

{

case 1:

cout << "Monday" << endl;

case 2:

cout << "Tuesday" << endl;

case 3:

cout << "Wednesday" << endl;

case 4:

cout << "Thursday" << endl;

case 5:

cout << "Friday" << endl;

case 6:

cout << "Saturday" << endl;

case 7:

cout << "Sunday" << endl;

default:

cout << "input error" << endl;

}

return 0;

}

输出结果:

2.循环结构

2.1 while

例1:用while循环计算1~10累加

#include

using namespace std; //命名空间

int main() { //主函数

int i = 1, sum = 0;

while (i<=10)

{

sum += i;

i++;

}

cout << sum << endl;

return 0;

}

例2:案例-猜数字

#include

using namespace std;

#include

int main() {

//添加随机数种子 作用利用当前系统时间生成随机数,防止每次随机数都一样

srand((unsigned int)time(NULL));

//1、系统生成随机数

int num = rand() % 100 + 1; //生成0~100的随机数

cout << num << endl;

//2、玩家进行猜测

cout << "请玩家输入猜测的数据:" << endl;

int val; //玩家输入的数据

while (1)

{

cin >> val;

//3、判断玩家的猜测

if (val > num)

{

cout << "猜测过大!" << endl;

}

else if(val < num)

{

cout << "猜测过小!" << endl;

}

else

{

cout << "猜对啦!" << endl;

break; //利用该关键字,退出循环

}

}

//猜对 退出游戏

//猜错 提示猜的结果,过大或者过小 重新返回第2步

return 0;

}

2.2 do...while

例3:用do...while循环计算1~10累加

#include

using namespace std; //命名空间

int main() { //主函数

int i = 1, sum = 0;

do

{

sum += i;

i++;

} while (i <= 10);

cout << sum << endl;//55

return 0;

}

while与do...while的区别:

do...while无论while中条件是否为真,先执行{}内语句;

while中条件若为假,则不执行。

例4:案例-水仙花数

#include

using namespace std;

int main() {

int num = 100;

do

{

int a = num % 10;// 个位

int b = num / 10 % 10; //十位

int c = num / 100; //百位

if (num == a*a*a+b*b*b+c*c*c)

{

cout << num << endl;

}

num++;

} while (num<1000);

return 0;

}

2.3 for

例5:用for循环计算1~10累加

#include

using namespace std; //命名空间

int main() { //主函数

int sum = 0;

for (int i = 1; i <= 10; i++)

{

sum += i;

}

cout << sum << endl;

return 0;

}

例6:敲桌子

#include

using namespace std;

int main() {

//1、输出1~100的数字

//2、找7的倍数,个位有7,十位有7

for (int i = 1; i <=100; i++)

{

if (i%7==0||i%10==7||i/10%10==7) {

cout << "敲桌子!" << endl;

}

else

{

cout << i << endl;

}

}

return 0;

}

2.4 循环控制

1.break:跳出循环

例7:遇到负数,则停止累加

#include

using namespace std;

int main()

{

int i, n, sum;

sum = 0;

cout << "input 10 number" << endl;

for (i = 1; i <= 10; i++)

{

cout << i << ":";

cin >> n;

if (n < 0) //判断输入是否为负数,是负数就停止累加

break;

sum += n; //对输入的数进行累加

}

cout << "The Result :" << sum << endl;

return 0;

}

2.continu:跳出本次循环,继续下一次循环

例8:遇负,则不进行累加,接着加下一个正数

#include

using namespace std;

int main()

{

int i, n, sum;

sum = 0;

cout << "input 10 number" << endl;

for (i = 1; i <= 10; i++)

{

cout << i << ":";

cin >> n;

if (n < 0) //判断输入是否为负数

continue;

sum += n; //对输入的数进行累加

}

cout << "The Result :" << sum << endl;

return 0;

}

3.goto:跳转到label,接着往下走

例9:跳转

#include

using namespace std;

int main()

{

int ivar = 0; //定义一个整型变量,初始化为0

int num = 0; //定义一个整型变量,初始化为0

label: //定义一个标签

ivar++; //ivar自加1

num += ivar; //累加求和

if (ivar < 10) //判断ivar是否小于100

{

goto label; //转向标签

}

cout << ivar << num << endl;

return 0;

}

注意点:goto语句不能越过复合语句之外的变量定义的语句,例如,下面是非法的

goto label;

int i 10;

label:

cout << "goto" << endl;

正确的:

goto label;

{

int i 10;

}

label:

cout << "goto" << endl;

2.5 循环嵌套

例10:打印三角形

#include

using namespace std; //命名空间

int main() { //主函数

int i, j, k;

for (i = 1; i <= 5; i++) //控制行数

{

for (j = 1; j <= 5 - i; j++) //控制空格数

cout << " ";

for (k = 1; k <= 2 * i - 1; k++) //控制打印*号的数量

cout << "*";

cout << endl;

}

return 0;

}

例11:打印星图

#include

using namespace std;

int main() {

//利用嵌套循环实现星图

//打印一行星图

//外层循环

for (int i = 0; i < 10; i++)

{

//内层循环

for (int j = 0; j < 10; j++) {

cout << "* ";

}

cout << endl;

}

return 0;

}

例12:输出乘法口诀表

#include

using namespace std;

int main() {

for (int i = 1; i < 10; i++)

{

for (int j = 1; j <= i; j++) {

cout << j << "*" << i << "=" << i * j << "\t";

}

cout << endl;

}

return 0;

}

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Mockito mock Kotlin Object类方法报错解决方法
下一篇:SpringBoot打印POST请求原始入参body体方式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~