C语言 循环语句

前言:

        在解决实际问题中常常需要对诺干数据进行多次重复操作,例如:累加,阶乘类问题时,使用顺序和选择结构是无法解决的,所以我们就需要使用循环结构来实现的重复多次操作。C语言中有三种循环结构,分别是:while语句,do while语句和for语句。

三种语句的形式

        1.while语句的形式和执行流程

//while语句的形式
while (表达式) {
	循环语句;
}

        特点:先判断表达式,后执行循环体。表达式可以为任意类型的合法表达式,成立就执行循环体,然后返回表达式进行判断。

        例如:我们要实现 1+2+3+4+5,实现这一式子。

int main()
{
	int sum = 0, i = 1;//创建变量分别储存结果和初始值
	while (i <= 5) {//表达式为真进入循环
		sum += i;//累加
		i++;//更改数值以及使得接近循环结束条件,否则为死循环
	}
	printf("%d", sum);//输出
	return 0;
}

        编写循环时一定要注意判断条件值的变化,避免写成死循环。如上如果去掉i++那么这个代码就会无限的循环下去。

 2. do while语句的形式和执行流程

do {
	循环体;
} while (表示式);

        特点:先执行循环体再判断循环条件,循环体至少执行一次。while后的分号不可以省略。

 

        还是一开始的例子:我们要实现 1+2+3+4+5,而现在使用do while语句。

int main() {
	int sum = 0, i = 1;//初始化变量
	do{
		sum += i;//累加
		i++;//循环调整
	} while (i <= 5);//判断条件
	printf("%d",sum);
	return 0;
}

 

 

        3. for 语句的形式和执行流程

for (表达式1; 表达式2;表达式3) {
	循环体;
}

 

        for语句中三个表达式的主要作用 :

         表达式1:设置初始条件,只执行一次。可以为零个,一个,或多个变量赋初值。

         表达式2:是循环条件的表达式,用来判断是否继续循环。每次执行循环体前执行此表达式判断是否继续循环.

         表达式3:作为循环的调整,例如循环变量增值,执行完循环体后执行。

        for语句三个表达式是否可以省略:

         表达式1:可以省略,不设置初值。

         表达式2:也可以省略,不用此来作为循环条件表达式默认为真。

         表达式3:还是可以省略,但应另设他法来结束循环。

        例:实现 1+2+3+4+5,这此我们使用for语句。

int main() {
	int i, sum = 0;
	for (i = 1; i <= 5; i++) {
		sum += i;
	}
	printf("%d", sum);
	return 0;
}

        我们可以从这个例子看出三种循环之间是可以互相转换的,这里如果不知道循环次数,推荐使用while或者do while语句,for语句多用于已知循环次数,也可以用与未知次数。

        for循环的嵌套

        一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。比如一个for循环内还有一个for循环例如

int main() {
	int i, j;
	for (i = 0; i < 4; i++) {//外循环
		for (j = 0; j < 4; j++) {//内循环
			printf("-");
		}
		printf("\n");//内层循环结束后换行返回至i++,在进行一轮输出
	}
	return 0;
}

        这段代码就为for循环的嵌套使用,共输出外层四次内层四次共16个减号。 

while与do while的相同与不同

      相同点:

        两者的相同点在于当执行条件成立时,执行循环内容,直到条件不成立时退出循环。循环条件是否成立的判断方法与if语句一致。

      不同点:

        1.while语句先判断后执行,do while语句先执行后判断。

        2.while语句的循环体最少执行一次,而do while至少执行一次(无条件执行一次)。

        3.while语句后无分号,而do while后必须跟分号。

break语句和continue语句

        当需要提前结束正在执行的循环时,可以使用break和continue来实现。break的作用是直接结束循环,如果是一层循环则直接跳出循环。如果多层循环嵌套就为跳出当前循环。continue则是结束本层循环,continue后的语句都将不执行直接进入下一次循环。我们以for循环为例展示:

int main() {
	int i;
	for (i = 1; i <= 10; i++) {
		printf("%d ", i);
	}
	printf("\n");
	for (i = 1; i <= 10; i++) {
		if (i == 5) break;//条件满足时直接跳出了整个循环
		printf("%d ", i);
	}
	printf("\n");
	for (i = 1; i <= 10; i++) {
		if (i == 5) continue;//条件满足时不执行之后循环体内语句
		printf("%d ", i);
	}
	printf("\n");
	return 0;
}

         

        这就是break和continue的区别:一个直接辞职不干,另一个罢工一天。

    双层嵌套的break语句

        我们上面说过双层嵌套中只是跳出一层,用个例子来看一下。

int main() {
	int i, j;
	for (i = 5; i >= 1; i--) {
		printf("num ");
		for (j = 0; j <= 10; j++) {
			if (j == 5) break;//条件成立结束循环
			printf("%d ", j);
		}
		printf("yes");//执行此语句后返回表达式3
		putchar(10);
	}
	for (i = 5; i >= 1; i--) {
		printf("num ");
		for (j = 0; j <= 10; j++) {
			printf("%d ", j);
		}
		printf("yes");
		putchar(10);
	}
	return 0;
}

 

        以上就是今天的所有内容,如有问题请指出,感谢大家的观看 !

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值