C语言循环结构

引言

C语言提供了多种循环结构,包括for循环、while循环和do-while循环。

  1. for循环:for循环是C语言中最常用的循环结构,它的语法如下:

    for (初始化表达式; 循环条件; 循环后操作表达式) {
        循环体;
    }
    

    初始化表达式用于初始化循环变量,循环条件用于判断是否继续循环,循环后操作表达式用于在每次循环结束后更新循环变量的值。循环体是需要执行的代码块。

  2. while循环:while循环的语法如下:

    while (循环条件) {
        循环体;
    }
    

    while循环会在每次循环开始前先判断循环条件,如果满足条件则执行循环体,然后再次判断循环条件。直到循环条件不满足时,跳出循环。

  3. do-while循环:do-while循环的语法如下:

    do {
        循环体;
    } while (循环条件);
    

    do-while循环会先执行循环体,然后判断循环条件。如果循环条件满足,则继续执行循环体,否则跳出循环。

这些循环结构可以根据具体的需求选择使用,可以帮助实现重复执行某段代码的功能。

1 循环定义

定义:循环是计算机科学运算领域的用语,也是一种常见的控制流程。循环是一段在程序中只出现一次,但可能会连续运行多次的代码。循环中的代码会运行特定的次数,或者是运行到特定条件成立时结束循环,或者是针对某一集合中的所有项目都运行一次。

可以理解位重复的去执行某件事情,但需要有一个终止条件,否则会形成死循环,导致内存溢出;

2 循环分类

2.1 while循环

基本语法:

while(循环条件){

执行语句;

}

循环条件:布尔类型的值或者表达式,需要不断变化,如果是一个常量或者固定不变的值,则称为没有意义的循环或者死循环;

执行语句:当循环条件为true时执行语句,false终止循环,不执行语句

执行流程:

1) 第一次判断条件true,继续执行

2) 第二次判断条件true,继续执行

3) 第三次判断条件true,继续执行

4) 。。。。。

5) 直到第n次判断条件false,终止循环

示例:

#include <stdio.h>
int main(int argc, char const *argv[])
{   
    /*打印1到10之间的数字*/
    int i=1;
    while(i<11){
        printf("%d\n",i);
        i++;
    }
    printf("---------------------------------\n");
    /*打印1到10之间的偶数*/
    int j=1;
    while(j<11){
        if(j%2==0){
            printf("%d\n",j);
        }
        j++;
    }
    return 0;
}
2.2 do...while循环

基本语法:

do{

执行语句;

}while(循环条件);

循环条件:布尔类型的值或者表达式,需要不断变化,如果是一个常量或者固定不变的值,则称为没有意义的循环或者死循环;

执行语句:当循环条件为true时执行语句,false终止循环,不执行语句

执行流程:

  1. 首先执行do后面结构体中的执行语句

  2. 判断循环条件是否为true,如果true,执行do后执行语句,如果为false终止循环

示例:

/*打印1到10之间的数字*/
int i =1;
do{
    printf(i);
    i++;
}while(i<11);
2.3 for循环

基本语法:

for(初始化条件A;判断条件B;循环后语句C){

执行语句D;

}

初始化条件A:初始化一个值,用来作为B中的判断条件

判断条件B:布尔类型的值或者表达式

执行语句D:当B中的判断条件满足,为true执行D,false,则不执行

循环后语句C:循环后执行的代码,目的是为了改变初始条件A的值,使B中条件不是一个固定的值

执行流程:

第一次:A-->B(true)-->D-->C

第二次: B(true)-->D-->C

第三次: B(true)-->D-->C

第n次: B(false) 结束整个循环

示例:

/*打印1到10之间的数字*/
for(int i=1;i<11;i++){
    printf(i);
}

注意事项:

1. 特殊写法:

//死循环
for(;;){
    printf("Hello");
}

2. 初始条件中变量的作用域

/*打印1到10之间的数字*/
for(int i=1;i<11;i++){
   printf("for入门i=%d\n",i);
}
printf(i);//报错,i只作用于循环结构体中

嵌套for循环

#include <stdio.h>
int main(int argc, char const *argv[])
{   
    /*
    1.图形
    *
    * *
    * * *
    * * * *
    * * * * * 
    */
    for(int i=1;i<=5;i++){
        for(int j=1;j<=i;j++){
            printf("*");
        }
        printf("\n");
     }

    /* 
    2.数字塔
    1
    1 2
    1 2 3
    1 2 3 4
    1 2 3 4 5  
    */
    for (int i = 1; i <=9; i++){
        for (int j = 1; j <=i; j++){
            if (i==6){
                /*break和return都能中断循环,
                有区别break是中断本循环,
                外层循环或者循环外的后续代码要执行。
                retrun外层循环和循环外的后续代码都不执行了*/
                //return 0;  
                break;
            }
            
            if (i==j){//是最后一个就回车
                printf("%d\n",j);
            }else{ //不是最后一个加上空格
                printf("%d ",j);
            }
        }
    }

    /*3.九九乘法表
    */
    for(int i=1;i<=9;i++){
        for(int j=1;j<=i;j++){
            printf("%d*%d=%d\t",j,i,j*i);
        }
        printf("\n");
    }

    return 0;
}

4 goto

C 语言中的 goto 语句允许把控制无条件转移到同一函数内的被标记的语句

注意:在任何编程语言中,都不建议使用 goto 语句。因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。任何使用 goto 语句的程序可以改写成不需要使用 goto 语句的写法。

#include <stdio.h>
int main(int argc, char const *argv[])
{
    //通过go实现循环  1+2+3+...+10
    //定义一坨语句
    int i = 1;
    int sum =  0;

    sum_state:  //定义一个语句块,名字随便取
        sum =  sum +i; 
        i++;

    //如果满足条件就跳转,可以让他多次跳转就形成循环了。  最终要跳出
    if (i<=10)
    {
       goto sum_state; //跳转执行语句
    }
    

    printf("%d,%d",i,sum);

    return 0;
}

5 循环控制语句

5.1 定义

对整个循环流程进行控制,可提前终止或跳出循环。 break,continue,goto,return

5.2 控制语句分类
5.2.1 break

作用:终止当前循环

示例:

/*  一个循环 如果循环中出现了6 则终止循环 后面的也不再执行*/
for(int i=1;i<8;i++){
    if(i==6){
      break;
	}
    printf("i=%d\n",i);
}
5.2.2 continue

作用:跳出当前循环

示例:

/*  一个循环 如果循环中出现了6 则跳过循环 后面的继续执行*/
for(int i=1;i<8;i++){
    if(i==6){
        continue;
    }
    printf("i=%d\n",i);
}
5.2.3 return

作用:终止当前方法

示例:

#include <stdio.h>
int main(int argc, char const *argv[])
{
    for (int i = 0; i < 10; i++)
    {
          printf("%d ",i);
        //干预循环 6的时候结束
        if (i==6)
        {
            break; //中断,跳出本循环
        }
           
    }
    printf("\n==================\n ");
     for (int i = 0; i < 10; i++)
    {
        //干预循环 6的时候不执行
        if (i==6)
        {
            continue; //跳出这个循环本次执行情况
        }
        printf("%d ",i);    
    }
  printf("\n==================\n ");
  /*
    for (int i = 0; i < 10; i++)
    {
          printf("%d ",i);
        //干预循环 6的时候结束
        if (i==6)
        {
            return 0; //函数返回了,函数都结束了,里面for自然结束了。
        }
           
    }
    */
 printf("\n==================\n ");
 for (int i = 1; i <=9; i++)
 {
    for (int j = 1; j <=i; j++)
    {
        if (i==6)
        {
           return 0;  //break和return都能中断循环,有区别break是中断本循环,外层循环或者循环外的后续代码要执行。retrun外层循环和循环外的后续代码都不执行了
        }
        
        if (i==j)  //是最后一个就回车
        {
            printf("%d\n",j);
        }else{ //不是最后一个加上空格
            printf("%d ",j);
        }
    }
    
 }
 
    
}

5.2.4 goto

#include <stdio.h>
int main(int argc, char const *argv[])
{
    for (int i = 0; i < 10; i++)
    {
          printf("%d ",i);
        //干预循环 6的时候结束
        if (i==6)
        {
           goto g_stat;
        }
           
    }

    g_stat:
        printf("跳出循环了!");

    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值