c语言循环结构

本文详细介绍了C语言中的三种循环结构:while、do...while和for。通过实例演示了每种循环结构的使用方法和特点,并对比了它们的执行区别。此外,还提及了在循环中如何使用break和continue语句进行流程控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                     第九次课-----循环结构
一、循环
 什么时候用到循环结构:处理重复的问题的时候。
 
 1.while语句
 while(循环条件表达式)
   循环体语句;
 执行过程:只有循环条件表达式的值为真就 执行循环体语句,先判断后执行。
 
 demo:输出1---n之间的数 
 int main(void)
 {
     int i = 1;
     int n = 0;
     printf("请输入n的值:");
     scanf("%d",&n);//10  15  
     while(i <= n)
     {
        printf("%d\n",i);
        i++;
     }
     return 0;
 } 

 demo:计算m+...+n的值 
 int main(void)
 {
    int i = 1;
    int n = 0;
    int m = 0;
    int sum = 0;
    printf("请依次输入m和n的值:");
    scanf("%d%d",&m,&n);//m+...n  10  15
    while (m <= n)
    {
       sum = sum + m;
       m++;
    }
    printf("sum=%d\n", sum);
    return 0;
 }

 2.do...while语句
 do
 {
    循环体语句;
 }while(循环条件表达式);

 执行过程:先执行循环体语句,再检查循环条件表达式的值是否为真,如果为真则继续 执行循环体语句,否则结束循环。

 demo:计算m+...+n的值 
 int main(void)
 {
    int i = 1;
    int n = 0;
    int m = 0;
    int sum = 0;
    printf("请依次输入m和n的值:");
    scanf("%d%d",&m,&n);//m+...n  10  15
    do
    {
       sum = sum + m;
       m++;
    }while (m <= n);
    printf("sum=%d\n", sum);
    return 0;
 }
 
 demo:输出1---n之间的数 
 int main(void)
 {
     int i = 1;
     int n = 0;
     printf("请输入n的值:");
     scanf("%d",&n);//10  15  
     do
     {
        printf("%d\n",i);
        i++;
     }while(i <= n);
     return 0;
 }

 while语句和do...while语句的区别:while语句是先判断后执行,do...while语句是先  执行,至少会执行一次。
 int main(void)
 {
    int i = 1;
    int n = 11;
    int m = 12;
    int sum = 0;
    while (m <= n)
    {
       sum = sum + m;
       m++;
    }
    printf("sum=%d\n", sum);//sum的值为0
    return 0;
 }

 int main(void)
 {
    int i = 1;
    int n = 11;
    int m = 12;
    int sum = 0;
    do
    {//先执行一次循环体语句,再去判断条件表达式的值
       sum = sum + m;
       m++;
    }while (m <= n);
    printf("sum=%d\n", sum);//sum的值为12
    return 0;
 }

 3.for语句
 for(表达式1;表达式2;表达式3)
   循环体语句;

 m = 0;
 while(m <= n)
 {
    sum = sum + m;
    m++;
 }
 for(m = 0;m <= n;m++)
 {
    sum = sum + m;    
 }

 表达式1:设置初始条件,只执行一次,为0个或多个变量设置初值。

 表达式2:是循环条件表达式,用来判定是否继续循环。在每次执行循环体之前要先执行  表达式2,然后再决定是否继续执行循环。

 表达式3:作为循环的调整,比如是循环体变量增值,它是执行循环体语句之后再执行。

 demo:输出1---n之间的数 
 int main(void)
 {
     int i = 1;
     int n = 0;
     printf("请输入n的值:");
     scanf("%d",&n);//10  15  
     /*while(i <= n)
     {
        printf("%d\n",i);
        i++;
     }*/
     for(i = 1;i <= n;i++)
     {
        printf("%d\n",i);        
     }
     return 0;
 } 
 
 demo:计算m+...+n的值 
 int main(void)
 {
    int n = 0;
    int m = 0;
    int sum = 0;
    printf("请依次输入m和n的值:");
    scanf("%d%d",&m,&n);//m+...n  10  15
    /*while (m <= n)
    {
       sum = sum + m;
       m++;
    }*/
        for(;m <= n;m++)
        {
           sum = sum + m;       
        }
    printf("sum=%d\n", sum);
    return 0;
 }

 注意:
 1>for语句的三个表达式不是必须的。
 2>当条件表达式(表达式2)的值为假(为0)时for循环语句就结束。
 3>可以在循环体内执行break,continue,goto语句。

 for(;;)
 {

 }
 相当于
 while(1)
 {

 }
 
 demo:计算m+...+n的值,当累加的值大于100时退出循环 
 int main(void)
 {
    int n = 0;
    int m = 0;
    int sum = 0;
    printf("请依次输入m和n的值:");
    scanf("%d%d",&m,&n);//m+...n  10  50    
        for(;m <= n;m++)
        {
           sum = sum + m;
           if(sum > 100)break;
        }
    printf("sum=%d\n", sum);
    return 0;
 }

 demo:输出1---n之间的数 ,当输出的数大于100时结束循环
 int main(void)
 {
     int i = 1;
     int n = 0;
     printf("请输入n的值:");
     scanf("%d",&n);//10  15  
     for(i = 1;i <= n;i++)
     {
        printf("%d\n",i); 
        if(i > 100)break;       
     }
     return 0;
 } 

 4.continue语句
 只用于结束本次循环,即直接去执行表达式3.
 
 int main(void)
 {
    int i = 1;
    int n = 0;
    int sum = 0;
    printf("请输入n的值:");
    scanf("%d", &n);//150  
    for (i = 1; i <= n; i++)
    {
        sum = sum + i;
        printf("sum:%d\n",sum);
        if (i > 100)continue;
        printf("i=%d\n", i);                
    }
    return 0;
 }

 C语言中的中断语句
 break语句:跳出本层循环,执行循环后的语句。
 continue语句:跳出本次循环,执行下一次循环。
 goto语句:跳出到指定的标号位。

 int main(void)
 {
    int i = 1;
    int j = 0;
    int k = 0;
    
    for (j = 0; j < 2; j++)//2
    {        
        for (i = 0; i < 15; i++)//15
        {
            if (i == 10)goto again;
            printf("i=%d\t", i);
        }
    }    
    again:printf("穿越啦\n");
    return 0;
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值