[C语言入门]=>循环结构

在C语言中,存在顺序结构选择结构循环结构三种。而循环又分为for、while、do while三类。下面就对三类循环结构进行较为详细的说明。


在此之前,先讲述一下continuebreak

continue

continue只能用在循环体中,其作用为:跳过循环体中剩余的语句直接进行判断,条件为真进入下一次循环


break

break不止可以用在循环体中,前篇选择结构里的switch里也有使用。在循环体中,其作用为:强制跳出循环体,不进入下一次循环


for 

基本结构

for(初始;判断;调整)

{

        循环体;

}

 其中初始是赋初始值,一般来说是赋判断变量的初始值。

判断和选择结构里面的表达式类似,表达式成立则为真,否则为假;为真时运行循环体,为假时跳出循环执行循环语句后面的程序。

调整表达式中的变量值(也可以不是),辅助“判断”控制循环次数。

 举例:

int main()
{
    int i = 0;
    for(i = 0;i < 10;i++)
    {
        printf("%d ",i);
    }    //此处的花括号{}可以不要,因为此处仅此一句循环体
}        //但含有多个循环体时必须加上花括号,否则只会循环紧挨着for的那条语句

 此处则输出:0 1 2 3 4 5 6 7 8 9。9输出后,i+1=10,不符合条件,跳出循环。


for运行图解

for的变形 

for所含的初始、判断、调整三部分都可以省去

  • 当初始部分省去时,一般是在for之前给变量赋了一个初值,此处不需要另赋初值。例如:
int main()
{
    int i = 0,j = 0;
    for(;i<3;i++)
    {
        for(;j<3;j++)
        {
            printf("emm\n");
        }
    }
}

        此时并不会输出3*3个“emm”,当第一次运行时,j加到3时已输出3个“emm”,而i第一次增加后,j始终是3,直接跳过j的循环,所以该代码只输出3个“emm”。仍不清楚的读者可以复制该代码用调试一步一步运行着看。

  • 当判断部分省去后,判断恒为真,形成死循环。例如:
for(;;)
{

}

for(i = 0;;i++)
{

}

 该类代码会一直循环循环体,除非执行到代码里面的break才可跳出循环。

  •  当调整部分省去后,也容易形成死循环。因为一般来说,都会让循环体先执行一次,要执行一次必然最初就得满足判断的条件,但没有调节的存在,判断就恒为真。所以此处可以在循环体内部加上调节语句。例如:
for(i = 0;i < 10;)
{
    printf("%d".i);
    i++;
}
//等同于:
for(i = 0;i < 10;i++)
{
    printf("%d",i);
}
  •  for的初始、判断、调整当然也不止限于一个变量,例如:
    int x,y;
    for(x = 0, y = 0;x<2 && y<5;++x, y++)
    {
        printf("emm\n");
    }

 此时则只输出两行"emm"。因为判断的条件是需要同时满足x<2和y<5。


while

基本结构

while(表达式)

{

    循环语句;

}

int main()
{
    int i = 1;              //初始化
    while (i <= 10)         //判断部分
    {
        printf("%d ",i);
        i++;                //调整部分
    }
    return 0;
}

该循环输出1~10 


while运行图解 


while的变形

while常用的就死循环:while(1);此为无操作死循环,若是执行有操作的死循环,需要按照其结构加上花括号{}。例如:

int main()
{
    while(1)
    {
        printf("哈哈\n");
    }
}

 该代码则是不停输出“哈哈”


 do while

基本结构

do

{

        循环语句;

}while(表达式);

 do while循环结构与上述两种不同,do while是先进行一次循环再进行判断,所以该结构至少会执行一次循环体。一般情况下,do while里面不会出现continue函数,因为容易造成死循环。

int main()
{
    int i = 1;
    do
    {
        //if(5 == i)
        //{
            //break;      //直接跳出
            //continue;   //死循环
        //}
        printf("%d ",i);
        i++;
    } while (i <= 10);
    
    return 0;
}

 该段仍是输出1~10。continue标注的死循环也有破解之法:将作为调整的i++;移至if之前,读者可试着改变该段代码某些地方,兴许会有意想不到的效果。


do while运行图解 


 循环结构的分享大致就到这,希望能够帮助到大家。同时,有什么疑问、补充、错误或建议望大家在评论区指出。感谢观看! 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Traveler·玖安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值