C语言之旅5--分支与循环【2】

本章概述

while循环

  • 概述 :C语言提供了3种循环语句,while就是其中一种。另外2种分别是fordo-while。接下来介绍while语句。while语句和if语句很像的,它的格式如下:

while( 条件是否为真)
{
代码......
}

while括号里面放的是条件是否为真,条件为真则就执行while里面的代码,否则就不执行 。和if的用法一模一样。接下来给大家举一个简单的例子。

描述:输入一个数值

输出:如果这数值大于5,则就循环打印hhh。

进行代码展示:

javascript 复制代码
#define  _CRT_SECURE_NO_WARNINGS   1
#include <stdio.h>
int main()
{
	int num = 0;
	scanf("%d", &num);
	while (num > 5)					//条件成立就循环打印,否则就不打印
	{
		printf("hhh");
	}
	return 0;
}

结果运行图展示:

  • 小TIP :当执行的代码只有一条语句的时候,我们可以不用加 { }
  • 执行图展示
    先判断while括号里面的表达式(条件)是否为真,表达式的结果为0(条件为假),循环直接结束;表达式的结果不为0(条件为真),则就执行里面的程序,在返回来进行条件的判断,判断是否条件成立。进行代码展示:

用while循环打印出1~10数值

javascript 复制代码
#define  _CRT_SECURE_NO_WARNINGS   1
#include <stdio.h>
int main()
{
	int i = 0;
	while (i < 10)        //条件不成立的时候,就结束循环
	{
		i++;
		printf("%d ", i);
	}
	return 0;
}

结果运行图展示:

for循环

  • 概述for循环是三种循环中使用频率最多的一个语句。给大家介绍一下它的结构形式:

for (表达式 1 ; 表达式 2 ;表达式 3 )
{
语句;
}
表达式 1: 用于变量的初始化。
表达式 2:用于循环结束的条件判断。
表达式 3:用于调整循环变量

  • for循环的流程图
  • 进行代码展示:
javascript 复制代码
#include <stdio.h>
int main()
{
	int i=0;
	for(i=0;i<4;i++)
	{
		printf("hhh");
	}
	return 0;
}

当执行到for循环语句的时候,先执行 i = 0;,接着判断 i 结果是否小于4。条件成立就执行for循环里面的语句。当for循环里面只有一句代码时,{ }也可以省略不写。

do-while循环

这个语句和while的用法很类似,结构如下:

do
{
语句1;
语句2;
......
}while(判断条件);-----和while一样,条件为假就跳出循环。

它和while有一点不同------这个语句上来就先执行代码,执行到最后再判断while(条件)是否成立。大家要注意,在do--while后面是有''的。进行代码展示:

复制代码
简单演示打印10个数字
javascript 复制代码
#define  _CRT_SECURE_NO_WARNINGS   1
#include <stdio.h>
int main()
{
	int i = 0;
	do
	{
		i++;
		printf("%d ", i);
	} while (i < 10);
	return 0;
}

结果运行图:

break和continue语句

  • 前情提示 :break和continue语句适用于循环里面的。
  • break: 它的意思就是打破。它用在switch语句和循环语句里面。在循环语句里面会打破当前的循环,它每次只会打破一层循环,不会一下子打破所有的循环。进行代码展示:
javascript 复制代码
#define  _CRT_SECURE_NO_WARNINGS   1
#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		printf("%d ", i);
		if (i == 5)
			break;       //当i值为5时,就会打破当前的循环
	}
	return 0;
}

结果运行图:

打印到5时,就跳出了循环了,后面的信息就不再打印了。

  • continue: 它的意思就是继续,再开始。它会先暂时跳过continue后面的代码,不会打破当前的循环。它不像break那么绝情。我们就用上面的代码进行continue改造,进行代码展示:
javascript 复制代码
#define  _CRT_SECURE_NO_WARNINGS   1
#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		if (i == 5)
			continue;
		printf("%d ", i);    //i为5时,不再打印数值5。
	}						//但不会打破循环,会继续打印往后的数值
	return 0;
}

结果运行图:

大家可以对比一下这俩个语句的区别,还是很明显的。

循环嵌套

循环嵌套就是循环里面还有循环。在这里给大家写个题目进行演示:进行题目展示:

复制代码
找出100~200之间的素数,并打印在屏幕上。
注:素数⼜称质数,只能被1和本⾝整除的数字。

题目解析:

复制代码
1:  首先我们先产生100到200之间的数字,这就要用到循环了。
2:  我们再对每个数字进行素数的判断。
3: 用每个数字除以2~自身之间的数字,能被整除就不是素数,否则就是素数。2~自身之间的数字需要用
到循环产生。
javascript 复制代码
#define  _CRT_SECURE_NO_WARNINGS   1
#include <stdio.h>
int main()
{
	int i = 0;
	int y = 0;
	for (i = 100; i <= 200; i++)
	{
		int falge = 1;			//假设是素数
		for (y = 2; y < i; y++)
		{
			if (i % y == 0)
			{
				falge = 0;   //不是素数就会赋值falge=0,跳出循环
				break;
			}
		}
		if (falge == 1)			//为素数就睡打印出来
			printf("%d ", i);
	}
	return 0;
}

结果运行图:

goto语句

咱们在前面讲过了,C语言是一种结构化语言 。它需要各种语言的支持,分别是分支,循环和转向语句。前面俩咱们已经讲过了,接下来要讲的goto语句就是转向语句。它的结构如下:

goto 标志 ;
......
标志:
注解:goto后面的 标志 可自定义,goto语句会自动跳转到我们标志好的代码处。

进行代码展示:

复制代码
我们循环打印"hhhh"字符串
javascript 复制代码
#define  _CRT_SECURE_NO_WARNINGS   1
#include <stdio.h>
int main()
{
	next:					//标志词可自定义
	printf("hhhh\n");
	 goto next;				//程序遇到goto语句时,会自动找到标志处的位置(next)
	return 0;
}

结果运行图:

  • 注意 :goto语句只能在同一个函数里面用,不能从一个函数体里面跳转到另一个函数体里面。当我们有多层循环嵌套的时候,中间遇到紧急情况,我们需要跳转的时候,就可以用goto语句立马跳转到我们的标志处,这比break迅速多了,因为break一次只能打破一个循环体。
  • 提醒 :goto语句不要随便乱用,因为只要我们打好标志点,它就可以随意跳到转,这就会导致代码运行发生混乱。所以,要谨慎使用。

彩蛋时刻!!!

歌曲:《少年和月光》

每章一句:"再小的努力,乘以365都很明显 "感谢你能看到这里,点赞+关注+收藏+转发是对我最大的鼓励,咱们下期见!!!

相关推荐
黄雪超10 分钟前
JVM——Java语法糖与Java编译器
java·开发语言·jvm
旷野本野11 分钟前
【JavaWeb+后端常用部件】
java·开发语言
坐吃山猪12 分钟前
Python多环境管理指南
开发语言·python
大G哥39 分钟前
Rust 之 trait 与泛型的奥秘
java·开发语言·jvm·数据结构·rust
刘梓谦41 分钟前
Qt获取CPU使用率及内存占用大小
开发语言·c++·qt
珊瑚里的鱼44 分钟前
第八讲 | stack和queue的使用及其模拟实现
开发语言·c++·笔记·visualstudio·stl·学习方法·visual studio
isyangli_blog1 小时前
(1-1)Java的JDK、JRE、JVM三者间的关系
java·开发语言·jvm
oliveira-time3 小时前
Java 1.8(也称为Java 8)
java·开发语言
可乐鸡翅好好吃5 小时前
not a genuine st device abort connection的问题
c语言·stm32·单片机·keil
钰爱&7 小时前
【Linux】POSIX 线程信号量与互斥锁▲
java·开发语言·jvm