C语言中的while循环结构

C语言中的while循环结构

C语言提供了3中循环语句,while就是其中的一种,接下来就介绍一下while语句。
while语句的语法结构和if语句非常相似。

1.1 if和while的对比

if(表达式)
    语句;

while(表达式)
    语句;//如果循环体想包含更多的语句,可以加上大括号

写代码对比下:

#include <stdio.h>

int main()
{
    if(1)
        printf("北方\n");//if后面条件满足,打印一次北方
    return 0;
}
#include <stdio.h>

int main()
{
    while(1)
        printf("北方\n");//while后面的条件满足,死循环的打印北方
    return 0;
}

这就是他们的区别,while语句是可以实现死循环效果的。

1.2 while语句的执行流程

image
首先上来就是执行判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执行循环语句,语句执行完后再继续判断,是否进行下一次判断。

1.3 while循环的实践

练习:在屏幕上打印1~10的值
参考代码:

#include <stdio.h>

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

1.4 练习

输入一个正的正数,逆序打印这个整数的每一位
例如:
输入:1234 输出:4 3 2 1
输入:521 输出 1 2 5

题目解析

  1. 要想得到n的最低位,可以使用n%10的运算,得到的余数就是最低位,如:1234%10得到4
  2. 要想去掉n的最低位,找出倒数第二位,则使用n%n/10操作可以去掉最低位的,如:n=1234/10得到123,123相较于1234就去掉了最低位,123%10就得到倒数第二位
  3. 循环1和2两个步骤,在n变成0之前,就能得到所有的位。

参考代码:

#include <stdio.h>

int main()
{
	printf("请输入一个正整数:");
	int n = 0;
	scanf("%d", &n);
	while (n)
	{
		printf("%d ", n % 10);
		n /= 10;
	}
	return 0;
}

1.5 while循环中的break和continue

在循环执行的过程中,如果某些状况发生的时候,需要提前终止循环,这是非常常见的现象。C语言中提供了breakcontinue两个关键字,就是应该到循环中的。

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

1.5.1 break举例

#include <stdio.h>

int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)
		{
			break;
		}
		printf("%d ", i);
		i += 1;
	}
	return 0;
}

打印了1 2 3 4后,当i等于5的时候,循环执行break的地方终止,不再打印,不再循环。所以break的作用就是永久的终止循环,只要break被执行,break外的第一层循环就被终止了。

那以后我们在循环中,想在某种条件下终止循环,则可以使用break来完成我们想要的效果。

1.5.2 continue举例

continue是继续的意思,在循环体中的作用就是跳过本次循环中continue后边的代码,继续进行下一次循环的判断。

上面的代码,如果把break换成continue的结果如下:

#include <stdio.h>

int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)
		{
			continue;
			//当i==5时,跳出本次循环,进入下次循环,此时不再执行i+=1代码,导致死循环
		}
		printf("%d ", i);
		i += 1;
	}
	return 0;
}

到这里我们就能分析出来,continue可以帮助我们跳过某一循环continue后边的代码,直接到循环的判断部分,进行下一次循环的判断,如果循环的调整是在continue后边的话,可能会造成死循环。

改造如下,就不会死循环了。

#include <stdio.h>

int main()
{
	int i = 0;
	while (i <= 10)
	{
		
		i += 1;
		if (i == 5)
		{
			continue;
			//当i==5时,跳出本次循环,进入下次循环,此时不再执行i+=1代码,导致死循环
		}
		printf("%d ", i);
	}
	return 0;
}
posted @ 2023-07-27 16:22  davie2020  阅读(281)  评论(0编辑  收藏  举报