分类
Level1

选择结构/分支结构

学习语言最好的方式就是实践,每当掌握一个新功能时,就要立即将这个功能应用到实践中。
使用大括号括起来的语句称为代码块。代码块里面的代码相比于外面应当有统一的缩进(建议4个空格)。
开头大括号可以像例子中给出的那样不换行,也可以另起一行,看个人习惯。
总之,写程序应当有良好的代码规范,比如换行、空格、缩进等,这也是为了使代码可读性强,更容易理解。

一. 比较运算符 比较运算符用于对数据的比较,计算两个数据之间的关系,因此也被成为关系运算符。

#include<iostream> 
using namespace std;
int main(){
    cout<<(100>=90)<<endl;//计算两个数据之间的大小关系
    cout<<(100<=90)<<endl;//注意:这里要加括号
    return 0;
}

二、基本if-else语句
判断条件:通常是一个条件表达式,也可以是一个变量。
当条件成立时,执行某些语句;否则执行另一些语句。

#include<iostream> 
#include<cstdio>//以下代码输入用了cin,输出用了printf
using namespace std;
int main(){
    int a;
    cin>>a; //输入a,等同scanf("%d",&a);
    if(a>5){ //如果a大于5
	printf("%d is big! \n",a);//等同cout<<a<<"is big!"<<endl;
	printf("%d + 1 = %d \n",a,a+1); 
    }else{  //否则
	printf("%d is small! \n",a); 
	printf("%d - 1 = %d \n",a,a-1); 
    }
    return 0;
}

可以没有 else 语句:

#include<iostream> 
#include<cstdio> 
using namespace std;
int main(){
    int a;
    cin>>a;   //输入a 
    if(a>5){  //如果a大于5
	printf("%d is big! \n",a); 
	printf("%d + 1 = %d \n",a,a+1); 
    }
    return 0;
}

当只有一条语句时,大括号可以省略:

#include<iostream> 
#include<cstdio> 
using namespace std;
int main(){
    int a;
    cin>>a;   //输入a 
    if(a>5) 
        printf("%d is big! \n",a); 
    else
        printf("%d is small! \n",a); 
    return 0;
}

提示:只有在明确不会出错的情况下,才可以写省略大括号。

练习1:输入一个整数,输出这个数的绝对值。

#include<iostream> 
#include<cstdio> 
using namespace std;
int main(){
    int a;
    cin>>a;   //输入a 
    if(a>0) cout<<a; //if后只有一句代码,可以省略{}
    else cout<<-a;   //else后只有一句代码,可以省略{}
    return 0;
}

练习2:输入两个整数,输出两个数中较大的那个。

#include<iostream> 
#include<cstdio> 
using namespace std;
int main(){
    int a,b;
    cin>>a>>b;   //依次输入a和b
    if(a>b) cout<<a; //如果a比b大,则输出a
    else cout<<b;   //否则,输出b
    return 0;
}

if-else语句内部也可以是if-else语句。

练习3:输入三个不同的整数,输出三个数中最大的那个。

#include<iostream> 
#include<cstdio> 
using namespace std;
int main(){
    int a,b,c;
    cin>>a>>b>>c;  
    if(a>b){  
        if(a>c){  //多层if嵌套
	    cout<<a;  //a最大
	}else{
	    cout<<c;  //c最大
        }
    }else{
        if(b>c){
	    cout<<b;  //b最大
	}else{
	    cout<<c;  //c最大
	}
     }
     return 0;
}

条件运算符 条件? 表达式1:表达式2 ,这是C++中唯一的一个三目运算符。

三. if-else 多分支语句:练习:输入一个0到100之间的分数, 如果大于等于85,输出A; 如果大于等于70并且小于85,输出B; 如果大于等于60并且小于70,输出C; 如果小于60,输出 D;

#include <iostream>
using namespace std;
int main(){
    int a;
    cin>>a;
    if(a>=85){  //大于等于85,输出A
        cout<<'A'<<endl;
    }else if(a>=70){  //否则,大于等于70,输出B
        cout<<'B'<<endl;
    }else if(a>=60){
        cout<<'C'<<endl;
    }else{
        cout<<'D'<<endl;
    }
    return 0;
}

四、逻辑运算符 练习:输入三个不同的整数,输出三个数中的最大值。

(1) 与 &&
(2) 或 ||
(3) 非 !  常见写法if(!a) 相当于 if(a==0)
#include<iostream> 
using namespace std;
int main(){
    int a,b,c;
    cin>>a>>b>>c;  
    if(a>b&&a>c){
	cout<<a;  //a最大
    }else if(b>a&&b>c){
	cout<<b;  //b最大
    }else{
	cout<<c;  //c最大
    }
    return 0;
}

练习:用一条if语句,判断闰年。非整百年,被4整数是闰年;整百年,被400整除是闰年。

#include<iostream> 
using namespace std;
int main(){
    int a;
    cin>>a;
    if((a%100!=0 && a%4==0)||(a%400==0)){
        cout<<a<<" is a leap year!"<<endl;
    }else{
        cout<<a<<" is not a leap year!"<<endl;
    }
    return 0;        
}

五、switch语句 switch都能用if…else替代,但也应该知道switch的使用方法。练习:要求按照考试成绩的等级输出百分制成绩段,A等为85分以上,B等为70~84分,C等为60~69分,D等为60分以下。成绩的等级由键盘输入(大小写的ABCD皆可)。

int main(){
    char c;
    cin>>c;     //输入任意字符c
    if(c>='a' && c<='z') {  //如果是小写,转成大写。
        c=c-32;   //小写字母的ASCII码比大写字母大32
    }
    switch (c) {   //这个输入参数只能是字符、整数或布尔类型
        case 'A':
            cout<<"85~100"<<endl;
            break; //记得要break哦,如果没有,可以试试看输出什么
        case 'B':
            cout<<"70~84"<<endl;
            break;
        case 'C':
            cout<<"60~69"<<endl;
            break;
        case 'D':
            cout<<"0~60"<<endl;
            break;
    }
    return 0;
}

注意:switch()的输入参数只能是字符、整数或布尔类型,不可以是其他数据类型。每个case语句里面都有要break,不然会继续执行下面的case中的语句。

如果不将字符都转换成大写或小写,那么就需要分别进行判断:

nt main(){
    char c;
    cin>>c;     //输入任意字符c
    switch(c){    //这个输入参数只能是字符、整数或布尔类型
        case 'A':
            cout<<"85~100"<<endl;
            break;//记得要break,如果没,可以试试看输出什么
        case 'B':
            cout<<"70~84"<<endl;
            break;
        case 'C':
            cout<<"60~69"<<endl;
            break;
        case 'D':
            cout<<"0~60"<<endl;
            break;
        case 'a':
            cout<<"85~100"<<endl;
            break;   
        case 'b':
            cout<<"70~84"<<endl;
            break;
        case 'd':
            cout<<"60~69"<<endl;
            break;
        case 'd':
            cout<<"0~60"<<endl;
            break;
    }
    return 0;
}

注意1:C++中的==和=的区别:

注意2:布尔类型的使用:

注意3:运算优先级:

if和switch的特点比较:

合并switch语句的使用:

常见易错点:
1、逻辑运算符&&、||、!
逻辑表达式运算结果有“真”和“假”两种,C语言中用 “1” 表示“真” ,用“0”表示“假”。条件a && 条件b:逻辑与运算,两者都为真,结果才能为真。注意:&&采用的是短路运算,如果条件a为假,那么条件b不判断,直接判定结果为假。
同理:|| 运算中,如果第一个条件为真,第二个条件不判断,结果直接为真。
! 称为逻辑非运算符。用来逆转操作数的逻辑状态,如果条件为true,则逻辑非运算符将使其为false。
2、离散数学的符号 ‘¬’、’∧’、’∨’
“¬”是逻辑非的意思,专门否定一个命题,p与¬p一真一假。
“∧”是逻辑与的意思,例如p∧q,当p,q同真为真,其他为假。
“∨”是逻辑或的意思,例如p∨q,当p,q同假为真,其他为真。
3、switch case
一个switch语句允许测试一个变量等于多个值时的情况,相当于if else。 注意:
switch中的表达式必须是一个整型或者枚举类型
如果某个case值匹配,会执行该case中的语句,如果没有break,会不判断下一个 case直接执行下一个case, 直到遇到break。
default相当于if else的else,也可以放在最开始的位置。
switch表达式类型和case中的值的类型必须相同。
4、三目运算符格式
判断条件 ? 表达式1 : 表达式2;
含义:如果判断条件成立,则执行表达式1, 否则执行表达式2。 三目运算符可以简化if else的写法。