首页 > 其他分享 >C语言下for循环的一点技巧总结

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

时间:2022-10-06 19:35:35浏览次数:52  
标签:总结 ch 技巧 ++ printf C语言 循环 result 条件

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次循环都没有使用条件三循环增量,所有的循环都是在其他部位进行计算过程中实现的变量增量。

标签:总结,ch,技巧,++,printf,C语言,循环,result,条件
From: https://www.cnblogs.com/ty-topic/p/16758243.html

相关文章

  • 第二组chap1-2学习总结
      在两周C语言的学习课程中,让我们从认识C语言历史到开始动手打代码,从最初对C语言的懵懵懂懂到小有成就,我们对C语言的认识和运用也越来越深。充实着我们的不仅仅是学习......
  • C语言基础笔试题解析
    题目在这里:​​c语言笔试面试大全,C语言基础笔试题_Thomas杨大炮的博客-CSDN博客t​​2.C语言程序的三种基本结构都有哪些呢?3. ​​递归调用​​和间接递归调用​​定义​......
  • 2022.9.30 Java第四次课后总结
    1.publicclassBoxAndUnbox{ /** *@paramargs */ publicstaticvoidmain(String[]args){ intvalue=100; Integerobj=value;//装箱 intresult=obj*2;......
  • 每周总结——week02(流程控制篇)
    每周总结——week02(流程控制篇)1、流程控制理论什么是流程控制对程序执行的顺序进行控制总共有三种:1、顺序结构 按程序语句的自然顺序,自上到下,依次执行每条语句的程......
  • 每周总结——week02(运算符篇)
    每周总结——运算符篇1、基本运算符数学运算符:'''+-*///%**简化写法如下:'''m=7m+=2m-=2m*=2m/=2m//=2m%=2m**=2比较运算符:'''<......
  • 第二周总结汇总
    https://www.cnblogs.com/HaiMan/p/16758084.html 基本数据类型篇https://www.cnblogs.com/HaiMan/p/16758086.html 流程控制篇https://www.cnblogs.com/HaiMan/p/1675......
  • 每周总结——week02 (基本数据类型及其内置方法篇)
    每周总结——week02基本数据类型及其内置方法篇1、基本数据类型之整型(int)概述:整型(int): 整型就是指各种整数,整型属于不可变数据类型,语法结构: 变量名=整数数值eg: a......
  • C语言:ASCII码为0的字符成为循环条件
    #include<stdio.h>main(){chars[]="012xy\08s34f4w2";//ascii码0对应的字符为空字符//本来\08可以理解为1个字符,但8不是8进制数,斜线只能转义0//......
  • C语言:字符串复制与连接的特殊应用
    #include<stdio.h>#include<string.h>main(){chara[10]="abc",b[10]="012",c[10]="xyz";strcpy(a+1,b+2);//b+2对应的字符2\0,结果bc改为2\0,所以a结果......
  • C语言:字符数组相互赋值方法
    #include<stdio.h>#include<string.h>main(){charab[100]="asdfasd",ac[100];printf("%d%d\n",ab,ac);//ac=ab由于ab,ac分别为两个数组的起始地......