第四章:c语言中的循环结构

第四章:循环结构
一、循环的理解
  1. 循环:通过某个条件,重复并且有规律的执行一段代码。
  2. 循环的组成部分:循环变量的初始化、循环条件、循环变量的改变、循环体
  3. 循环分类:while循环、do...while循环、for循环
二、while循环
  1. 语法:

    复制代码
    // 循环变量的初始化
    while(循环条件){
       // 循环体(重复执行的功能代码)
       // 循环变量的改变
    }
  2. 执行原理:

    复制代码
    先执行循环的初始化,接着判断循环条件,如果条件满足-结果为true,执行{}中循环体,从而执行循环变量改变,再次判断循环条件,如果满足-结果为true,执行{}中循环体,从而执行循环变量的改变,再次判断循环条件...直到循环条件不满足,结果为false,终止、结束整个循环结构,继续执行循环结构后续代码....
  3. 执行特点:

    复制代码
    (1) while循环是先判断,再执行
    (2) 执行次数为:0~n次
  4. 案例:

    复制代码
    (1) 打印输出 100遍 "hello world"
       #include <stdio.h>
        void main(){
    
            int n = 1;
            while(n<=100){
                printf("hello world--%d\n",n);
                n++;
            } 
    
            printf("\nending...");
        }
    
    (2) 计算 1+2+3+44+...+100的和,并打印输出
        #include <stdio.h>
        void main(){
    
            int n = 1;
            int sum = 0; 
            while(n<=100){
                sum += n;
                n++;
            } 
            printf("sum=%d",sum);
            printf("\nending...");
        }
三、do...while循环
  1. 语法:

    复制代码
    // 循环变量的初始化
    do{
       // 循环体
       // 循环变量的改变
    }while(循环条件); // 分号不能省略
  2. 执行原理:

    复制代码
    先执行循环变量的初始化,接着执行循环体,同时循环变量改变,然后判断循环条件,条件满足,则再次执行循环体,循环变量的改变,再次的判断循环条件...直到循环条件不满足,结果为false,终止、跳出整个循环结构,继续执行循环结构后续内容。
  3. 执行特点:

    复制代码
    (1) do..while循环先执行,再判断
    (2) 执行次数:1~n次
  4. 案例:

    复制代码
    (1) 打印输入 100遍 "hello world"
        #include <stdio.h>
        void main(){
    
            int n = 1;
    
            do{
                printf("hello world--%d\n",n);
                n++;
            } while(n<=100);
    
            printf("\nending...");
        }
    
    (2) 计算 1+2+3+44+...+100的和,并打印输出
        #include <stdio.h>
        void main(){
    
            int n = 1;
            int sum = 0; 
            do{
                sum += n;
                n++;
            } while(n<=100);
            printf("sum=%d",sum);
            printf("\nending...");
        }
四、for循环
  1. 语法:

    复制代码
    for(①循环变量的初始化; ②循环条件 ; ③循环变量的改变){
        // ④循环体
    }
  2. 执行原理:

    复制代码
    首先执行循环变量的初始化②,然后执行循环条件②,如果循环条件满足,结果为true,则执行循环体④,接着执行循环变量的改变③;然后再判断循环条件②,如果条件满足,结果为true,则执行循环体④,接着执行循环变量的改变③;再次判断循环条件.....直到循环条件不满足,结果为false,终止、结束循环结构,继续执行循环结构后续内容。
  3. 执行特点:

    复制代码
    (1) for循环的特点:先判断,再执行
    (2) 执行的次数:0~n次
  4. 案例:

    复制代码
    (1) 打印输入 100遍 "hello world"
        #include <stdio.h>
        void main(){
            int i;
            for(i=1;i<=100;i++){
                printf("hello world--%d\n",i);
            }
    
            printf("\nending...");
        }
    
    (2) 计算 1+2+3+44+...+100的和,并打印输出
    	#include <stdio.h>
        void main(){
            int i;
            int sum = 0 ; 
            for(i=1;i<=100;i++){
                sum += i;
            }
            printf("sum=%d",sum);
            printf("\nending...");
        }
    
    (3) 计算1~100之间能被3整除,但是不能被5整除的所有数据之和,并打印输出。
        #include <stdio.h>
        void main(){
            int i;
            int sum = 0 ; 
            for(i=1;i<=100;i++){
                if(i%3==0 && i%5!=0){
                    sum += i;
                }
            }
            printf("sum=%d",sum);
            printf("\nending...");
        }
五、循环控制语句
  1. break:结束、终止当前循环结构

    复制代码
    (1) 从100开始计算累加和,当累加和大于500时,停止计算。
        #include <stdio.h>
        void main(){
            int i;
            int sum = 0 ; 
            for(i=100; ;i++){
                sum += i;
                if(sum>500) break;
            }
            printf("sum=%d",sum);
            printf("\nending...");
        }
  2. continue:中止、结束本次循环,从而进入下一次循环

    复制代码
    (2) 打印输出 100~300之间所有的数据,遇到7的倍数跳过。
        #include <stdio.h>
        void main(){
            int i;
            for(i=100; i<=300 ;i++){
                if(i%7==0 ) continue;
                printf("%d\n",i);
            }
            printf("\nending...");
        }
六、循环的嵌套
  1. 循环的嵌套:在循环结构中又定义完整的循环结构

    复制代码
    案例:
    #include <stdio.h>
    void main(){
    	int i;
    	int j;
    	// 外层循环 
    	for(i=1; i<=3 ;i++){
    		// 内层循环 
    		for(j=1;j<=4;j++){
    			printf("i=%d,j=%d\n",i,j);
    		}
    	}
    	
    	printf("\nending...");
    }
    
    打印输出结果:
    i=1,j=1
    i=1,j=2
    i=1,j=3
    i=1,j=4
    i=2,j=1
    i=2,j=2
    i=2,j=3
    i=2,j=4
    i=3,j=1
    i=3,j=2
    i=3,j=3
    i=3,j=4
  2. 循环次数:外层循环的循环次数*内层循环的循环次数

  3. 利用循环打印图形时:通常利用外层循环控制行,内层循环控制列

    复制代码
    案例:打印输出9行8列的矩形
    #include <stdio.h>
    void main(){
    	int i;
    	int j;
    	// 外层循环:控制行数 
    	for(i=1; i<=9 ;i++){
    		// 内层循环 :控制列数 
    		for(j=1;j<=8;j++){
    			printf("*");
    		}
    		printf("\n") ;
    	}
    	
    	printf("\nending...");
    }
    
    打印输出结果:
    ********
    ********
    ********
    ********
    ********
    ********
    ********
    ********
    ********
  4. 还可以利用外层循环控制内层循环

    复制代码
    打印一个直角三角形
    #include <stdio.h>
    void main(){
    	int i;
    	int j;
    	// 外层循环:控制行数 
    	for(i=1; i<=9 ;i++){
    		// 内层循环 :控制列数 
    		for(j=1;j<=i;j++){
    			printf("* ");
    		}
    		printf("\n") ;
    	}
    	
    	printf("\nending...");
    }
    
    打印输出结果:
    *
    * *
    * * *
    * * * *
    * * * * *
    * * * * * *
    * * * * * * *
    * * * * * * * *
    * * * * * * * * *
    
    输出以下 4X5 的矩阵。
       1  2  3   4   5 
       2  4  6   8   10
       3  6  9   12  15
       4  8  12  16  20
       
    #include <stdio.h>
    void main(){
    	int i;
    	int j;
    	// 外层循环:控制行数 
    	for(i=1; i<=4 ;i++){
    		// 内层循环 :控制列数 
    		for(j=1;j<=5;j++){
    			printf("%d\t",i*j);
    		}
    		printf("\n") ;
    	}
    	
    	printf("\nending...");
    }
    
    
    打印输出结果:
    1       2       3       4       5
    2       4       6       8       10
    3       6       9       12      15
    4       8       12      16      20
相关推荐
袁雅倩19976 小时前
当吸尘器、筋膜枪都用上Type-C,供电方案该怎么选?浅谈PD取电芯片ECP5702的应用
c语言·开发语言·支持向量机·动态规划·推荐算法·最小二乘法·图搜索算法
CHANG_THE_WORLD12 小时前
C语言中的 %*s 和 %.*s 和C++的字符串格式化输出
c语言·c++·c#
消失的旧时光-194312 小时前
C语言对象模型系列(四)《Linux 内核里的 container_of 到底是什么黑魔法?》—— 一篇讲透 Linux 内核的“对象模型”核心技巧
linux·c语言·算法
2501_9318037513 小时前
Go:一门为解决C语言痛点而生的现代语言
c语言·开发语言·golang
qeen8713 小时前
【数据结构】二叉树相关经典函数C语言实现
c语言·数据结构·c++·笔记·学习·算法·二叉树
Hello.Reader15 小时前
ds4.c 深度解析为 DeepSeek V4 Flash 打造的本地推理引擎
c语言·开发语言
谙弆悕博士17 小时前
快速学C语言—— 第0章:C语言简介
c语言·开发语言·经验分享·笔记·程序人生·课程设计·学习方法
谙弆悕博士19 小时前
Lua学习笔记
c语言·开发语言·笔记·学习·lua·创业创新·业界资讯
qq38624619619 小时前
C语言中将数字转换为字符串的方法
c语言·格式化输出·字符串转换·sprintf·snprintf
LuminousCPP19 小时前
C 语言动态内存管理全解析:从基础函数到柔性数组与内存分区
c语言·经验分享·笔记·学习·柔性数组