第四章: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
    
相关推荐
朱一头zcy8 分钟前
C语言复习第9章 字符串/字符/内存函数
c语言
此生只爱蛋11 分钟前
【手撕排序2】快速排序
c语言·c++·算法·排序算法
何曾参静谧30 分钟前
「C/C++」C/C++ 指针篇 之 指针运算
c语言·开发语言·c++
lulu_gh_yu1 小时前
数据结构之排序补充
c语言·开发语言·数据结构·c++·学习·算法·排序算法
~yY…s<#>3 小时前
【刷题17】最小栈、栈的压入弹出、逆波兰表达式
c语言·数据结构·c++·算法·leetcode
EricWang13585 小时前
[OS] 项目三-2-proc.c: exit(int status)
服务器·c语言·前端
我是谁??5 小时前
C/C++使用AddressSanitizer检测内存错误
c语言·c++
希言JY6 小时前
C字符串 | 字符串处理函数 | 使用 | 原理 | 实现
c语言·开发语言
午言若6 小时前
C语言比较两个字符串是否相同
c语言
TeYiToKu7 小时前
笔记整理—linux驱动开发部分(9)framebuffer驱动框架
linux·c语言·arm开发·驱动开发·笔记·嵌入式硬件·arm