C语言之for while语句详解

news2025/1/19 11:36:22

C语言之for while语句详解

文章目录

  • C语言之for while语句详解
    • 简介
    • 1 while语句
      • 1.1while语句的格式
      • 1.2 while语句的实践
    • 2 for
      • 2.1 for语句格式
      • 2.2 for循环的实践
    • 3 do while
      • 3.1 do while语句格式
      • 3.2 do while循环的实践
    • 3 循环中break和continue
      • 3.1 while语句中的break和continue
      • 3.1.1break和continue举例
      • 3.2 for语句中的break和continue
      • 3.2.1break和continue举例
    • 4 循环的嵌套
    • 5 go to语句

简介

在上一篇博客中,我们了解了基本的两种分支结构,在这篇博客中我将介绍一下循环结构,包括whilefordo while

1 while语句

1.1while语句的格式

while语句的格式如下:

1 while(表达式)
2      语句;

while语句流程图如下:
在这里插入图片描述
  ⾸先上来就是执⾏判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执⾏循环语句,语句执⾏完后再继续判断,是否进⾏下⼀次判断。

1.2 while语句的实践

练习1:在屏幕上打印1~100的数字

#include <stdio.h>
int main()
{
	int num = 1;
	while (num <= 100)
	{
		printf("%d ", num);
		num++;
	}
	return 0;
}

练习2:输入一个正整数,逆序打印这个数
例如:输入 3541 输出 1453
思路:

  1. 一个数%上10,即可得到这个数的最后一个位数。如1234%10=4。
  2. 一个数/上10,即可将这个数的最后一位去掉。
    即可打印一下最低位然后删除最低位 重复1 2步直到这个数为0即可实现逆序打印

代码实现如下:

#include <stdio.h>
int main()
{
	int num = 0;
	scanf("%d", &num);
	while (num)
	{
		printf("%d ", num % 10);//打印最低位的数
		num /= 10;//删除最低位是数
	}
	return 0;
}

2 for

2.1 for语句格式

1 for(表达式1;表达式2;表达式3)
2       语句;
//表达式1为循环的初始化
//表达式2为循环的判断
//表达式3为循环的调整

for语句流程图如下:
在这里插入图片描述
  ⾸先执⾏ 表达式1 初始化循环变量,接下来就是执⾏ 表达式2 的判断部分, 表达式2 的结果如果==0,则循环结束; 表达式2 的结果如果!=0则执⾏循环语句,循环语句执⾏完后,再去执⾏表 达式3 ,调整循环变量,然后再去 表达式2 的地⽅执⾏判断, 表达式2 的结果是否为0,决定循环是否继续。整个循环的过程中,表达式1初始化部分只被执⾏1次,剩下的就是表达式2、循环语句、表达式3在循环。

2.2 for循环的实践

练习1:在屏幕上打印1~100的数字

代码如下:

#include <stdio.h>
int main()
{
	int num = 0;
	for (num = 1; num <= 100; num++)
	{
		printf("%d ", num);
	}
	return 0;
}

for和while之间的异同点
  for和while语句都有初始化,判断和循环这三个部分,但for语句的三个部分更为紧凑,便于后期的代码维护,若while语句中的代码量较大的时候,这三个部分会显得十分分散,不利于代码的可读。

3 do while

3.1 do while语句格式

1 do
2     语句;
3 while(表达式);

  forwhile语句都是先判断表达式,若表达式不为真,则不继续执行。而do while语句,无论表达式为真假都会执行一次,执行完一次后再判断表达式真假,是否重复执行。
do while流程图如下:
在这里插入图片描述
  在 do while 循环中先执⾏图上的“语句”,执⾏完语句,在去执⾏“判断表达式”,判断表达式的
结果是!=0,则继续循环,执⾏循环语句;判断表达式的结果==0,则循环结束。
所以在 do while 语句中循环体是⾄少执⾏⼀次的,这是 do while 循环⽐较特殊的地⽅。

3.2 do while循环的实践

练习1:在屏幕上打印1~100的数字

#include <stdio.h>
int main()
{
	int num = 1;
	do
	{
		printf("%d ", num);
		num++;
	} while (num <= 100);
	return 0;
}

练习2:输入一个数,判断这是个几位数
例如:输入 5672 输出 4
思路:
上面提到一个数/10可以删除最低位,那么在删除的同时用个标志记录下,删除一次,标志加一

代码实现如下:

#include <stdio.h>
int main()
{
	int flag = 0;
	int num = 0;
	scanf("%d", &num);
	do
	{
		flag++;
		num /= 10;
	} while (num);
	printf("%d\n", flag);
	return 0;
}

3 循环中break和continue

在循环语句中,如果我达到了某种目标,我想让代码停下来就可以使用breakwhile
break 的作⽤是⽤于永久的终⽌循环,只要 break 被执⾏,直接就会跳出循环,继续往后执
⾏。
continue 的作⽤是跳过本次循环 continue 后边的代码,在 for 循环和 while 循环中有所
差异的。

3.1 while语句中的break和continue

3.1.1break和continue举例

在这里插入图片描述
  在上述代码中,打印1~10的代码中,我想让他打印到4就停止,我就可以在循环中加入一个判断,当num ==5的时候,代码就停止,利用break永久的终止循环。

在这里插入图片描述
  在上述代码中出现了死循环,这是因为当num == 5时,continue终止了本次循环,同时跳过了num++代码的调整部分,使得每次num回到判断部分num始终小于10,再次下去又continue跳过了调整部分,使得代码出现死循环。因此我们应该合理的使用continue。

do while语句中的break和continueh使用方法一样,故不作介绍

3.2 for语句中的break和continue

3.2.1break和continue举例

在这里插入图片描述
在for语句中,break用法与while语句一样,当num == 5时,永久终止本次循环,所以不会打印4之后的值。

在这里插入图片描述

在本次代码中,与while语句不同的是,continue只是跳过了num == 5时,continue后边的代码,故不会打印5,for语句的调整部分在上边,所以调整部分不会被跳过,故代码可以继续执行,不会进入死循环。

4 循环的嵌套

练习:打印100~200之间的素数
思路:

  1. 素数又叫质数(prime number),有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。
  2. 先产生100~200之间的素
  3. 要想知道n的素数,要用2~n-1的数试除n,也就需要生成
  4. 如果2~n-1之间有数字能整除n,则n不是素数,如果都不能整除,则n是素数
    代码实现:
#include <stdio.h>
int main()
{
	int i = 0;
	int count = 0;
	for (i = 100; i <= 200; i++) //生成100~200的数
	{
		int j = 0;
		int flag = 1; //设置一个标志 1代表素数,0代表非素数
		for (j = 2; j < i; j++) //生成2~i-1的数
		{
			if (i % j == 0) //判断是否为素数
			{
				flag = 0;
				break;
			}
		}
		if (flag == 1)
		{
			printf("%d ", i);//打印素数
			count++; //打印一次+1
		}
	}
	printf("\n%d", count); //100~200之间的素数
	return 0;
}

上面介绍了一种打印素数的方法,感兴趣的可以去打印素数的三种方法看看其他写法

5 go to语句

 C 语言中的 goto 语句允许把控制无条件转移到同一函数内的被标记的语句。

应用:

#include <stdio.h>
int main()
{
 printf("hehe\n");
 goto next:
 printf("haha\n");
 
next:
 printf("跳过了haha的打印\n"); 
 return 0;
}

  注意:在任何编程语言中,都不建议使用 goto 语句。因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。任何使用 goto 语句的程序可以改写成不需要使用 goto 语句的写法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1224706.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

M2 Mac Xcode编译报错 ‘***.framework/‘ for architecture arm64

In /Users/fly/Project/Pods/YYKit/Vendor/WebP.framework/WebP(anim_decode.o), building for iOS Simulator, but linking in object file built for iOS, file /Users/fly/Project/Pods/YYKit/Vendor/WebP.framework/WebP for architecture arm64 这是我当时编译模拟器时报…

java并发编程JUC:一、专栏配置+进程与线程+并行和并发+同步和异步+线程的创建、调用、查看、运行原理和相关API

专栏配置 pom.xml <properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies><dependency><groupId>org.projectlombok<…

柯桥会计培训|中级会计职称,考过中级,可以从事哪些工作?

拿下中级会计证书后&#xff0c;可以从事哪些工作呢&#xff1f;一起来看看吧~ 财务经理 财务经理可以说是会计人梦寐以求的岗位&#xff0c;上可以和老板畅聊公司财务情况&#xff0c;下可以管理整个财务部。但是在财务管理水平日益成为企业核心竞争力的今天&#xff0c;企业…

NSSCTF第13页(1)

[NCTF 2018]Easy_Audit 小小代码审计 $_REQUEST:PHP的内置变量&#xff0c;是一个数组&#xff0c;保存传递的参数&#xff0c;它的特性是如果get,post一起传参&#xff0c;则会优先post传参&#xff0c;可以由此进行变量覆盖。 $_SERVER:PHP的内置变量&#xff0c;是一个数组…

kubenetes-pod高可用

一、概述 实现pod层面的高可用&#xff0c;需要避免容器进程被终止避免Pod被驱逐&#xff1a; 设置合理的resources.memory limits 防止容器进程被 OOMKill&#xff0c;防止Pod被驱逐&#xff1b;设置合理的emptydir.sizeLimit 并且确保数据写入不超过emptyDir的限制&#xf…

【C++】chono库:使用及源码分析

文章目录 0. 概述1. duration1.1 分析std::chrono::duration_cast() 1.2 使用案例std::chrono::duration::count() 1.3 部分源码 2. time_point2.1 分析std::chrono::time_point_cast() 2.2 使用举例std::chrono::time_point::time_since_epoch() 2.3 部分源码 0. 概述 本篇文…

【数据结构】栈与队列面试题(C语言)

我们再用C语言做题时&#xff0c;是比较不方便的&#xff0c;因此我们在用到数据结构中的某些时只能手搓或者Ctrlcv 我们这里用到的栈或队列来自栈与队列的实现 有效的括号 有效的括号&#xff0c;链接奉上。 解题思路&#xff1a; 先说结论&#xff1a; 因为我们是在讲栈与…

mac系统安装docker desktop

Docker的基本概念 Docker 包括三个基本概念: 镜像&#xff08;Image&#xff09;&#xff1a;相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。比如说nginx,mysql,redis等软件可以做成一个镜像。容器&#…

C++知识点总结(6):高精度乘法

一、高精度数 低精度数 1. 输入两个数字 char a_str[1005] {}; long long b; cin >> a_str >> b; 2. 将高精度数转换为整型 int a[1005] {}; int len_a strlen(a_str); for (int i 0; i < len_a-1; i) {a[len_a-i-1] a_str[i] - 48; } 3. 计算 int …

java Could not resolve placeholder

1、参考&#xff1a;https://blog.csdn.net/yu1812531/article/details/123466616 2、配置文件: 3、在application.properties中设置要使用的配置文件

APIcloud 【现已更名 用友开发中心】 iOS发版 应用程序请求用户同意访问相机和照片,但没有在目的字符串中充分说明相机和照片的使用。

iOS 审核时 提示 首次安装软件 获取相机 相册 提示信息 怎么修改 我们注意到你的应用程序请求用户同意访问相机和照片&#xff0c;但没有在目的字符串中充分说明相机和照片的使用。 为了解决这个问题&#xff0c;修改应用信息中的目的字符串是合适的。相机和照片的Plist文件&a…

【giszz笔记】产品设计标准流程【6】

目录 六、组织评审 1.评审的类型 2.评审的人员——谁参加评审 3.评审的核心——怎么提问 & 答案谁说了算 4.评审的流程——前中后三部曲 5.评审的标的——漂亮的靶子 6.避免被“烤”问的一些技巧 7.搞几次评审比较好 这个产品设计系列&#xff0c;陆陆续续写了6篇了…

【DevOps】Git 图文详解(三):常用的 Git GUI

Git 图文详解&#xff08;三&#xff09;&#xff1a;常用的 Git GUI 1.SourceTree2.TortoiseGit3.VSCode 中的 Git 如果不想用命令行工具&#xff0c;完全可以安装一个 Git 的 GUI 工具&#xff0c;用的更简单、更舒服。不用记那么多命令了&#xff0c;极易上手&#xff0c;不…

C++初阶 日期类的实现(下)

目录 一、输入输出(>>,<<)重载的实现 1.1初始版 1.2友元并修改 1.2.1简单介绍下友元 1.2.2修改 1.3>>重载 二、条件判断操作符的实现 2.1操作符的实现 2.2!操作符的实现 2.3>操作符的实现 2.4>,<,<操作符的实现 三、日期-日期的实现 …

深入理解网络协议:通信世界的基石

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 在当今数字化时代&#xff0c;网络协议是连接世…

Intellij Idea屏蔽日志/过滤日志

一、安装插件 Grep Console 二、设置关键词&#xff0c;过滤日志 关键词的前后加上 .* 符号&#xff0c;类似&#xff1a; .*关键词.*设置后 &#xff0c;点击 Apply 即可过滤日志。

上网行为审计软件能审计到什么

上网行为审计软件是一种用于监控和分析员工在工作时间使用互联网行为的软件工具。这种软件可以帮助企业管理员工在工作时间内的互联网使用情况&#xff0c;以确保员工的行为符合企业规定和法律法规。 域之盾软件---上网行为审计软件可以审计到以下内容&#xff1a; 1、网络访问…

FFmpeg 6.1 发布,7.0时代即将来临

11月10日&#xff0c;FFmpeg 6.1正式发布。 FFmpeg 发布版本的时候&#xff0c;按照惯例&#xff0c;会选择一些物理学家名字作为代号&#xff0c;这一新版本代号为“Heaviside”。主要为纪念伟大的英国数学家和物理学家奥利弗黑维塞&#xff08;Oliver Heaviside)。 奥利弗黑维…

Vulhub靶场-KIOPTRIX: LEVEL 1

目录 环境配置 端口扫描 漏洞发现 mod_ssl漏洞利用 Samba远程代码执行漏洞利用 环境配置 首先去官网下载靶场导入到虚拟机中 下载地址&#xff1a;Kioptrix: Level 1 (#1) ~ VulnHub 下载完成之后导入到vmware中 这里需要改nat&#xff0c;桥接模式的靶机拿不到IP&…

Windows10下Tomcat8.5安装教程

文章目录 1.首先查看是否安装JDK。2.下载3.解压到指定目录&#xff08;安装路径&#xff09;4.启动Tomcat5.常见问题5.1.如果出现报错或者一闪而过5.2.Tomcat乱码 1.首先查看是否安装JDK。 CMD窗口输入命令 java -version 2.下载 历史版本下载地址&#xff1a;https://archi…