程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 條件語句,if語句

條件語句,if語句

編輯:C++入門知識

條件語句,if語句


if語句

  if語句的3種形式如下:

  第1種形式:

    if(表達式) 語句

  其語義是:如果表達式的值為真,則執行其後的語句,否則不執行該語句。

  第2種形式:

    if(表達式) 

      語句1

    else

      語句2

  其語義是:如果表達式的值為真,則執行語句1,否則執行語句2。

  第3種形式:

    if(表達式1) 

      語句1

    else if(表達式2) 

      語句2

    else if(表達式3) 

      語句3

      ...

    else if(表達式m) 

      語句m

    else

      語句n

  其語義是:依次判斷表達式的值,當出現某個值為真時,則執行其對應的語句,然後跳到整個if語句之外繼續執行程序。如果所有的表達式均為假,則執行語句n,然後繼續執行後續程序。

 

  注意事項:

    (1)3種形式的if語句中在if後面都有”表達式”,一般為邏輯表達式或關系表達式。在執行if語句時先對表達式求解,若表達式的值為0,則按"假"處理;若表達式的值為非0,則按"真"處理,執行指定的語句。

    (2)else子句不能作為語句單獨使用,它必須是if語句的一部分,與if配對使用。

    (3)if與else後面可以包含一個或多個內嵌的操作語句,當為多個操作語句時要用”{}”將幾個語句括起來成為一個復合語句。

    (4)if語句可以嵌套使用即在if語句中又包含一個或多個if語句,在使用時應注意else總是與它上面的最近的未配對的if配對。

 

  else子句的配對

    在使用if語句的嵌套時,如果使用了else子句,則else子句會采用就近原則,與其最近的if語句進行配對。如果想要將else子句與其他的if語句配對,則需要使用當前else子句與if語句之間的內容用大括號括起來,這樣程序會將大括號中的內容作為復合語句處理,就實現了else子句與if語句的配對。

 

#include "stdafx.h"
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    int a, b, c, t;

    printf("請輸入3個數:\n");

    scanf_s("%d%d%d",&a,&b,&c);

    if (a < b)
    {
        t = a;
        a = b;
        b = t;
    }
    if (a < c)
    {
        t = a;
        a = c;
        c = t;
    }
    if (b < c)
    {
        t = b;
        b = c;
        c = t;
    }
    

    printf("排序如下:\n");
    printf("%d,%d,%d\n",a,b,c);

    system("Pause");

    return 0;
}

 

邏輯運算符

  &&邏輯與,a&&b,若a,b為真,則a&&b為真。

  ||邏輯或,a||b,若a,b之一為真,則a||b為真。

  !邏輯非,!a,若為真,則!a為假。

  三者的優先次序是:!->&&->||,即"!"為三者中最高的。

 

“==”和”=”之間的區別

  “==”為關系運算符,結合方向是”自左至右”;”=”是賦值運算符,結合方向是”自右至左”。

 

#include "stdafx.h"
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    int year;

    printf("請輸入年份:\n");
    scanf_s("%d",&year);

    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
        printf("%d年是閏年\n",year);
    else
        printf("%d不年是閏年\n", year);

    system("Pause");

    return 0;
}

 

#include "stdafx.h"
#include <iostream>

using namespace std;

int Weight(int iArray[], int iNum)
{
    int iRet;
    int iVar = iNum / 3;
    int jVar,mVar,nVar,kVar;
    jVar = mVar = nVar = kVar = 0;

    for (int i = 0; i < iVar; i++)
    {
        jVar += iArray[i];
        mVar += iArray[i + iVar];
        nVar += iArray[i + iVar * 2];
    }

    int* pArray = new int[iVar];

    if (jVar>mVar)
    {
        kVar = 0;
    }
    else if (jVar < mVar)
    {
        kVar = 1;
    }
    else if (jVar == mVar)
    {
        kVar = 2;
    }

    if (iVar == 1)
    {
        iRet = iVar*kVar;
    }
    else
    {
        for (int j = 0; j < iVar; j++)
        {
            pArray[j] = iArray[j + iVar*kVar];
        }

        iRet = Weight(pArray, iVar) + iVar*kVar;
    }

    delete[] pArray;

    return iRet;
}

int _tmain(int argc, _TCHAR* argv[])
{
    int Ball[] = {2,1,1,1,1,1,1,1,1};
    int iWeightBall = Weight(Ball, 9);
    
    cout << "比較重的小球號碼:" << endl;
    cout << iWeightBall << endl;

    system("Pause");

    return 0;
}

 

break語句

  break語句是程序控制跳轉語句,可以跳出語句塊,常用於switch語句和循環語句中。當程序達到某一條件時,使用break語句進行跳轉,跳出當前語句的執行。

 

#include "stdafx.h"
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    int bccd = 98;
    printf("單價是多少?\n");
    int Price;

    while (1)
    {
        scanf_s("%d", &Price);
        if (Price > bccd)
        {
            printf("你猜的價格高了!\n");
        }
        else if (Price < bccd)
        {
            printf("你猜的價格低了!\n");
        }
        else
        {
            printf("回答正確!\n");
            break;
        }
    }

    system("Pause");

    return 0;
}

 

switch語句

  switch語句能夠測試一組有序類型(整型、字符型、枚舉型、布爾類型等)的數據,發現匹配的常量時,將執行與該常量關聯的語句。switch語句的語法如下:

    switch(表達式)

    {

    case 常量1:

      語句;

      break;

    case 常量2:

      語句;

      break;

    ......

    case 常量n:

      語句;

      break;

    default:

      語句;

    }

    其中,表達式必須是有序類型,不能是實數或字符串類型。表達式逐一與case語句部分的常量匹配,如果發現有常量與表達式相匹配,則執行當前case部分的語句,直到遇到break語句為止,或者到達switch語句的末尾(沒有遇到break語句)。當表達式沒有發現與之匹配的常量時,將執行default部分的代碼。default語句是可選的,如果代碼中沒有提供default語句,並且沒有常量與表達式匹配,那麼switch語句將不執行任何動作。

 

  case語句使用技巧

    在switch語句中,如果多個case常量需要進行相同的處理,那麼可以將多個case語句組織在一起,中間不加break語句,使多個case語句都可以執行同一個語句塊。

#include "stdafx.h"
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    printf("請輸入消費金額:\n");

    float dMoney;
    scanf_s("%f",&dMoney);
    int iMoney = dMoney;
    switch (iMoney / 500)
    {
    case 0:
        printf("你的消費沒有折扣,金額是:%0.2f\n",dMoney);
        break;
    case 1:
        printf("你的消費享受9折,金額是:%0.2f,優惠後的金額是:%0.2f\n",dMoney,dMoney*0.9);
        break;
    case 2:case 3:
        printf("你的消費享受8折,金額是:%0.2f,優惠後的金額是:%0.2f\n", dMoney, dMoney*0.8);
        break;
    case 4:case 5:
        printf("你的消費享受8折,金額是:%0.2f,優惠後的金額是:%0.2f\n", dMoney, dMoney*0.7);
        break;
    case 6:case 7:
        printf("你的消費享受8折,金額是:%0.2f,優惠後的金額是:%0.2f\n", dMoney, dMoney*0.6);
        break;
    default:
        printf("你的消費享受8折,金額是:%0.2f,優惠後的金額是:%0.2f\n", dMoney, dMoney*0.5);
        break;
    }

    system("Pause");

    return 0;
}

 

枚舉類型

  枚舉類型能夠將一組枚舉常量與一個枚舉類型名稱關聯。枚舉類型就像是一個常量的集中營,在這個集中營中,常量被冠名為枚舉常量,如果參數以某一個枚舉類型定義參數類型,那麼在調用該函數時,就只有該集中營的枚舉類型作為參數通過,雖然其他常量的值和枚舉常量的值可以相同,但是由於不屬於當前枚舉類型這個集中營,所以在作為參數調用函數時不能通過。使用關鍵字enum定義一個枚舉類型。

  在定義枚舉類型時,可以為各個枚舉常量提供一個整數值,如果沒有提供整數值,默認第一個常量值為0,第二個常量值為1,依此類推。

 

  為枚舉常量賦默認值

    enum RecordsetState {RS_OPEN=3,RS_WAIT,RS_CLOSE=6};

  上面的語句將枚舉常量RS_OPEN設置為3,將枚舉常量RS_CLOSE設置為6,沒有為RS_WAIT提供默認值,RS_WAIT的數值為前一個枚舉常量值加1,因此RS_WAIT的數值為4。

 

#include "stdafx.h"
#include <iostream>

using namespace std;

typedef enum NUMBER {ONE,TWO,THREE,FOUR,FIVE,SIX,SEVEN};

int _tmain(int argc, _TCHAR* argv[])
{
    NUMBER num = FIVE;

    switch (num)
    {
    case SEVEN:
        cout << "    *************    " << endl;
    case SIX:
        cout << "     ***********    " << endl;
    case FIVE:
        cout << "      *********        " << endl;
    case FOUR:
        cout << "       *******        " << endl;
    case THREE:
        cout << "        *****        " << endl;
    case TWO:
        cout << "         ***        " << endl;
    case ONE:
        cout << "          *            " << endl;
    }

    system("Pause");

    return 0;
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved