C语言循环结构

C语言中的循环机制可以由下面三种语句实现:while语句、do-while语句、for语句。

一、循环语句

1. while循环

while(循环控制表达式)

{

        语句序列

}

例:用while循环体求表达式1+2+3+...+100的值。

#include<stdio.h>
int main()
{
    int i=1,sum=0;
    while(i<=100)
    {
        sum += i;
        i++;
    }
    printf("The sum is %d\n",sum)';
    return 0;
}

2. do-while循环

do{

        语句序列

}while(循环控制表达式);

例: 用while循环体求表达式1+2+3+...+100的值。

#include<stdio.h>
int main()
{
    int i=0,sum=0;
    do{
        sum += i;
        i++;
    }while(i<=100);    //有分号
    printf("The sum is %d\n",sum);
    return 0;
}

3. for循环

for(初始化表达式;循环控制表达式;增值表达式)

{

        语句序列

}

 例:用while循环体求表达式1+2+3+...+100的值。

#include<stdio.h>
int main()
{
    int i,sum=0;
    for(i=1;i<=100;i++)
    {
        sum += i;
    }
    printf("The sum is %d\n",sum);
    return 0;
}

二、循环的控制

1. 计数器控制循环和其他条件控制循环

1.1 计数器循环

计数器控制循环就像是你在玩一个游戏,游戏规定你必须要走10步才能到达终点。每走一步,你就数一下,直到数到10,你就知道游戏结束了。

1.2 条件控制循环

条件控制循环就像你在一个迷宫里寻找出口。你会一直走,直到找到出口为止。

1.3 对比
  • 计数器控制循环:你知道要重复多少次(比如走10步),所以你设置一个计数器来跟踪次数。
  • 条件控制循环:你不知道要重复多少次(不知道迷宫有多复杂),但你直到在什么条件下停止(找到出口)。

简而言之,计数器控制循环是基于次数的,而条件控制循环是基于某个条件的真假。

2. break和continue

程序中,有时候并不需要把设定的循环次数都执行完,而是需要提前结束循环或者是跳过一段代码直接进入下一轮的循环,这时候就需要用到break和continue语句。

1.1 break语句

break语句的作用就是终止循环。

例:找出100~200之间第一个能被3和5都整除的数。

#include<stdio.h>
int main()
{
    int i;
    for(i=100;i<=200;i++){
        if(i%15==0){
            break;    //找到一个就结束循环,不再查找
        }
    }
    printf("%d\n",i);
    return 0;
}

2. continue 语句

continue只能用在循环中,其作用是跳过本次循环剩下的部分,去执行下一次循环。

例:从键盘输入两个整数,求它们的最小公倍数

#include<stdio.h>
int main()
{
    int a,b;
    int i;
    scanf("%d %d",&a,&b);
    for(i=a;i<=a*b;i++){
        if(i%a!=0)
            continue;    //若除以a除不尽,则转回到i++换下一个数
        if(i%b==0)
            break;    //若除尽,则找到最小公倍数,跳出循环
    }
    printf("%d和%d的最小公倍数是:%d\n",a,b,i);
    return 0;
}

三、多重循环

一个循环体内套着另一个循环体,也叫嵌套循环。

例:找出所有水仙花数,水仙花数是三位数,它的3个数字的立方和等于它本身,如153=1^3+5^3+3^3。

#include<stdio.h>
int main()
{
    int i,j,k,m;
    for(i=1;i<=9;i++)
        for(j=0;j<=9;j++)
            for(k=0;k<=9;k++)
                if((m=i*100+j*10+k)==i*i*i+j*j*j+k*k*k)
                    printf("%5d",m);
    printf("\n");
    return 0;
}

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值