c语言控制语句2

本文详细介绍了C语言中的各种循环结构,包括goto语句构成的循环、while、do-while和for循环的特点、用法以及示例。重点讲解了它们在程序中的应用和区别,如while强调条件判断后执行,do-while先执行再判断,以及for循环的通用形式。
摘要由CSDN通过智能技术生成

c语言控制语句-循环语句

循环结构程序:

goto语句构成循环

while构成循环

do-while循环

for循环

1. goto语句 

goto语句无条件跳转(慎重使用)

1.可以构成循环,语法结构如下:

标号:

        语句块1;

        goto 标号;

        语句块2; //语句块1当中有跳转到这个位置的语句

以上结构会循环执行语句块1,直到遇到跳出语句块1的语句 

 作用

1.当函数有很多个出口,使用goto把这些出口集中到一处是很方便的,特别是函数中有许多重复的清理工作的时候。

理由是:

2.无条件跳转易于理解

3.可以减少嵌套

4.可以避免那种忘记更新某一个出口点的问题

5.算是帮助编译器做了代码优化

 练习:1~100的和:

#include <stdio.h>
int main(int argc,const char*grgv[])
{
        int i=1,sum=0;
loop:
        if(i<=100)
    {
        sum=sum+i;
        i++;
        goto loop;
    }
        printf("1+2+3+...+%d=%d\n",i-1,sum);
        return 0;
}

loop这个标记可以改写为其他的:

 2. while语句

while语句构成循环

基本形式

while (表达式) {

        statatments;

}

什么时候退出循环 当条件为真是进入循环,条件为假时退出循环。

练习:求1到100的和: 

3. do-while语句

do-while语句构成循环

基本形式

do {

        statatments;

}while(表达式);

 练习:求1到100的和: 

注意:while和do-while的区别:while是先判断在执行,do-while是先执行在判断。 

1)while循环中(条件)后面没有分号, do_while 循环中(条件)后面有“;”。

2)while与do_while执行循环体与判断的顺序不同。

3)各自的应用场合不同。while强调“条件是否满足”do_while强调“动作的行为”

练习:打印出所有的“水仙花”数。“水仙花”数是指一个3位数,其各个位数字立方和等于该数本身。

#include <stdio.h>
#include <math.h>
int main(int argc,const char*grgv[])
{
        int i=100,a,b,c;
        while(i<1000)
    {
        a=i/100;
        b=(i-a*100)/10;
        c=i-a*100-b*10;
    //    if(a*a*a+b*b*b+c*c*c==i)
        if(pow(a,3)+pow(b,3)+pow(c,3)==i)
            printf("%d\n",i);
        i++;
    }
        return 0;
}

4. for语句

 

一般形式

for(expression1; expression2; expression3)

{

        statements;

}

执行过程

1.先求解表达式1;

2.求解表达式2,若为真,则执行循环体,然后执行步骤3;

3.转回执行步骤2,若为假,执行for下面的语句

练习:1~100求和:

#include <stdio.h>
int main(int argc,char*argv[])
{
        int i=0,sum=0;
        for(;i<=100;)
    {
        sum=sum+i;
        i++;
    }
        printf("sum=%d\n",sum);
        return 0;
}

练习:打印9*9乘法表:

#include <stdio.h>
int main(int argc,char*argv[])
{
        int i,j,sum;
        for(i=1;i<10;i++)
    {
        for(j=1;j<=i;j++)
        {
            sum=i*j;
            printf("%d*%d=%d\t",j,i,sum);
        }
            puts("");
    }
        return 0;
}

外循环控制行,内循环控制列 

 

 

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

学习嵌入式学习每一天

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

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

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

打赏作者

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

抵扣说明:

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

余额充值