zoukankan      html  css  js  c++  java
  • 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);
    
    }
  • 相关阅读:
    牛客国庆集训派对Day6 Solution
    牛客国庆集训派对Day5 Solution
    牛客国庆集训派对Day4 Solution
    牛客国庆集训派对Day3 Solution
    牛客国庆集训派对Day2 Solution
    牛客国庆集训派对Day1 Solution
    The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online Solution
    ACM-ICPC 2018 焦作赛区网络预赛 Solution
    2016 CCPC 长春 Solution
    CCPC 2017-2018, Finals Solution
  • 原文地址:https://www.cnblogs.com/httpcc/p/15448795.html
Copyright © 2011-2022 走看看