Day6-"while、do-while"

Day4有跟大家提到for回圈,但并非所有条件都必须用for回圈来写,这个时候我们就可以利用while跟do-while来撰写

break叙述用来强制跳出回圈,在无穷回圈就必须配合break来跳离回圈

continue则是用来略过此次回圈中尚未执行的部分,直接回到回圈顶端

while回圈中可包含其他回圈,变成多重回圈

下面来看其范例

这个是只有一个的while的回圈

#include <stdio.h>
#include <stdlib.h>

void main(void)
{
	int i;
	int x;
	printf("请输入正数数值\n");
	scanf("%d",&i);
	printf("\n");
	while(i>1)
	{
		x=i*2;
		i=i-1;
		printf("i = %d\n\n",i);
		printf("x = %d\n\n",x);
		
	}
}

https://ithelp.ithome.com.tw/upload/images/20210913/20141711ZLklfYH7o9.png


这是发生无穷回圈的部分,我们将条件设为只要i>1就要进去执行,但i的值为3就代表一直符合条件,因此产生了无穷回圈

#include <stdio.h>
#include <stdlib.h>

void main(void)
{
	int i;
	int x;
	printf("请输入正数数值\n");
	scanf("%d",&i);
	printf("\n");
	while(i>1)
	{
		x=i*2;
		printf("i = %d\n\n",i);
		printf("x = %d\n\n",x);
	}
}

https://ithelp.ithome.com.tw/upload/images/20210913/2014171111T8xdmOMG.png


这个是无穷回圈但我们利用break来强制跳出回圈

#include <stdio.h>
#include <stdlib.h>

void main(void)
{
	int i;
	int x;
	printf("请输入正数数值\n");
	scanf("%d",&i);
	printf("\n");
	while(i>1)
	{
		x=i*2;
		printf("i = %d\n\n",i);
		printf("x = %d\n\n",x);
		break;
	}
}

https://ithelp.ithome.com.tw/upload/images/20210913/20141711kJL4FFk4Sv.png


这个是利用continue直接回到回圈顶端,因此并未执行印出x值的这行

#include <stdio.h>
#include <stdlib.h>

void main(void)
{
	int i;
	int x;
	printf("请输入正数数值\n");
	scanf("%d",&i);
	printf("\n");
	while(i>1)
	{
		x=i*2;
		i=i-1;
		printf("i = %d\n\n",i);
		continue;
		printf("x = %d\n\n",x);
	}
}

https://ithelp.ithome.com.tw/upload/images/20210913/20141711WXoJfEsn8l.png


do-while是在不使用breakc和continue的叙述下,至少会执行程序一次。

while的条件运算式後面规定必须出现分号,为了是帮助编译程序判断是while回圈的关键字还是do-while回圈的关键字

下面来看其范例

这个是i还符合条件因此要进去回圈执行

#include <stdio.h>
#include <stdlib.h>

void main(void)
{
	int i;
	int x;
	printf("请输入正数数值\n");
	scanf("%d",&i);
	printf("\n");
	do
	{
		x=i*2;
		i=i-1;
		printf("i = %d\n\n",i);
		printf("x = %d\n\n",x);
	}
	while(i>1);
}

https://ithelp.ithome.com.tw/upload/images/20210913/201417112qkFInyvPb.png


这个是i不符合条件,但因为do-while所以至少会执行一次

#include <stdio.h>
#include <stdlib.h>

void main(void)
{
	int i;
	int x;
	printf("请输入正数数值\n");
	scanf("%d",&i);
	printf("\n");
	do
	{
		x=i*2;
		i=i-1;
		printf("i = %d\n\n",i);
		printf("x = %d\n\n",x);
	}
	while(i<1);
}

https://ithelp.ithome.com.tw/upload/images/20210913/20141711cYCyPq5fD7.png

/images/emoticon/emoticon29.gif

Day6就到这啦BYE~


<<:  【Day 4】DevOps x Containerized x 王大陆都知道的容器化好处

>>:  铁人赛 Day13-- MySQL函式

DAY29-总结一下吧

前言: 来到倒数第二天啦,昨天我们展示了最後的React成果,今天就让我们来把这三十天的东西总结一下...

{CMoney战斗营} 的第一周 #物件导向

前言 在二十多岁的最後一年,决定再让自己任性一回,开始在 CMoney 参加工程师培训营,给自己半年...

D-02-验证结果 ? ExpectedObjects

如何验证结果 在学会如何Mock介面後,接下来处理的问题就是复杂的类别要怎麽来验证,当然可以透过JS...

Day 17 To Do List - 切版 2

第 17 天! 昨天我们建立了, To Do List 专案 这是我们预期的画面, 昨天做到 今天我...

[Day 13] Forensics 小进阶

我都是睡前写铁人文, 每天都是现场产文:) 所以在写铁人时就察觉一天又要过了 很好现在11:03分我...