栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

程序流程结构

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

程序流程结构

文章目录
  • 概述
  • 选择结构
    • if语句
    • 三目运算符
    • switch语句
  • 循环结构
    • while语句
    • do while语句
    • for语句
    • 嵌套循环
  • 跳转语句
    • break语句
    • continue
    • goto

概述

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

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

if…else语句
if…else if…else语句

示例一:

#define _CRT_SECURE_NO_WARNINGS
#include

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

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
#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("最大值为:%dn", c);

	printf("最大值为:%dn", 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("%dn", MAX(a, b));
	return 0;
}

结果:

最大值为:20
switch语句

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

#define _CRT_SECURE_NO_WARNINGS
#include

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
int main(void)
{
	int i = 1;
	while (i <= 20)
	{
		if(i % 2 == 0)
		{
			printf("%dt", i);
		}
		i++;
	}
	return 0;
}

结果:

2
4
6
8
10
12
14
16
18
20

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

#include
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("%dn", i);
		}
		i++;
		
	}
	return 0;
}

结果:

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

先执行语句,再进行条件判断。

示例一:

#include

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

结果:

0
1
2
3
4
5
6
7
8
9

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

#include
#include
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("%dn", i);
		}
		i++;

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

//用while语句写
#include
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("%dn", 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
#include
#include
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("%dn", value);
	}
	return 0;
}

结果:

2
7
3
2
6
5
5
5
6
4

示例二:猜数字

#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
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("%dn", value);
//	}


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

结果:

请输入一个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

int main(void)
{
	for (int i = 0; i < 5; i++)//外层执行一次,内层执行一周。
	{
		for (int j = 0; j < 5; j++)
		{
			printf("i=%d,j=%dn", 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
#include
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:%02dn",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=%dt",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

int main(void)
{
	for (int i = 0; i < 7; i++)
	{
		for (int j = 0; j < 7; j++)
		{
			if (j == 5)//入股满足则跳出离其最近的循环
			{
				break;
			}
			printf("%d %dt", 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
int main(void)
{
	for (int i = 0; i < 20; i++)
	{
		if (i % 2 == 1)
		{
			continue;
		}
		printf("%dn", i);
	}
	return 0;
 }

结果:

0
2
4
6
8
10
12
14
16
18
goto

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

#include
int main(void)
{
	printf("hello world1n");
	printf("hello world2n");
	goto FLAG;//跳转
	printf("hello world3n");
	printf("hello world4n");
	FLAG:
	printf("hello world5n");
	printf("hello world6n");
	return 0;
}

结果

hello world1
hello world2
hello world5
hello world6
#include
int main(void)//方法二
{
	printf("hello world1n");
	printf("hello world2n");
	goto FLAG;
	return 0;
FLAG:
	printf("hello world5n");
	printf("hello world6n");
	return 1;

}

示例二:

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

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

结果:

0
1
2
3
4
0
1
2
3
4
5
6
7
8
9
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/289497.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号