C语言选择的嵌套(进阶篇十八)

  逻辑表达式

    ※C语言中没有其它语言的“真”和“假”值,英文叫TRUE和FALSE值,也叫逻辑型变量。所有的表达式,只要非0(包括负数)即为真,0即为假。真和假就是我们平时所说的“条件成立”与“不成立”。

    ※关系和逻辑运算符也可以和算术运算符一起参加混合运算,与算术运算不同的是,关系和逻辑运算的结果只有0和1。

      假如int a=3,b=4,c=0;

      a&&b的结果为1,b||c的结果为1,a&&c的结果为0。!a+c>b||a-b的结果是 TRUE

    ※ a && b && c中,如果a为假,就不必再判断b和c,对于(i=0) && (j=20)这样的式子,j=20这条赋值语句永远也不会执行。

    ※同理,a || b || c,如果a为真,就不必再判断b和c,对于 (i=5) || (j=20)这样的式子,后面的j=20也不会执行。

  条件运算符

    格式:

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

      它相当于普通的if分支语句,条件表达式1成立(非0值),执行表达式2,不成立(0值),执行表达式3。如果将它作为表达式,将执行过的值作为整个表达式的最终值。

      条件表达式应用的一个典型例子就是取两数中的最大值:

        int max,a=3,b=5;

        max=a>b?a:b;

        它相当于

        if(a>b)max=a;

        else max=b;

    设int a=5,b=6,表达式(++a= =b- -)?++a:- -b的值是 7

  嵌套的if

    定义:if中还有一层if,或者else中还有if

 

    程序1

// 18-1账号检查.c


#include <stdio.h>
#pragma warning(disable:4996);
main()
{
    int account = 1314555, password = 123456;   //保存的账号和密码
    int user_name, user_password;            //用户输入的账号密码

    printf("请输账号:");
    scanf("%d",&user_name);   //输入账号

    if (account == user_name)  //输入的和保存的作比较
    {
        printf("账号正确,请输入密码:");
        scanf("%d", &user_password);    //输入的密码
        if (user_password == password) //输入的密码作比较
        {
            printf("登录中...");
        }
        else
        {
            printf("密码错误!\n");
        }
    }
    else
    {
        printf("账号错误!\n");
    }
}

    ※嵌套的层数过多,if语句的配对容易出问题,这种问题主要出现在if和else数目不一样的情况下,如:

      if (a<5)

        if (b<5) printf (“b\n”);

      else

        if (c<5) printf (“c\n”);

        else printf (“d\n”);

 

      程序作者想通过格式的改变将第一个else和第一个if语句配对,实际上编译器有自己的配对方式:它会将else与离自己最近的if语句配对,上面的语句实际上被编译器配对成:

      if (a<5)

        if (b<5) printf (“b\n”);

        else

          if (c<5) printf (“c\n”);

          else printf (“d\n”);

     

      如果想强制配对,请多使用花括号:

        if (a<5)

        {

          if (b<5) printf (“b\n”);

        }

        else

        {

          if (c<5) printf (“c\n”);

          else printf (“d\n”);

        }

  编写程序:输入a、b、c三个数,打印出最大者。

// 18-2输出最大值.c

#include <stdio.h>

main()
{
    int a, b, c;    //定义三个变量
    int max;        //最大值

    printf("请输入三个用逗号隔开的数:");
    scanf_s("%d,%d,%d", &a, &b, &c);        //用户输出的三个数
    max = a;
    if (max<b) max = b;
    if (max<c) max = c;
    printf("%d\n", max);

}
原文地址:https://www.cnblogs.com/httpcc/p/15448795.html