1. 程式人生 > 其它 >C語言----選擇的巢狀(進階篇十八)

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);

}