IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 程序流程结构 -> 正文阅读

[C++知识库]程序流程结构

概述

C语言支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构。

  • 顺序结构:程序按顺序执行,不发生跳转。
  • 选择结构:依据是否满足条件,有选择的执行相应功能。
  • 循环结构:依据条件是否满足,循环多次执行某段代码。

选择结构

if语句

if…else语句
if…else if…else语句
在这里插入图片描述

示例一

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main(void)
{
	int score;
	scanf("%d", &score);
	//如果表达式结果为真,执行{}对应的代码
	//if(表达式) {}
	//if(表达式){}  else {}
	//if(表达式1) {} else if(表达式2) {}  else
	if (score > 700)//只会执行一个条件分值,满足第一则不再执行下面的语句。个
	{
		printf("我要上清华。\n");
		if (score > 720)//条件嵌套。
		{
			printf("我要学习算机。\n");
		}
		else if (score > 710)
		{
			printf("我要学习自动化。\n");
		}
		else
		{
			printf("我要学习人工智能。");
		}
	}
	
	else if (score > 680)
	{
		printf("我要上北大。");
	}
	else
	{
		printf("我要上传智。");

	}
	return 0;
}

结果:

712
我要上清华。
我要学习自动化。

示例二:三只小猪称体重

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main(void)
{
	int a, b, c;
	printf("请输入三只小猪的体重:");
	scanf("%d%d%d", &a, &b, &c);
	if (a > b)
	{
		if (a > c)
		{
			printf("a小猪是最重的。");
		}
		else
		{
			printf("c小猪是最重的。");
		
		}

	}
	else
	{
		if (b > c)
		{
			printf("b小猪是最重的。");
		}
		else
		{
			printf("c小猪是最重的。");

		}

	}
	return 0;

}

结果:

请输入三只小猪的体重:22 23 24
c小猪是最重的。

三目运算符

表达式1 ?表达式2 :表达式3
当表达式1满足的时候,执行表达式2,否则执行表达式3
示例

#include<stdio.h>
#define MAX(a,b) (a)>(b)?(a):(b) //宏定义一个函数
int main1101(void)
{
	int a = 10;
	int b = 20;
	int c;
	//表达式1?表达式2:表达式3
	//c = a > b ? a : b;
	//printf("最大值为:%d\n", c);

	printf("最大值为:%d\n", a > b ? a : b);


	//if (a > b)
	//{
	//	printf("a大\n");
	//}
	//else
	//{
	//	printf("b大\n");
	//}


	return 0;
}

int main(void)
{
	int a = 10;
	int b = 20;
	printf("%d\n", MAX(a, b));
	return 0;
}

结果:

最大值为:20

switch语句

switch根据开关判断比if语句的执行效率高,但是在判断区间时只能判断一个区间。不允许嵌套
示例

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main(void)
{
	int score;
	scanf("%d", &score);
	switch (score/10)
	{
	case 10:
		printf("优秀\n");
		break;
	case 9:
		printf("优秀\n");
		break;
	case 8:
		printf("良好\n");
		break;
	case 7:
		printf("及格\n");
		break;
	case 6:
		printf("及格\n");
		break;
	default:
		printf("不及格\n");
		break;
	}
	return 0;


}

结果:

73
及格

循环结构

while语句

在这里插入图片描述

示例一

#include<stdio.h>
int main(void)
{
	int i = 1;
	while (i <= 20)
	{
		if(i % 2 == 0)
		{
			printf("%d\t", i);
		}
		i++;
	}
	return 0;
}

结果:

2
4
6
8
10
12
14
16
18
20

示例二:逢7或7的倍数敲桌子

#include<stdio.h>
int main(void)
{
	int i = 50;
	while (i < 81)
	{
		//7的倍数  ||各位带7  ||十位带7
		if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7)//%表述余数为0,/表示商为7
		{
			printf("敲桌子\n");
		}
		else
		{
			printf("%d\n", i);
		}
		i++;
		
	}
	return 0;
}

结果:

50
51
52
53
54
55
敲桌子
敲桌子
58
59
60
61
62
敲桌子
64
65
66
敲桌子
68
69
敲桌子
敲桌子
敲桌子
敲桌子
敲桌子
敲桌子
敲桌子
敲桌子
敲桌子
敲桌子
80

do while语句

先执行语句,再进行条件判断。
在这里插入图片描述
示例一

#include<stdio.h>

int main()
{
	int i = 0;
	do {
		printf("%d\n", i);
		i++;
	} while (i < 10);
	return 0;
}

结果:

0
1
2
3
4
5
6
7
8
9

示例二:水仙花 从100-999各个位数的立方和等于这个数本身,就是一个水仙花数。

#include<stdio.h>
#include<math.h>
int main(void)
{
	int i = 100;
	do
	{
		//个位数
		int a = i % 10;
		//十位数
		int b = i / 10 % 10;
		//百位数
		int c = i / 100;
		if (pow(a,3) +pow(b,3) + pow(c,3) == i)
		{
			printf("%d\n", i);
		}
		i++;

	} while (i <= 999);
	return 0;
}

//用while语句写
#include<stdio.h>
int main(void)
{
	int i = 100;
	while (i <= 999)
	{
		int a = i % 10;
		int b = i / 10 % 10;
		int c = i / 100;
		if (pow(a,3) +pow(b,3) + pow(c,3) == i)
		{
			printf("%d\n", i);
		}
		i++;

	}
	return 0;
}

结果:

153
370
371
407

for语句

在这里插入图片描述执行顺序:1-2-4-3-2-4-3-2-4-3…

死循样式:

  1. while(1)
  2. for( ; ; )
    示例一:产生随机数
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main(void)
{
	//产生随机数
	//1.导入头文件 time.h  stdlib.h
	//2.添加随机数种子
	//3.获取随机数

	srand((unsigned int)time(NULL));//每次随机数不一样

	for (int i = 0; i < 10; i++)
	{
		int value = rand() % 10;//0-9
		printf("%d\n", value);
	}
	return 0;
}

结果:

2
7
3
2
6
5
5
5
6
4

示例二:猜数字

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main(void)
{
	//产生随机数
	//1.导入头文件 time.h  stdlib.h
	//2.添加随机数种子
	//3.获取随机数

	srand((unsigned int)time(NULL));//每次随机数不一样

//	for (int i = 0; i < 10; i++)
//	{
//		int value = rand() % 10;//0-9
//		printf("%d\n", value);
//	}


	int value = rand() % 100;//0-99
	int num;
	for (;;)
	{
		printf("请输入一个1-100的数字:");
		scanf("%d", &num);
		if (value > num)
		{
			printf("输入太小了\n");
		}
		else if(value<num)
		{
			printf("输入太大了\n");
		}
		else
		{
			printf("输入正确\n");
			break;
		}
	}
	return 0;
}

结果:

请输入一个1-100的数字:50
输入太大了
请输入一个1-100的数字:40
输入太大了
请输入一个1-100的数字:30
输入太大了
请输入一个1-100的数字:20
输入太大了
请输入一个1-100的数字:10
输入太大了
请输入一个1-100的数字:1
输入太小了
请输入一个1-100的数字:5
输入太大了
请输入一个1-100的数字:4
输入太大了
请输入一个1-100的数字:3
输入正确

嵌套循环

循环语句之间可以相互嵌套:
示例一

#include<stdio.h>

int main(void)
{
	for (int i = 0; i < 5; i++)//外层执行一次,内层执行一周。
	{
		for (int j = 0; j < 5; j++)
		{
			printf("i=%d,j=%d\n", i, j);
		}
	}
	return 0;
}

结果:

i=0,j=0
i=0,j=1
i=0,j=2
i=0,j=3
i=0,j=4
i=1,j=0
i=1,j=1
i=1,j=2
i=1,j=3
i=1,j=4
i=2,j=0
i=2,j=1
i=2,j=2
i=2,j=3
i=2,j=4
i=3,j=0
i=3,j=1
i=3,j=2
i=3,j=3
i=3,j=4
i=4,j=0
i=4,j=1
i=4,j=2
i=4,j=3
i=4,j=4

示例二:电子时钟


#include<stdio.h>
#include<Windows.h>
int main(void)
{
	
	for (int i = 0; i < 24; i++)
	{
		for (int j = 0; j < 60; j++)
		{
			for (int k = 0; k < 60; k++)
			{
				system("cls");
				printf("%02d:%02d:%02d\n",i,j,k);
				Sleep(950);
			}
		}
	}
	return 0;
}

示例三:九九乘法表

//九九乘法表
//1*1=1
//1*2=2 2*2=4
//1*3=3 2*3=6 3*3=9...
int main(void)//外层控制行,内层控制列
{
	for (int i = 1; i <= 9; i++)
	{
		for (int j = 1;j <= i; j++)
		{
			printf("%d*%d=%d\t",j, i, i*j);
		}
		printf("\n");
	}
	return 0;
}

结果:

1*1=1
1*2=2   2*2=4
1*3=3   2*3=6   3*3=9
1*4=4   2*4=8   3*4=12  4*4=16
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81

跳转语句

break语句

在switch条件语句和循环语句中都可以使用break语句(跳出循环):

  • 当它出现在switch条件语句中时,作用是终止某个case并跳出switch结构。
  • 当它出现在循环语句中,作用是跳出当前内循环语句,执行后面的代码。
  • 当它出现在嵌套循环语句中,跳出最近的内循环语句,执行后面的代码。
    示例
#include<stdio.h>

int main(void)
{
	for (int i = 0; i < 7; i++)
	{
		for (int j = 0; j < 7; j++)
		{
			if (j == 5)//入股满足则跳出离其最近的循环
			{
				break;
			}
			printf("%d %d\t", i, j);
		}
		printf("\n");
	}
	return 0;
}

结果:

0 0     0 1     0 2     0 3     0 4
1 0     1 1     1 2     1 3     1 4
2 0     2 1     2 2     2 3     2 4
3 0     3 1     3 2     3 3     3 4
4 0     4 1     4 2     4 3     4 4
5 0     5 1     5 2     5 3     5 4
6 0     6 1     6 2     6 3     6 4

continue

在循环语句中,如果希望立即终止本次循环,并执行下一次循环,此时就需要使用continue语句。(循坏还继续)
示例

#include<stdio.h>
int main(void)
{
	for (int i = 0; i < 20; i++)
	{
		if (i % 2 == 1)
		{
			continue;
		}
		printf("%d\n", i);
	}
	return 0;
 }

结果:

0
2
4
6
8
10
12
14
16
18

goto

无条件跳转,尽量少用
示例一

#include<stdio.h>
int main(void)
{
	printf("hello world1\n");
	printf("hello world2\n");
	goto FLAG;//跳转
	printf("hello world3\n");
	printf("hello world4\n");
	FLAG:
	printf("hello world5\n");
	printf("hello world6\n");
	return 0;
}

结果

hello world1
hello world2
hello world5
hello world6
#include<stdio.h>
int main(void)//方法二
{
	printf("hello world1\n");
	printf("hello world2\n");
	goto FLAG;
	return 0;
FLAG:
	printf("hello world5\n");
	printf("hello world6\n");
	return 1;

}

示例二

#include<stdio.h>
int main(void)
{
	int i = 0, j = 0;
	for ( i = 0; i < 10; i++)
	{
		if (i == 5)
		{
			goto FLAG;//可以从一个循环跳转到另一个循环。
		}
		printf("%d\n",i);
		
	}
	
	

	for (j = 0; j< 10; j ++ )
	{
	FLAG:
		
		printf("%d\n", j);
	}
	return 0;
}

结果:

0
1
2
3
4
0
1
2
3
4
5
6
7
8
9
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-03 16:54:12  更:2021-10-03 16:55:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:55:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码