重要的循环结构

一、如何理解循环结果?

循环如字面的意思,反复地连续做某件事,而完成这某件事可以说是循环体通俗的说是循环的目的,为什么要做这个循环,取决你的需求,如图一
人一生中会做很多重复的事情,做重复的事情大体有三类,重复的衰减、重复的原地踏步、重复的继续成长,例如,对于人拥有的生命重复的一年一年减少,有的人每天干几大碗饭体重却还是原地踏步每天学习一点并能掌握的继续成长,我们如今每天所做的事情不就是在减少、原地踏步、继续成长中度过吗?如每天循环着上学,一节又一节的一日三餐,循环着做某件事(一局又一局的游戏或来回跑的事情)如图二
循环

二、while的解析与应用

while语句与if语句很相似,模样是

if(表达式)
{
	语句;
}	
while(表达式)
{
	语句;
}

大括号里面可以是单条语句,也可以是多条语句
if语句while语句有着相同的需要判断后面小括号里的表达式,但if语句判断为真完之后只是运行一次,然后跳出if语句不再运行这个if语句
while循环判断表达式为真之后运行里面的语句,它会再次返回判断表达式是否为真再决定是否执行while循环体里面的语句。如图所示
while

1. 判断表达式为一个整数值

如今你已知到循环过程了,让我们来尝试判断表达式为一个数值的时候的情况吧==(0为假,非0为真)==

int main() 
{
	while (0)
	{
		printf("再见\n");
	}
	while (5)
	{
		printf("你好\n");
	}
	return 0;
}

example1
如图所示,代码并没有进入while(0),反而一直在循环while(5),我们可以看出,0为假,判断过后并没有进入“再见”的打印;5为真,判断之后进入循环里面打印“你好”,它的过程是打印一次之后再回来判断表达式,看到5还是真就再次进入,因为没有条件结束循环,所以就会一直打印,也被称为死循环

2. 判断表达式为变量与逻辑的结合

一个数值为判断表达式通常不是我们想要的,毕竟人总不会一直徘徊一件事,总会在时间消磨下有进步或者退步,好了,如今我们来看一下怎么进步与退步

int main()
{
	int num = 1;
	while (num <= 10)	//增加
	{
		printf("%d ",num);
		num = num + 1;
	}
	printf("\n");

	num = 10;
	while (num > 0)		//减少
	{
		printf("%d ",num);
		num = num - 1;
	}
	return 0;
}

example2
第一个while,num初始值为1,判断是num小于等于(<=)10,打印数值是从1到10,打印之后我再让num加1,我们可以依次看到数值的增大
第二个while,num初始值重新赋值为10,判断是num大于(>)0,那么就是说我到0的时候它就不大于0了,如此,打印数值时可以看到是从10到0,打印之后再让num减1,慢慢的数值就减小,我们可以看到数值的减小

3. 玩高位与低位互换

直接上代码和图片,不废话

int main()
{
	int num = 0;
	int over = 0;
	printf("输入:");
	scanf("%d", &num);
	while (num != 0)
	{
		over = over * 10 + num % 10;
		num = num / 10;
	}
	printf("输出:%d\n", over);
	return 0;
}

inverse
整个过程是输入一个num判断这个num是否不等于(!=)0,不等于0就继续运行里面的语句,里面的过程是取余(求模)和取整(两个整数除法最后得到整数)
取余10结果就是个数那位(例如,在数学上123/10应该等于12······3得12余3而123%10就是得到后面那个余数);除以10结果就是把个位砍了(例如123/10等于12······3得12余3,而最后结果就取那个商就行了,所以理应是123/10=12

三、for的解析与应用

for循环的功能很强大,也比较便捷,它是把赋值、判断、增值(变化)集合在一个地方的,如下

for (表达式1;表达式2;表达式3)
	{
		语句;
	}
	

表达式1可以是赋值(例如i = 0;),也可以是定义初始化(int a = 0;注意在表达式1定义的变量只能在for语句内用),也可以是空语句(什么语句都不放为空)
表达式2可以是判断表达式,可以是一个数值(非0,一般不会这样),也可以是空语句(表达式2是数值或者空语句都会造成死循环)如果表达式2为0(假)就不会进入循环执行语句
表达式3什么都可以放,但通常是放数学运算、自增、自减这种,因为这样可以变动变量的值,也可以是一条空语句(再次说明什么语句都不放为空)
花括号内的语句可以是多条语句当只有一条语句时可以去掉花括号,但一般建议一直带着花括号因为这样可以更清晰的看清楚代码结构。

1. 正常使用for

int main()
{
	for (int a = 1;a <= 10;a++)		
	{
		printf("%d ",a);
	}
	return 0;
}

上面这样写 a 只能在for循环里面用
也可以像下面这样写,
下面这样写的好处是 a 可以在整个主函数里面用

int main()
{
	int a;//未初始化,可以初始化为0
	for ( a = 1;a <= 10;a++)		
	{
		printf("%d ",a);
	}	
	return 0;
}	

两个效果都一样,如图所示
for
以上是在不同地方定义a,根据自己需求来定义变量,毕竟在不同的局部内名字相同时有使用的范围。

2. for循环实现打印三角

不废话,直接上

int main()
{
	int a = 0;
	scanf("%d", &a);
	for (int i = 0; i < a; i++)//运行a次,设a = 5;
	{
		for (int k = 0; k < a - i-1; k++)	//关系是从第0行开始,第0行打印4个空格,第1行打印3个空格
		{									//i从0开始增,可以推算第0行是5-0-1(这时i为0,打印4个空格)
			printf(" ");					//第1行是5-1-1(这时i为1,打印3个空格)
		}
		for (int j = 0; j < i * 2 + 1; j++)	//第0行为1个*,第1行为3个*,刚好是i*2+1
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

triangle
解释不通,杨辉三角,可以尝试去看视频。

四、do…while的解析与应用

do…while语句,使用得频率相对于while和for是稍微有点少,它的使用方法是先用了一次再判断
基本形式如下:

do
{
	语句;
}while(判断表达式)

以顺序来说,第一次是先进去do执行一次花括号里面的语句(可以是多条语句),然后再判断while里面的表达式是否为真如果为真就返回继续循环,如果为假就退出do…while执行接下来后面的语句,所以说至少执行了一次循环其他状况基本和while一样

1. 条件不成立至少运行一次

int main()
{
	int a = 0;
	do
	{
		printf("%d\n", a);
	} while (a > 0);
	return 0;
}

one

2. 使用do…while判断有多少位数

int main()
{
	int a = 0;
	int num = 0;
	printf("请输入一个整数:");
	scanf("%d", &a);
	do
	{
		num++;
		a = a / 10;
	} while (a > 0);
	printf("位数:%d\n", num);
	return 0;
}

do while
以上代码对比于应用while与一个好处,就是哪怕输入的是0,也能算得出是有一位数

五、break与continue在循环中应用

1. break和continue的理解

break:break 的作⽤是⽤于永久的终⽌循环,只要 break 被执⾏,直接就会跳出循环,继续往后执⾏。
continue:continue的作⽤是跳过本次循环 continue 后边的代码,在 for 循环和while 循环中有所差异的。

2. break和continue在while和for熟悉使用

1. break

break在三个不同的循环几乎是同样的效果,下面展示:

int main()
{
	int a = 0;
	printf("while:\n");
	while (a <= 10)
	{
		if (a == 5)
		{
			break;
		}
		printf("%d ", a);
		a++;
	}
	printf("\nagain for:\n");
	a = 0;
	for (; a <= 10; a++)
	{
		if (a == 5)
		{
			break;
		}
		printf("%d ", a);
	}
	return 0;
}

break

2.continue

在while循环中,增值语句的位置会有不同的效果,下面展示放在后面:

int main()
{
	int a = 0;
	printf("for:\n");
	for (; a <= 10; a++)
	{
		if (a == 5)
		{
			continue;
		}
		printf("%d ", a);
	}
	printf("\nagain while:\n");
	a = 0;
	while (a <= 10)
	{
		if (a == 5)
		{
			continue;
		}
		printf("%d ", a);
		a++;
	}
	return 0;
}

continue
我们能直观的看到for循环内,当a==5时并没有打印5,因为continue特性是遇到continue就不再执行下面的语句了,所以它返回到for的表达式3里面了,继续了下一次的循环。
再看while循环,用continue特性来解释,它返回了while小括号里面的判断表达式,而5还是小于10a存的还是5,再下次还是进入if语句里面,再次遇到continue,周而复始,它并没有执行增值语句a++;所以它的值是不变的。
很多人认为为什么不放在if判断前面呢,可以,只要适当调整是可以实现的,但如果a++放在了printf前面,那么第一次打印的就没有0而是1了
对比continue在while与for里面,个人感觉for会更加方便,因为我并不用调整增值语句的位置。

六、总言

循环语句的适当使用才能让代码写的方便,看得直观,人生就是由顺序走年纪,选择改方向,循环去提高,代码也是以顺序、选择、循环去支撑基础的,人生如戏,戏如人生啊
祝你好运
dog

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值