• C语身教程第三章: C言语次第计划开端(5)


    3.第三种办法为if-else-if办法
    前二种办法的if语句一样伟多数用于两个分支的情况。 当有多个分支选择时,可给与if-else-if语句,其一样伟大办法为:
    if(表达式1)
    语句1;
    else if(表达式2)
    语句2;
    else if(表达式3)
    语句3;

    else if(表达式m)
    语句m;
    else
    语句n;
    其语义是:顺次判别表达式的值,当出现某个值为真时, 则实施其对应的语句。然后跳到整个if语句之外经受实施次第。 要是齐全的表达式均为假,则实施语句n 。 然后经受实施后续次第。 if-else-if语句的实施过程如图3—3所示。
    #include"stdio.h"
    void main(){
    char c;
    printf("input a character: ");
    c=getchar();
    if(c<32)
    printf("This is a control character\n");
    else if(c>='0'&&c<='9')
    printf("This is a digit\n");
    else if(c>='A'&&c<='Z')
    printf("This is a capital letter\n");
    else if(c>='a'&&c<='z')
    printf("This is a small letter\n");
    else
    printf("This is an other character\n");
    }
    本例要求判别键盘输出字符的类别。可以按照输出字符的ASCII码来判别范例。由ASCII码表可知ASCII值小于32的为控制字符。 在“0”和“9”之间的为数字,在“A”和“Z”之间为年夜写字母, 在“a”和“z”之间为小写字母,其他则为此外字符。 这是一个多分支选择的结果,用if-else-if语句编程,判别输出字符ASCII码地址的规模,分袂给出差此外输出。比方输出为“g”,输出表现它为小写字符。

    4.在应用if语句中还应留神以下结果

    (1) 在三种办法的if语句中,在if环节字之后均为表达式。 该表达式通常是逻辑表达式或关系表达式, 但也可以是此外表达式,如赋值表达式等,以致也可以是一个变量。比方: if(a=5) 语句;if(b) 语句; 都是允许的。只需表达式的值为非0,即为“真”。如在if(a=5)…;中表达式的值永远为非0,以是后来的语句总是要实施的,当然这种情况在次第中不必然会出现,但在语法上是公允的。
    又如,有次第段: if(a=b)
    printf("%d",a);
    else
    printf("a=0"); 本语句的语义是,把b值付与a,如为非0则输出该值,否则输出“a=0”字符串。这种用法在次第中是通常出现的。

    (2) 在if语句中,前提判别表达式必需用括号括起来, 在语句之后必需加分号。

    (3) 在if语句的三种办法中,齐全的语句应为单个语句,要是要想在惬心前提时实施一组(多个)语句,则必需把这一组语句用{} 括起来组成一个复合语句。但要留神的是在}之后不克不及再加分号。
    比方:
    if(a>b){
    a ;
    b ;
    }
    else{
    a=0;
    b=10;
    }

    if语句的嵌套

    当if语句中的实施语句又是if语句时,则组成了if 语句嵌套的情况。其一样伟大办法可表示如下:
    if(表达式)
    if语句;
    年夜概为
    if(表达式)
    if语句;
    else
    if语句;
    在嵌套内的if语句可以或许又是if-else型的,这把会出现多个if和多个else堆叠的情况,这时要不凡留神if和else的配对结果。比方:
    if(表达式1)
    if(表达式2)
    语句1;
    else
    语句2;
    此中的else究竟是与哪一个if配对呢?
    应该了解为:   照样应了解为:
    if(表达式1)    if(表达式1)
     if(表达式2)     if(表达式2)
      语句1;       语句1;
    else         else
      语句2;       语句2;
    为了停止这种二义性,C言语划定,else 总是与它后面迩来的if配对,因此对上述例子应按前一种情况了解。
    比赛两个数的巨细关系。
    void main(){
    int a,b;
    printf("please input A,B: ");
    scanf("%d%d",&a,&b);
    if(a!=b)
    if(a>b) printf("A>B\n");
    else printf("A<B\n");
    else printf("A=B\n");
    }
    本例顶用了if语句的嵌套结构。 给与嵌套结构本性上是为了进行多分支选择,例3.16现实上有三种选择即A>B、A<B或A=B。这种结果用if-else-if语句也可以完成。并且次第愈加明白。因此, 在一样伟大情况下较少应用if语句的嵌套结构。 以使次第更便于阅读了解。
    void main(){
    int a,b;
    printf("please input A,B: ");
    scanf("%d%d",&a,&b);
    if(a==b) printf("A=B\n");
    else if(a>b) printf("A>B\n");
    else printf("A<B\n");
    }

    前提运算符和前提表达式

    要是在前提语句中,只实施单个的赋值语句时, 常可应用前提表达式来完成。不单使次第简捷,也进步了运转服从。
    前提运算符为?和:,它是一个三目运算符,即有三个插足运算的量。由前提运算符组成前提表达式的一样伟大办法为:
    表达式1? 表达式2: 表达式3
    其求值法则为:要是表达式1的值为真,则以表达式2 的值作为前提表达式的值,否则以表达式2的值作为整个前提表达式的值。 前提表达式通常用于赋值语句之中。
    比方前提语句:
    if(a>b) max=a;
    else max=b;
    可用前提表达式写为 max=(a>b)?a:b; 实施该语句的语义是:如a>b为真,则把a付与max,否则把b 付与max。
    应用前提表达式时,还应留神以下几点:
    1. 前提运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。因此 max=(a>b)?a:b可以去掉括号而写为 max=a>b?a:b
    2. 前提运算符?和:是一对运算符,不克不及分开零丁应用。
    3. 前提运算符的结合方向是自右至左。
    比方:
    a>b?a:c>d?c:d应了解为
    a>b?a:(c>d?c:d) 这也便是前提表达式嵌套的情况,即此中的表达式3又是一个条
    件表达式。
    void main(){
    int a,b,max;
    printf("\n input two numbers: ");
    scanf("%d%d",&a,&b);
    printf("max=%d",a>b?a:b);
    }
    用前提表达式对上例从新编程,输出两个数中的年夜数。


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

  • 相关阅读:
    hdu6162 Ch’s gift
    hdu 6166 Senior Pan
    bzoj2818 Gcd
    hdu6127 Hard challenge
    splay伸展树模板
    2016-2017 National Taiwan University World Final Team Selection Contest J
    2016-2017 National Taiwan University World Final Team Selection Contest C
    使用powershell管理域用户
    EGL Driver message (Critical) eglInitialize: No available renderers.
    Python实现telnet命令测试防火墙
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1975618.html
Copyright © 2020-2023  润新知