1. 程式人生 > 實用技巧 >BZOJ-2190 [SDOI2008]儀仗隊(莫比烏斯反演)

BZOJ-2190 [SDOI2008]儀仗隊(莫比烏斯反演)

■ if語句

作用

執行滿足條件的語句

□ if語句的三種形式

▶單行格式if語句

▶多行格式if語句

▶多條件的if語句

▶巢狀if語句

□ 單行格式if語句

if(條件)
{
    條件滿足執行的語句
}

注意:if條件後面不要加分號

if(條件);
{
    條件滿足執行的語句  //不管是否符合條件,中括號裡的程式碼都會執行
}

□ 多行格式if語句

if(條件)
{
    條件滿足執行的語句
} 
else 
{
    條件不滿足執行的語句
}

□ 多條件的if語句

if(條件1)
{
    條件1滿足執行的語句
} 
else if(條件2)
{
    條件2滿足執行的語句
} 
else if(條件3) { 條件3滿足執行的語句 } else { 上述條件3都不滿足執行的語句 }

□ 巢狀if語句

if(條件1)
{
    條件1滿足執行的語句

    if(條件4) 
    {
        條件4滿足執行的語句
    }
} 
else if(條件2)
{
    條件2滿足執行的語句
} 
else if(條件3)
{
    條件3滿足執行的語句
}
else 
{
    上述條件3都不滿足執行的語句
}

■ 三目運算子

□ 作用

通過三目運算子實現簡單的判斷

□ 語法

表示式1?表示式2:表示式3

如果表示式1位真,則執行表示式2,並返回表示式2的結果
如果表示式1位假,則執行表示式3,並返回表示式3的結果

int a = 10;
int b = 20;
int c = 0;

c = (a > b ? a : b);  //c的值是20
(a < b ? a : b) = 100; //a的值是100,b的值是20

■ switch語句

□ 作用

執行多條件分支語句

□ 語法

switch(表示式)
{
  case 結果1: 執行語句;break;
  case 結果2: 執行語句;break;
  case 結果3: 執行語句;break;
  ...
  default: 執行語句;break;
}

□ 注意

1) case中如果沒有break,那麼程式會一直向下執行

2)switch分支判斷裡,case關鍵字後只能是整型或者字元型

switch (a)
{    
    case a > 6 && a < 15 : cout << "222" << endl; break; //報錯,必須是整型或字元型
    case 10 : cout << "111" << endl; break;
    default:break;
}

□ 總結

與if語句比較,switch語句結構清晰,執行效率高,但不可以指定區間,而if語句是可以在條件裡指定區間的