• if语句的嵌套以及条件运算符和条件表达式(初学者)


    1、当if语句中的执行语句又是if语句时,则构成了if语句的嵌套情形。

    其一般形式可表示为:

    if()

    {

      if()……;

    }

    或:

    if()

      if()语句1;

      else 语句2;

    else

      if()语句3;

      else 语句4;

    注:if语句的嵌套不要太多,最好不超过5个。(避免逻辑错误)

    在嵌套内的if语句可能又是if-else型,这将会出现多个if和多个else重叠的情况,这时要特别注意if和else的配对问题。

    例:if(表达式1)

      if(表达式2)

        语句1;

      else

        语句2;

    思考:else究竟与哪一个if配对呢?

    就近原则:为避免二义性,C语言规定,else总是与它前面最近的if配对。所以应理解为;

    if(表达式1)

      if(表达式2)

        语句1;

      else

        语句2;

    比较下列两例,哪一个是运用嵌套方法?

    例1:

    #include<stdio.h>
    
    void main()
    {
        int a,b;
        printf("please input A,B ");
        scanf("%d%d",&a,&b);
        if(a!=b)
        if(a>b)  printf("A>B
    ");
        else     printf("A<B
    ");
        else     printf("A=B
    ");
    
    }

    例2:

    #include<stdio.h>
    
    void main()
    {
        int a,b;
        printf("please input A,B ");
        scanf("%d%d",&a,&b);
        if(a==b) printf("A=B
    ");
        else if(a>b)  printf("A>B
    ");
        else     printf("A<B
    "); 
    
    }

    注:采用嵌套结构实质上是为了进行多分支选择,实际上有三种选择,即:A>B、A<B或A=B。这种问题用if-else-if语句也可以完成,而且程序更加清晰。因此,在一般情况下较少使用if语句的嵌套结构,以使程序更便于阅读理解。

    2、条件运算符和条件表达式

    条件运算符为“?和:”是一个三目运算符。

    由条件运算符组成的条件表达式的一般形式为:

    表达式1?表达式2:表达式3

    其求值规则为:若表达式1的值为真,则以表达式2的值作为条件表达式的值,否则以表达式3的值作为整个条件表达式的值

    条件表达式通常用于赋值语句之中:

    例: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)

    例:

    #include<stdio.h>
    
    void main()
    {
        int a,b,max;
        printf("
     please input two nubers ");
        scanf("%d%d",&a,&b);
        printf("max=%d",a>b?a:b);
    }

    补例:输入一个字符,判断它是否为大写字母,如果是,把它转换成小写字母,如果不是,不转换。然后输出最后得到的字符。

    #include<stdio.h>
    
    void main()
    {
        char ch;
        scanf("%c",&ch);
        ch=(ch>='A'&&ch<='Z')?(ch+32):ch;
        printf("%c",ch);
    }
  • 相关阅读:
    [Agc029D]Grid game_贪心
    [Agc029C]Lexicographic constraints_进制_二分答案_贪心
    [Agc029B]Powers of two_贪心_树形dp
    [Agc029A]Irreversible operation_逆序对
    [LuoguP1074]靶形数独_搜索
    umi react处理接口请求慢的问题
    typescript-类型
    bizcharts画图遇到的几个问题
    webpack 热更新原理
    webpack配置
  • 原文地址:https://www.cnblogs.com/lvfengkun/p/10226712.html
Copyright © 2020-2023  润新知