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

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM