• C言语教程第三章: C言语挨次妄想开端(7)


    do-while语句

    do-while语句的泛泛方式为:
    do
    语句;
    while(表达式);
    其中语句是循环体,表达式是循环前提。
    do-while语句的语义是:
    先实验循环体语句一次, 再鉴别表达式的值,若为真(非0)则担任循环,否则遏制循环。
    do-while语句和while语句的区别在于do-while是先实验后鉴别,因此do-while至多要实验一次循环体。而while是先鉴别后实验,如果前提不知足,则一次循环体语句也不实验。
    while语句和do-while语句泛泛都可以互相改写。
    void main(){
    int a=0,n;
    printf("\n input n: ");
    scanf("%d",&n);
    do printf("%d ",a *2);
    while (--n);
    }

    在本例中,循环前提改为--n,否则把多实验一次循环。这是因为先实验后鉴别而构成的。
    关于do-while语句还应属意以下几点:
    1.在if语句,while语句中, 表达式前面都不克不及加分号, 而在 do-while语句的表达式前面则必需加分号。
    2.do-while语句也可以组成多重循环,而且也可以和while语句互相嵌套。
    3.在do和while之间的循环体由多个语句组成时,也必需用{}括起来组成一个复合语句。
    4.do-while和while语句互相变卦时,要属意修正循关键制前提。

    for语句

    for语句是C言语所供给的功能更强,行使更普遍的一种循环语句。其泛泛方式为:
    for(表达式1;表达式2;表达3)
    语句;
    表达式1 频频用来给循环变量赋初值,平但凡赋值表达式。也答理在for语句外给循环变量赋初值,此时可以省略该表达式。
    表达式2 频频是循环前提,泛泛为关连表达式或逻辑表达式。
    表达式3 频频可用来修正循环变量的值,平但凡赋值语句。
    这三个表达式都可所以逗号表达式, 即每个表达式都可由多个表达式组成。三个表达式都是任选项,都可以省略。
    泛泛方式中的“语句”即为循环体语句。for语句的语义是:
    1.首先比赛争论表达式1的值。
    2.再比赛争论表达式2的值,若值为真(非0)则实验循环体一次, 否则跳出循环。
    3.然后再比赛争论表达式3的值,转回第2步频频实验。在整个for循环过程中,表达式1只比赛争论一次,表达式2和表达式,3则可以比赛争论屡次。循环体可以屡次实验,也可以一次都不实验。for 语句的实验过程如图所示。
    void main(){
    int n,s=0;
    for(n=1;n<=100;n )
    s=s n;
    printf("s=%d\n",s);
    }
    用for语句比赛争论s=1 2 3 ... 99 100

    int n,s=0;
    for(n=1;n<=100;n )
    s=s n;
    printf("s=%d\n",s);
    本例for语句中的表达式3为n ,理论上也是一种赋值语句,相当于n=n 1,以变化循环变量的值。
    void main(){
    int a=0,n;
    printf("\n input n: ");
    scanf("%d",&n);
    for(;n>0;a ,n--)
    printf("%d ",a*2);
    }
    用for语句修正例题。从0起源,输出n个接连的偶数。
    int a=0,n;
    printf("\n input n: ");
    scanf("%d",&n);
    for(;n>0;a ,n--)
    printf("%d ",a*2);
    本例的for语句中,表达式1已省去,循环变量的初值在for语句之前由scanf语句取得,表达式3是一个逗号表达式,由a ,n-- 两个表达式组成。每循环一次a自增1,n自减1。a的革新使输出的偶数递增,n的革新节制循次数。
    在行使for语句中要属意以下几点
    1.for语句中的各表达式都可省略,但分号间隔符不克不及少。如:for(;表达式;表达式)省去了表达式1。for(表达式;;表达式)省去了表达式2。
    for(表达式;表达式;)省去了表达式3。for(;;)省去了全部表达式。
    2.在循环变量已赋初值时,可省去表达式1,如例3.27即属于这种环境。如省去表达式2或表达式3则把构成无穷循环, 这时应在循环体内设法结束循环。例题即属于此环境。
    void main(){
    int a=0,n;
    printf("\n input n: ");
    scanf("%d",&n);
    for(;n>0;)
    { a ;n--;
    printf("%d ",a*2);
    }
    }
    本例中省略了表达式1和表达式3,由循环体内的n--语句遏制循环变量n的递加,以节制循环次数。
    void main(){
    int a=0,n;
    printf("\n input n: ");
    scanf("%d",&n);
    for(;;){
    a ;n--;
    printf("%d ",a*2);
    if(n==0)break;
    }
    }
    本例中for语句的表达式全部省去。由循环体中的语句完成循环变量的递加和循环前提的鉴别。当n值为0时,由break语句中止循环,转去实验for当前的挨次。在此环境下,for语句已等效于while( 1)语句。如在循环体中没有响应的节制伎俩,则构成去世循环。
    3.循环体可所以空语句。
    #include"stdio.h"
    void main(){
    int n=0;
    printf("input a string:\n");
    for(;getchar()!='\n';n );
    printf("%d",n);
    }
    本例中,省去了for语句的表达式1,表达式3也不是用来修正循环变量,而是用作输出字符的计数。多么, 就把本应在循环体中完成的计数放在表达式中完成了。因此循环体是空语句。应属意的是,空语句后的分号不可少,如短少此分号,则把前面的printf 语句当成循环体来实验。反已往说,如循环体不为空语句时, 决不克不及在表达式的括号后加分号, 多么又会以为循环体是空语句而不克不及频频实验。这些都是编程中罕见的错误,要特别很是属意。
    4.for语句也可与while,do-while语句互相嵌套,组成多重循环。以下构成都公道的嵌套。
    (1)for(){…
      while()
       {…}
      …
        }
    (2)do{
       …
      for()
       {…}
      …
      }while();
    (3)while(){
          …
          for()
           {…}
          …
         }
    (4)for(){
        …
        for(){
        …
         }
        }
    void main(){
    int i,j,k;
    for(i=1;i<=3;i )
    { for(j=1;j<=3-i 5;j )
    printf(" ");
    for(k=1;k<=2*i-1 5;k )
    {
    if(k<=5) printf(" ");
    else printf("*");
    }
    printf("\n");
    }
    }



    版权声明: 原创作品,答理转载,转载时请务必以超链接方式标明文章 原始情由 、作者信息和本声明。否则将究查法令责任。

  • 相关阅读:
    Hadoop3.0时代,怎么能不懂EC纠删码技术?| 个推技术实践
    linux系统安装mysql
    集合随机排序,list随机排序
    linux性能调优、内存、cpu使用相关命令
    java获取方法调用类
    移动云采用xshell连接
    nginx操作命令
    linux下mysql8版本修改登录密码
    登录验证码图片
    sudo: aptget: command not found
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1975616.html
Copyright © 2020-2023  润新知