第四章: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
相关推荐
Y4090012 小时前
C语言转Java语言,相同与相异之处
java·c语言·开发语言·笔记
棐木10 小时前
【C语言】动态内存管理
c语言·free·malloc·realloc·calloc·动态内存
屁股割了还要学14 小时前
【C语言进阶】内存函数
c语言·开发语言·学习·算法·青少年编程
耳总是一颗苹果14 小时前
C语言---自定义类型(上)(结构体类型)
c语言·开发语言
basketball61618 小时前
Linux C 进程基本操作
linux·运维·服务器·c语言·后端
草莓熊Lotso19 小时前
【LeetCode刷题指南】--数组串联,合并两个有序数组,删除有序数组中的重复项
c语言·数据结构·其他·刷题
平哥努力学习ing19 小时前
C语言内存函数
c语言·开发语言·算法
wenke00a19 小时前
C函数实现strcopy strcat strcmp strstr
c语言·前端
慕洋男孩20 小时前
错误经验一:计算两个整数a和b的和
c语言·经验分享·错误经验
小xiao白1 天前
不能使用枚举作为 宏定义的定义
c语言·ide·单片机·物联网