当前位置:首页 > 技术 > 正文内容

C语言下for循环的一点技巧总结

Lotus2022-10-06 19:30技术

for循环是普遍应用与各种计算机语言的一种循环方式。

一般情况下,

for循环规则:for(条件一;条件二;条件三)

条件一为满足条件,也就是条件一为1时,进入这个for循环。条件二为循环条件,也就是说当条件二不满足时继续循环。条件三为循环递增条件,里面罗列循环节递增的方式。for循环在实际运行的时候是:首先判断条件一是否为1,为1时进入循环内的下一步,为0跳过整个for循环。其次判断条件二是否为1,为1时进入否循环下属的({}包围部分的内容)循环节,不论循环节语句是否存在,运行完毕后运行条件三,然后再次运行条件二,一直到条件二为0.

技巧:1)三个都可以省略,只要保证括号()里有足够两个分号;就可以。省略默认条件是1,继续执行。极端条件下的语句for(;;)等同于while(1),为无条件进入循环。

          2)条件一,不但可以用于设定循环变量的初始值,也可以用于设定循环开始前的变量的初始值。比如:i=m=0,j=n=1作为条件一,这样就为开始进入循环设定了4个变量,而其中的循环变量只是其中某一个,或者几个。

          3)条件二,是退出循环的条件。条件二正常情况下是一个判断条件,当判断结果为1,或者说符合要求时,继续循环。今天在网友帮助下,认识到当条件二不是一个判断,而是一个返回值的时候,如果返回值是0,同样会退出循环。这样就提供了某些情况下的特殊退出方法。

举例:

 1 #include<stdio.h>
 2 
3
4
5 int main() 6 7 { 8 9 char ch , a[1024] ; 10 11 int i , j , k , m , n ; 12 13 14 15 printf("请输入一个英文句子:") ; 16 17 for(i = m = 0 , j = n = 1 ; (ch = getchar()) != '\n' ;) { 18 19 if(ch != ' ') { 20 21 if(j == 1) m ++ ; 22 23 a[i ++] = ch ; 24 25 a[i] = '\0' ; 26 27 j ++ ; 28 29 if(j > n) n = j ; 30 31 } else { 32 33 if(j > 1) { // 只有字符串之间的单个空格有效 34 35 j = 1 ; 36 37 i ++ ; // 保护上个字符串末尾的 '\0' 38 39 } 40 41 } 42 43 } 44 45 char result[m][n] ; 46 47 for(i = k = 0 ; i < m ; i ++) for(j = 0 ; (result[i][j ++] = a[k ++]) ;) ; // 这里绝不可以只是简单地按照每个字符串 n 个字符进行分割和复制 48 49 printf("分割结果已存放到result[%d][%d]的二维数组中。。。。。\n" , m , n) ; 50 51 printf("现在依次打印每个单词:\n") ; 52 53 for(k = 0 ; k < m ; k ++) printf("%s\n" , result[k]) ; 54 55 }

 

上面代码中第47行,内循环的条件二是一个赋值语句:result[i][j++]=a[k++],当被如遇的值a[k]=’\0’的时候,会退出循环。

        4)在上一个代码举例里,使用4次for循环,其中2次循环都没有使用条件三循环增量,所有的循环都是在其他部位进行计算过程中实现的变量增量。

扫描二维码推送至手机访问。

版权声明:本文来源于网络,仅供学习,如侵权请联系站长删除。

本文链接:https://news.layui.org.cn/post/150.html

分享给朋友:

“C语言下for循环的一点技巧总结” 的相关文章

Vue3 Vite3 多环境配置 - 基于 vite 创建 vue3 全家桶项目(续篇)

在项目或产品的迭代过程中,通常会有多套环境,常见的有: dev:开发环境 sit:集成测试环境 uat:用户接收测试环境 pre:预生产环境 prod:生产环境 环境之间配置可能存在差异,如接口地址、全局参数等。在基于 vue-cli (webpack) 的项目中只需要添加 .env.xxx 文件,然后在 package.json 的 scripts 启动或打包命令中指定 mode...

WinDbg Preview安装以及符号表配置

1、安装WinDbgPreview 在Microsoft Store直接搜索windbg就可以下载。 2、配置符号服务器 2.1 符号 符号是方便调试程序的文件,通常是pdb文件。一个模块(可执行程序,动态链接库)对应一个pdb文件。不同的windows版本中的文件不同(比如说kernel32),版本不同pdb符号文件也不同,因此要从微软提供的符号服务器获取本机对应的符号。 但是要在本地建立一个文...

初始多线程

初始多线程 一、基本概念 1.1 应用程序 以 Windows 为例,一个拓展名为 .exe 的文件就是一个应用程序,应用程序是能够双击运行的。 1.2 进程 应用程序运行起来就创建了一个进程,即进程就是运行起来的应用程序;如电脑上运行的 Edge、Typora、PotPlayer 等。 进程的特点: 一个进程至少包含一个线程(主线程,main)。 可以包含多个线程(主线程+若干子线程)。 所...

SqlKata - 方便好用的 Sql query builder

SqlKata查询生成器是一个用C# 编写的功能强大的Sql查询生成器。它是安全的,与框架无关。灵感来源于可用的顶级查询生成器,如Laravel Query Builder和 Knex。 SqlKata有一个富有表现力的API。它遵循一个干净的命名约定,这与SQL语法非常相似。 通过在受支持的数据库引擎上提供一个抽象级别,允许您使用相同的统一API处理多个数据库,并且可搭配 dapper 使用,可...

路由基础之中级网络工程师企业网络架构BGP​

路由基础之中级网络工程师企业网络架构BGP​ 原理概述:​ 防火墙(英语:Firewall)技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。​ 防火墙技术的功能主要在于及时发现并处理计算机网络运行时可能存在的安全风险、数据传输等问题,其中处理措施包括隔离与保护,同时可对计算机网络安全当中的各...

十分钟速成DevOps实践

摘要:以华为云软件开发平台DevCloud为例,十分钟简单体验下DevOps应用上云实践——H5经典小游戏上云。 本文分享自华为云社区《​​《DevOps实践秘籍》十分钟速成DevOps实践​​》,作者:AppCloud小助手 。 DevOps是什么? DevOps是Development和Operations的组合词,简单点理解就是研发运维一体化的方法论,目的是通过自动化“软件交付”和“架构变...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。