第四章: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
    
相关推荐
Uu_05kkq3 小时前
【C语言1】C语言常见概念(总结复习篇)——库函数、ASCII码、转义字符
c语言·数据结构·算法
嵌入式科普5 小时前
十一、从0开始卷出一个新项目之瑞萨RA6M5串口DTC接收不定长
c语言·stm32·cubeide·e2studio·ra6m5·dma接收不定长
A懿轩A5 小时前
C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·栈和队列
1 9 J6 小时前
数据结构 C/C++(实验五:图)
c语言·数据结构·c++·学习·算法
仍然探索未知中7 小时前
C语言经典100例
c语言
爱吃西瓜的小菜鸡8 小时前
【C语言】矩阵乘法
c语言·学习·算法
Stark、9 小时前
【Linux】文件IO--fcntl/lseek/阻塞与非阻塞/文件偏移
linux·运维·服务器·c语言·后端
deja vu水中芭蕾10 小时前
嵌入式C面试
c语言·开发语言
stm 学习ing11 小时前
HDLBits训练3
c语言·经验分享·笔记·算法·fpga·eda·verilog hdl
CSND74015 小时前
Ubuntu vi(vim)编辑器配置一键补全main函数
linux·c语言·ubuntu·编辑器·vim