C语言基础——循环(2)+关机程序
欢迎点赞支持
个人主页:励志不掉头发的内向程序员;
专栏主页:C语言基础;
文章目录
目录
前言
一、for循环的补充
二、循环的嵌套
1、嵌套的介绍
1.1 练习:
题目解析:
优化:
三、goto语句
1、goto介绍
2、使用方式
四、关机程序
1.、原理
2.、实现
总结
前言
对于上一章节的循环的学习,相信大家对于循环已经有了自己的一些理解,那么我们这一章节就来看看循环的嵌套吧,就是一个循环套着一个循环,本质上还是循环,但是在理解方面可能会更加的困难,我相信小伙伴们肯定已经跃跃欲试了吧,那就让我们来一起看看吧。
一、for循环的补充
上一节课讲了说for循环是建立在while循环的缺陷的基础上的,把while循环的三个关键点放在一起,这样就解决了关键点难以查找的问题,while循环的三个关键点并不是一定要存在的,而是可以缺少的,但是可能会使程序死循环,那么for循环呢,是不是也是这样的呢,我们来尝试一下吧。
int main()
{int i = 0;for (; i < 10; i++){printf("%d ", i);}return 0;
}
我们可以看到在这个地方初始化消失了,但是由于我们在前面已经定义了,所以说我们就可以不再定义一次而直接写判断条件和调整方式,和初始化直接写在for循环里面没有什么区别。

其他也是同理,但是要注意,如果把后面的调整或者判断条件删了,程序就有可能陷入死循环(判断部分缺失就意味着程序恒成立),所以如果要删除的话一定要谨记。
二、循环的嵌套
1、嵌套的介绍
我们之前学了for循环和while循环等,嵌套其实就是在这些循环的基础上,在其内部再次使用一个循环,其实在语法上,没有什么其他的用法,一般来说我们在使用循环时要用到这三种循环的嵌套才能更好的解决问题。所以说我们就从一些练习来看看循环的嵌套的使用方法和精妙之处吧。
1.1 练习:
找出1~100之间的素数???
我们都知道(可能)素数就是除了1和它本身就没有其他的数字能把它整除,所以我们应该怎么解决这一问题呢?
题目解析:
我们既然知道了原理那就应该有思路,不就是看看有没有除了1和它本身的数字可以和它整除嘛,这样我们是不是就可以去试试循环,假如我们要看看a是不是素数,那就看看从1到a有没有其他的数字可以和a整除嘛,如果有的话那就不是素数,如果没有的话就是素数了。但是我们要求的可不是一个数a啊,是要找到从1~100中的素数啊,那怎么办呢,我们想想要是再有一个循环就好了,所以说这时嵌套循环就来了,我们先写两个循环,一个实现找一个数的素数,再一个实现从1~100循环。
1.
int main()
{int a = 13;int flag = 1;for (int i = 2; i <= a - 1; i++){if (a % i == 0){flag = 0;break;}}if (flag){printf("%d ", a);}return 0;
}
这行代码表示的就是如何判断出是否是素数的代码,我想大家可能有一些地方看不懂,但是没有关系,我来给大家讲解一下,我们知道素数就是除了1和它本身之外没有其他的数可以将它整除的数字,所以说我们可以让a去取除了1和a以外的数字的余数,如果有余数为0的数字出现就证明它不是素数,反之则证明了它是素数。所以我们就可以用一个循环去一个一个的试,flat的作用是假设,假设a是素数,如果a不是素数的话就让flat = 0;这样我们跳出循环时就可以判断a到底是不是素数了。
2.
int main()
{for (int i = 1; i <= 100; i++){printf("%d ", i);}return 0;
}
这里很显然就是一个从1~100的遍历。
如果我们把这两个函数嵌套一下,那就即实现了1~100的遍历,也实现了求它们的素数,我们可以来尝试一下。
int main()
{for (int i = 1; i <= 100; i++){int flag = 1;for (int j = 2; j <= i - 1; j++){if (i % j == 0){flag = 0;break;}}if (flag){printf("%d ", i);}}return 0;
}
这里我们可以看到,将两个循环嵌套起来,既实现了找素数的功能,也可以一次性找很多个素数。

这样这一道题就解出来了啦,但是我们可以看看有没有什么办法能让我们的计算机轻松一点呢?就比如说少循环几次呢也就是我们所说的优化程序呢?
优化:
我们都知道,如果不是素数,那么必然是有可以整除的数的,就比如8 = 2 * 4;但是我们再想想,是不是只要找到前面的数就不需要找后面的数了呢,那么我们取中间值就可以了,中间值是取我们的平方根就好了。
#include<math.h>
int main()
{for (int i = 1; i <= 100; i++){int flag = 1;for (int j = 2; j < sqrt(i); j++){if (i % j == 0){flag = 0;break;}}if (flag){printf("%d ", i);}}return 0;
}
我们来看看取平方根的方式吧,本质上是一个sqrt函数,用法非常简单,就是这样

将我们要取平方根的数字放到它的括号里面就可以了,但是它是在一个math的头文件里的,所以要使用时我们得带上。
![]()

还可以优化吗?我们再想想,emmmmm~~,是不是只有奇数才可能是素数,而偶数是绝对不可能的呢?那我们来试试看吧
int main()
{for (int i = 1; i <= 100; i += 2){int flag = 1;for (int j = 2; j < sqrt(i); j++){if (i % j == 0){flag = 0;break;}}if (flag){printf("%d ", i);}}return 0;
}
好啦,现在应该不能再优化了,那么这个程序就写完啦。

我们要知道,一个题目的解法肯定是不止一种的,在面对很多种解法是应该怎么办呢,肯定就是选择最好的那种。
三、goto语句
1、goto介绍
goto从字面上看就是去哪里的意思,其实使用方式也差不多,就是去往自己指定的地方,如果指定的地方是在前面,那就会在走一次前面的程序,可能会导致死循环,如果是指定后面,那就会跳过一些程序直接到指定的位置,就是因为goto语句跳来跳去的,所以我们一般不频繁的使用它,因为很容易会导致直接思想混乱。
2、使用方式
1.
goto ***;
***:
2.
***:
goto ***;
使用方法很简单,就是goto后面用一个自己命名的内容然后再跳到自己命名的内容的地方去。
例如:
int main()
{printf("呵呵呵\n");goto next;printf("哈哈哈\n");
next:printf("好好好\n");return 0;
}
这一串代码就是我命名了一个next的地方让goto跳到next的程序去。所以说它会不输出哈哈哈而直接输出好好好。

如果让goto往回跳的话很容易产生死循环,所以说要尽量小心使用。
int main()
{
next:printf("呵呵呵\n");goto next;printf("哈哈哈\n");printf("好好好\n");return 0;
}

四、关机程序
在这里教大家一个非常有意思的程序,可以整蛊一下自己的朋友,那就是让他说自己是猪,不然就关机它的电脑,接下来我们来看看怎么实现吧。
1.、原理
其实在我们计算机中按Window+R后会出现一个窗口

在这个窗口输入cmd后回车就可以打开计算机的底层菜单。

在这个菜单中可以对计算机进行指令,比如说创建菜单啊,关机电脑啊之类的,大家可以自己研究研究,但是在这里输入shutdown -t 60就可以让计算机在60秒后关机,如果说输入shutdown -a就可以取消电脑关机,我们在知道这些以后如何在C语言中实现呢?这得依靠一个system的库函数来实现,它需要一个叫stdlib的头文件来使用。
2.、实现
#include<string.h>
#include<stdlib.h>
int main()
{char a[20] = { 0 };system("shutdown -s -t 60");
again:printf("你的电脑还有1分钟关机,如果不想关机,请输入:我是猪\n");scanf("%s", a);if (strcmp(a, "我是猪") == 0){system("shutdown -a");}else{goto again;}return 0;
}
实现起来还是蛮简单的,但是我们要注意,字符串的比较不是直接用==来比较,而是用一个strcmp的库函数来比较,而这个库函数在string的头文件之中,使用方式如下

将要比较的内容放在里面,如果它们相同,那返回值就为0。
总结
本节课主要是说明了循环的嵌套和对上一章节循环的完善,循环到此就全部结束啦,我们下一章节就来讲讲数组吧,数组部分也有蛮多内容的,期待小伙伴的前来关注,谢谢小伙伴们啦。如果有哪里写的不好请指出。感谢。
相关文章:
C语言基础——循环(2)+关机程序
欢迎点赞支持 个人主页:励志不掉头发的内向程序员; 专栏主页:C语言基础; 文章目录 目录 前言 一、for循环的补充 二、循环的嵌套 1、嵌套的介绍 1.1 练习: 题目解析: 优化: 三、goto语句 1、go…...
cnVcXsrv 21.1.13.1—VcXsrv 21.1.13中文版本简单说明~~
对于VcXsrv的使用目的和用途相信大家都很了解。前不久VcXsrv做了更新,并且将项目托管到github上了。链接如下: VcXsrv: Windows X-server based on the xorg git sourceshttps://github.com/marchaesen/vcxsrv也可以简单查看如下链接: VcXs…...
心链2---前端开发(整合路由,搜索页面,用户信息页开发)
心链——伙伴匹配系统 接口调试 说书人📖:上回书说到用了两种方法查询标签1.SQL查询,2.内存查询;两种查询效率是部分上下,打的是难解难分,是时大地皴裂,天色聚变,老祖斟酌再三最后决…...
wordpress主题模板兔Modown 9.1开心版附送erphpdown v17.1插件
Modown 9.1开心版是一款模板兔开发的wordpress主题可,持续更新多年,优秀的资源下载类主题该模板基于Erphpdown,可以销售软件、视频教程、文章等等,通过主题和插件结合可以实现付费下载、付费阅读等功能,配合模板兔的一…...
openai api的初次尝试
不懂已经不去百度了,现在直接问chatgpt就解决绝大多数问题了。 OpenAI API目前还没有官方支持的npm库,但是您可以使用现有的第三方npm库进行OpenAI API的访问和使用。这里提供一个npm库 openai-node 的安装和使用方法: 在命令行或终端中使用…...
Distributed Transactions Mit 6.824
Topic1:distributed transactions concurrency control atomic commit 传统计划:事务 程序员标记代码序列的开始/结束作为事务。 事务示例 x 和 y 是银行余额——数据库表中的记录。x 和 y 位于不同的服务器上(可能在不同的银行&#x…...
Redis可视化工具:Another Redis Desktop Manager下载安装使用
1.Github下载 github下载地址: Releases qishibo/AnotherRedisDesktopManager GitHub 2. 安装 直接双击exe文件进行安装 3. 连接Redis服务 先启动Redis服务,具体启动过程可参考: Windows安装并启动Redis服务端(zip包)…...
Parquet文件格式详解(含行、列式存储区别)
Parquet文件格式详解 Parquet 是一种列式存储格式,旨在高效地存储和处理大规模数据集。它被设计用于在大数据生态系统中进行数据存储和分析,如 Apache Hadoop 和 Apache Spark。 行式存储 vs 列式存储 在了解 Parquet 文件格式之前,先来对…...
一文了解https为什么是安全的
目录 前言一、https和http二、http为什么不安全?2.1 http的工作原理2.2 http的明文传输 三、https3.1 加密3.2 身份验证 四、总结 前言 目前绝大多数网站都已经切换到了https,切换的原因很简单,因为它更安全,https未来会完全取代…...
[‘column‘]和[:,‘column‘]的区别
之前,关于numpy和pandas的操作一直不熟悉,对于获取数据中的行,列一直混淆。 df[column] df[column]是 Pandas DataFrame 切片的常用语法,用于选择名为 column 的单个列。它返回一个 Pandas Series 对象。 df.loc[:,column] df[:,…...
icloud如何高效利用
iCloud是Apple提供的一项云存储和云计算服务,能够帮助用户在不同的Apple设备之间同步和共享数据。要高效利用iCloud,可以参考以下几个方面: 自动备份:确保所有重要的Apple设备都开启了iCloud备份功能,这样可以自动将设…...
k8s二进制安装与部署
目录 一、实验目的 二、实验环境 三、实验步骤 3.1 操作系统初始化配置 3.2 部署 docker引擎 3.3 部署 etcd 集群 3.3.1 在 master01 节点上操作 3.3.2 在 node01 节点上操作 3.3.3 在 node02 节点上操作 3.4 部署 Master 组件 3.4.1 在 mast…...
驱动编译报error: negative width in bit-field ‘<anonymous>’错误
错误如下图所示: 代码如下: 问题点:module_param的其他用户的权限参数上。 在Linux中,文件权限由读(r)、写(w)、执行(x)权限组成,分别对应数值4、2、1。 第一位0是占位符,在这里没有意义,因为…...
Go语言的命名规范是怎样的?
文章目录 Go语言的命名规范详解一、标识符命名规范示例代码 二、包名命名规范示例代码 三、变量命名规范示例代码 四、常量命名规范示例代码 五、函数命名规范示例代码 总结 Go语言的命名规范详解 在Go语言中,代码的命名规范对于项目的可读性、可维护性和可扩展性至…...
Vue3骨架屏(Skeleton)
效果如下图:在线预览 APIs 参数说明类型默认值必传animated是否展示动画效果booleantruefalsebutton是否使用按钮占位图boolean | SkeletonButtonPropsfalsefalseavatar是否显示头像占位图boolean | SkeletonAvatarPropsfalsefalseinput是否使用输入框占位图boolea…...
【文末附gpt升级方案】亚马逊与Hugging Face合作:定制芯片低成本运行AI模型的创新探索
亚马逊与Hugging Face合作:定制芯片低成本运行AI模型的创新探索 摘要 本文探讨了亚马逊云部门与人工智能初创公司Hugging Face的合作,旨在通过定制计算芯片Inferentia2在亚马逊网络服务(AWS)上更低成本地运行数千个AI模型。文章首…...
二叉树的链式实现
目录 一、二叉树的基础操作 二、二叉树代码图解 2.1 遍历 2.2 求大小 2.3 创建与销毁 2.4 与队列结合解决问题 三、二叉树C语言源码汇总 二叉树的代码实现运用了函数递归的思想,了解函数递归的知识请见博主的另一篇博客: http://t.csdnimg.cn/Po…...
STM32中断编程入门
文章目录 一、 理论部分1.中断系统2.中断执行流程3.NVIC的基本结构4.EXTI介绍5.AFIO复用IO口 二、实验目的:学习stm32中断原理和开发编程方法。使用标准完成以下任务:(一)实验一 开关控制LED的亮灭1.代码部分2.运行结果 ÿ…...
《我的阿勒泰》读后感
暂没时间写,记录在此,防止忘记,后面补上!!! 【经典语录】 01、如果天气好的话,阳光广阔地照耀着世界,暖洋洋又懒洋洋。这样的阳光下,似乎脚下的每一株草都和我一样,也把身子完全舒展开了。 02、…...
Android.mk简单介绍、规则与基本格式
文章目录 Android.mk与makefile区别Android.mk规则Android.mk基本格式 Android.mk与makefile区别 Android.mk 和 Makefile 都是用于构建代码项目的构建脚本文件,但是它们在特定上下文中有一些区别: Android.mk: Android.mk 是用于构建 Android 应用或库…...
OpenClaw简介|OpenClaw衍生产品|OpenClaw辅助工具
OpenClaw简介OpenClaw是一个开源的多功能机器人爪手设计项目,专注于提供低成本、模块化的机械爪解决方案,适用于科研、教育及工业自动化场景。其设计强调灵活性和可定制性,支持3D打印制造,便于用户根据需求调整结构和功能。核心特…...
Z-Image-Turbo镜像实战指南:Xinference多模型管理+Gradio多Tab界面配置
Z-Image-Turbo镜像实战指南:Xinference多模型管理Gradio多Tab界面配置 1. 快速了解Z-Image-Turbo镜像 今天给大家介绍一个特别实用的AI镜像——Z-Image-Turbo,这是一个基于Xinference框架的多模型管理平台,专门用于生成高质量的人物图像。如…...
PL/SQL:xml数据
在PL/SQL中,使用Oracle数据库提供的XML解析功能来处理XML数据。Oracle数据库提供了多种方式来处理XML数据,包括使用内置的XML数据类型、XMLTable函数、XML序列和XPath查询等。 1. 使用XMLTypeXMLType是Oracle提供的一个内置类型,用于存储和操…...
郭老师-人生四次开悟:错过一次,代价沉重
人生四次开悟 ——错过一次,可能一生难返“人这一生,大约只有四次开悟的机会。 开悟不了的人,就‘玩完了’。”🌿 开悟不是玄学, 而是—— 在关键年龄点上, 看清世界、认清自己、与道合一。🌱 第…...
【VirtualBox】Vbox 7.2.6 不让安装在其他盘?这篇保姆级权限修复指南让你 D 盘起飞
在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。 而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。 【VirtualBox】Vbox 7.2.6 不让安装在其他盘?这篇保姆级权限修复指南让你 D 盘起飞…...
一人公司小龙虾真能月入过万?揭开OpenClaw速成班背后的智商税与PanelAI真实落地路径
最近“一人公司”四个字在全网刷屏,尤其是小龙虾(OpenClaw及各类国产智能体)出来后,仿佛每个人养一只就能躺着赚钱。两天三夜速成班、保就业协议、月入几万的截图……视频刷得越多,我越觉得韭菜太多,骗子都…...
DOCX到LaTeX转换终极指南:告别格式混乱,轻松实现专业排版
DOCX到LaTeX转换终极指南:告别格式混乱,轻松实现专业排版 【免费下载链接】docx2tex Converts Microsoft Word docx to LaTeX 项目地址: https://gitcode.com/gh_mirrors/do/docx2tex 你是否曾为将Word文档转换为LaTeX而头疼?复杂的公…...
高并发订单处理全链路压测实录,从500TPS到12800TPS的性能跃迁,附可复用的PHP压力测试脚本与监控看板
第一章:高并发订单处理全链路压测实录,从500TPS到12800TPS的性能跃迁,附可复用的PHP压力测试脚本与监控看板面对大促期间瞬时流量洪峰,我们对核心订单服务实施了覆盖网关、认证中心、库存服务、支付回调及数据库写入的全链路压测。…...
深入操作系统原理:Qwen3.5-9B-AWQ-4bit解读进程调度与内存管理
深入操作系统原理:Qwen3.5-9B-AWQ-4bit解读进程调度与内存管理 1. 操作系统教学的新助手 计算机操作系统课程向来以抽象难懂著称。学生们常常被进程状态转换、死锁条件、页面置换算法等概念困扰,而传统教学方式又难以直观展示这些动态过程。这正是Qwen…...
Z-Image-Turbo-辉夜巫女实战教程:GPU算力弹性伸缩——按需加载LoRA模型
Z-Image-Turbo-辉夜巫女实战教程:GPU算力弹性伸缩——按需加载LoRA模型 1. 快速了解Z-Image-Turbo-辉夜巫女 Z-Image-Turbo-辉夜巫女是基于Z-Image-Turbo模型的LoRA版本,专门优化用于生成辉夜巫女风格图片的AI模型。这个模型通过Xinference框架部署&am…...

