5. 条件分支语句

5.1 if语句

5.1.1 if语句的表达形式

1)有的时候,并不是所有语句都要被顺序执行到,会有满足某种条件就执行这部分语句,满足另一条件就执行另一部分语句。这就需要条件分支结构。形式如下:

if(表达式1){			//依次计算表达式1、表达式2...只要碰到一个表达式i为真,就执行语句组i
	语句组1//后面的表达式不在计算,后面的语句也不会被执行。
}						//如果所有表达式都为假,那么执行语句组n
else if(表达式2){
	语句组2}
//可以有n多个else if
else if(表达式n-1){
	语句组n-1}
else{
	语句组n;
}

2)if语句可以没有else if,也可以没有else,也可以都没有

if(表达式1){			
	语句组1}					
else{
	语句组2}
if(表达式1){			
	语句组1}					
else if(表达式2){
	语句组2}
if(表达式1){			
	语句组1}	

3)如果if语句组只有一条语句,可以不用{ }.

if(n > 4)
	ptintf("%d", n);

例题:请输入一个整数,如果是奇数就输出it’s odd,如果是偶数就输出it’s even

#include <iostream>
#include <cstdio>
using namespace std;
int main(){
    int n;
    scanf("%d", &n);
    if (n % 2 == 0)
        printf("it's even.");
    else
        printf("it's odd.");
    return 0;
}

5.1.2 if语句嵌套

1)在if语句组里还可以在写if语句

#include <iostream>
#include <cstdio>
using namespace std;
int main(){
    int n;
    cin>> n;
    if (n > 0){
        if (n % 2)
            cout<<"good"<<endl;
    }
    else		//else总是和与他同等级且最近的配对
        cout<<"bad"<<endl;
    return 0;
} 

5.1.3 if语句常见错误

1)互相矛盾的多个条件,如果确实只希望执行其中一个分支,应该用if和多个else if,而不要写多个if.

#include <iostream>
#include <cstdio>
using namespace std;
int main(){
    int n;
    cin>> n;
    if (n >= 0 && n < 5)
        n = 8;
    else if(n >= 5)
        n = 12;
    else
        n = 100;
    cout<< n <<endl;
    return 0;
}

5.2 switch语句

1)有的时候,使用太多else if不够方便,这就引出了switch语句,用法如下:

switch(表达式){			//表达式的值必须是整数类型(int,char,short...)
	case 常量表达式1//常量表达式必须是整数类型的常量(int,char,short...)
		语句组1;		//表达式的值等于哪个常量表达式就执行哪个语句组。都不相等
		break;			//执行default
	case 常量表达式2:
		语句组2;
		break;	
	....
	case 常量表达式n:
		语句组n;
		break;	
	default:
		语句组n+1;
}

常量表达式不能包含变量!!!
例题:输入一个整数1-7,对应输出周几,输入其他整数,则输出"illegal".

#include <iostream>
#include <cstdio>
using namespace std;
int main(){
    int n;
    cin>> n;
    switch(n){
        case 1:
            cout<<"周1."<<endl;
            break;
        case 2:
            cout<<"周2."<<endl;
            break;
         case 3:
            cout<<"周3."<<endl;
            break;
        case 4:
            cout<<"周4."<<endl;
            break;           
         case 5:
            cout<<"周5."<<endl;
            break;
        case 6:
            cout<<"周6."<<endl;
            break; 
        case 7:
            cout<<"周日."<<endl;
            break;
        default:
            cout<<"illegal."<<endl;
                    
    }
    return 0;
}

switch语句在进入某个case后,会一直执行第一个碰到的“break”,即使这个break是在后面的分支里,如果没有碰到break,则会一直执行到switch语句末尾的},包括default部分的语句组也会被执行,所以要全部加上break!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值