目录

C++程序控制结构

选择控制语句 if else

这里不像Python,每个分支语句后不需要加:,直接加 (Tab)后写分支语句,条件判断需要小加括号括起来,Python中是空格加条件,这点也不同。

1
2
3
4
if(x>=0)
    cout<<"y="<<1<<endl;
else
    cout<<"y="<<-1<<endl;

也可以省去else后的语句

1
if(x>=0)  cout<<"y="<<1<<endl;

又到了经典的找最大值程序2333

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#include<iostream>
using namespace std;
int main()
{
    int a,b,max;
    cout<<"Input a,b:";
    cin>>a>>b;
    if(a>b)
        max=a;
    else
        max=b;
    cout<<"The max is:"<<max<<endl;
    return 0;
}

用条件运算符?:代替if else语句

1
max=a>b?a:b;

代替

1
2
3
4
5
if(a>b)
    max=a;
else
    max=b;
cout<<"The max is:"<<max<<endl;

代替后的程序如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#include<iostream>
using namespace std;
int main()
{
    int a,b,max;
    cout<<"Input a,b:";
    cin>>a>>b;
/*
    if(a>b)   max=a;
    else      max=b;
    if(c>max) max=c;
    cout<<"The max is:"<<max<<endl;
*/
//用?:运算符实现
    max=(a>b?a:b)>c?(a>b?a:b):c;
    cout<<"The max is:"<<max<<endl;
    return 0;
}

这里的if else语句缩减了格式,这是常用书写规范下需要合理选择的,花括号{}不能超过一屏等就是类似的常用书写规范。

if else语句的嵌套

有两种形式嵌套if语句

1
2
3
4
5
6
if()
    if()
    else
else
    if()
    else

1
2
3
4
5
if()
else if()
……
else if()
else

无论是何种形式的if else嵌套,需要注意的是if和else的对应关系,有时候为了区分该层if的语句范围,用花括号{}括起来表示。

1
2
3
if()
{   if()  语句1}
else   语句2

实例(考试成绩分级)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#inclue<iostream>
using namespace std;
int main()
{
    int score;
    char result;

    cout<<"请输入学生百分制成绩(0~100):";
    cin>>score;

    if(score>=90)
        result='A';
    else
        if(score>=80)
            result='B';
        else
            if(score>=70)
                result='C';
            else
                if(score>=60)
                    result='D';
                else
                    result='E';
    
    cout<<"百分制成绩"<<score<<"对应的成绩等级"<<result<<endl;
    return 0;
}

这里成绩通过自上而下的方式筛选,实际也可以自下而上筛选。

多路选择控制语句switch

1
2
3
4
5
6
7
8
switch(测试表达式)
{
    case   常量表达式1:   语句1
    case   常量表达式2:   语句2
    ……
    case   常量表达式n:   语句n
    default:             语句n+1  
}

执行顺序:
1.执行测试表达式得到其值;
2.在case语句中找到值相等的常量表达式;
3.如果没有找到相等的常量表达式时,则从"default:“开始执行。

注意:
1.switch后的括号()内只能是整型、字符型、枚举型;
2.各常量表达式的值不能相等,且次序不影响执行结果;
3.每个case语句只是一个入口标号,通常只需要执行一个case后的语句,所以每个case选择的最后应该加break语句,用来结束整个switch结构;
4.当若干选择需要执行相同操作时,可以使多个case选择共用一组语句。

switch重做考试成绩分级:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<iostream>
using namespace std;
int main()
{
    int score;
    char result;
    cout<<"请输入学生百分制的成绩(0~100):";
    cin>>score;

    switch(score/10)
    {
        case 10:
//            result='A';
        case 9:
            result='A';
            break;
        case 8:
            result='B';
            break;
        case 7:
            result='C';
            break;
        case 6:
            result='D';
            break;
        default:
            result='E';
    }
    cout<<"百分制成绩"<<score<<"对应的成绩等级为:"<<result<<endl;
    return 0;
}

循环控制结构

###1.while语句

1
while(测试表达式) 循环体

这里判断测试表达式为true时,执行循环体,一般这里的循环体会用花括号{}括起来,判断测试表达式为false时,循环结束。

求自然数1~100之和。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#include<iostream>
using namespace std;
int main()
{
    int i=1,sum=0;
    while(i<=100)
    {
        sum+=i;
        i++;
    }
    cout<<"sum="<<sum<<endl;
    return 0;
}

程序运行情况:

1
sum=5050

do while语句

形式

1
2
do  循环体
while(测试表达式);

实例:求1~100之和

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#include<iostream>
using namespace std;
int main()
{
    int i=1,sum=0;
    do{
        sum += i;
        i++;
    }while(i<=100);
    cout<<"sum="<<sum<<endl;
    return 0;
}

这里do while语句与while语句不同之处在于是测试表达式的判断先后。

有限次循环三要素:
1.循环控制变量初始化;
2.循环结束条件;
3.循环变量更新。

for语句

形式

1
2
for(初始化表达式;测试表达式;更新表达式)
    循环体

实例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#include<iostream>
using namespace std;
int main()
{
    int i=1,sum=0;
    for(i<1,i<=100,i++)
    {
        sum +=i;
    }
    cout<<"sum="<<sum<<endl;
    return 0;
}

程序段:

1
2
3
4
5
int i=1,sum=0;
for(i<1,i<=100;i++)
{
    sum +=i
}

可以缩写成

1
2
for(int i=1,sum=0;i<=100;i++)
    sum+=i

如果省略初始化表达式和更新表达式,只有测试表达式,则完全等同于while语句。

1
2
for(;i<=60;)
    sum+= i++;

等同于

1
2
while(i<=60)
    sum+= i++;