第三章 C++程序的流程控制

3.1 流程控制与程序结构(P51

顺序结构:按先后顺序执行。

条件分支结构:由条件决定执行哪个语句(if switch)。

循环结构:由条件决定语句重复执行次数。

可分为先判断后执行和先执行后判断。

while for dowhile

3.2 条件分支结构

3.2.1 if 语句

1.      单分支(P53

 形式:if(表达式) 语句;

 功能:表达式值非0,则执行子语句.

 流程图:

 例如: ...... 

if(a>0) 

 cout<<"该数大于0";

 ......

 .双分支(P53

 形式:if(表达式) 语句1;

 else

语句2;

功能:表达式值非0,则执行子语句1,

   表达式值为0,则执行子语句2.

流程图:

例如:把大数赋值给m

......

if(a>b)

   m=a;

   else

   m=b;

......

3.2.2 if语句的嵌套(P54

例如:大数赋值z

                  n<=0  n>0    z=a       z=b
     ————+———+———+———>
                    0             b            a

if(n>0)

if(a>b) z=a;

else z=b; 

else与最近的if配对。

If语句嵌套应该放在else后面。(P54

例如:

z=b n<=0 n>0 z=a

             z=b   n<=0    n>0    z=a 
     —————+———+———+———>
                       0             b            a

if(n>0)

{if(a>b) z=a;}

else z=b;

改写为

if(n<=0)

z=b;

else

if(a>b) z=a;

3.1 2个数中的大数(P55

if(I>=j)

cout<<I<<endl;

else

cout<<j<<endl;

3.2 3个数中的大数(P55

if(I>=j){

if(I>=k)

cout<<I<<endl; //大到小ijk

else

cout<<k<<endl; //大到小kij

}

else{

if(j>=k)

cout<<j<<endl; //大到小jik

else

cout<<k<<endl; //大到小kji

}

3.4 3个数排序(P58)

中间变量

变量名

I

J

K

数值

22

33

44

排序1

33

22

44

排序2

44

22

33

排序3

44

33

22

排序结果

If(I<j){p=I;I=j;j=p;}

If(I<k){p=I;I=k;k=p;}

If(j<k){p=j;j=k;k=p;}

 

3.2.3 if 多分支结构(P61

if(条件1) 语句1

else if(条件2) 语句2

else if(条件3) 语句3

 

3.2.4 switch语句(P62

形式:switch(表达式)

   {

   case 常量表达式1: 语句1; break;

   case 常量表达式2: 语句2; break;

   ......

   case 常量表达式n: 语句n; break;

   default: 语句; break;

   }

功能:由表达式值控制转向相应情况常量后的语句.

流程图:

例:3.7 数字星期

switch(weekday){

case 0: cout<<"Sunday"<<endl;break;

3.3 循环结构

1. for 循环(P67)

形式:for(初值;终值;增量)

循环体语句;

功能:小于终值,则执行循环语句.

流程图:

例:for(int I=0;I<100;I++=5)cout<<I<<' ';

3.11 显示输出99乘法表

i j

1

2

3

4

5

6

7

8

9

1

1

2

3

4

5

6

7

8

9

2

2

4

6

8

10

12

14

16

18

For(I=1;I<10;I++){

For(int j=1;j<10;j++)cout<<setw(3)<<I*j;

}

3.3.2 while 循环(P71)

形式:while(表达式)

语句;

功能:先判断表达式值,0则执行循环语句.

流程图:

3.12 1/2+3/4+5/8+7/16+9/32……

递推公式:(Ni+2)/2di

while((s0=double(n)/d)>=0.000001){

s+=s0;

n+=2;

d+=d;

}

3.3.3 do-while 循环(P75)

形式:do 语句;

   while(表达式);

功能:先执行循环语句,直到表达式值为0,才结束循环.

流程图:

3.15 求一元二次方程的根。

#include<math.h>

……

do cin>>A>>B>>C;

while(A!=0.0);

double Delta=B*B-4*A*C;

if(Delta<0.0)

cout<<"无实根!”;

3.3.4 breakcontinue的使用(P77

while(true){

cin>>radius;

if(radius==0.0) break;

if(radius<0.0) {

continue;

}

area=Area(radius);

}

1. break 语句(P76)

形式:break;

功能:终止循环、跳出switch语句.

2. continue 语句(P76)

形式:contineu;

功能:跳过continue后的语句,重新开始循环.

3.4 其他流程控制

3.4.1 goto 语句(P79)

形式:goto 语句标号;

功能:无条件转向标号语句.

for(n=1;;n++)

  {

  if(n>100) goto end;

  }

end:; //标号语句

3.4.2 return 语句

1. 函数定义(P79)

形式:类型 函数名(形式参数表)

   {

函数体;

   }

例如: void subf( void )

   无返回 函数名 参数为空 无分号

2. 函数调用(P79)

形式:函数名(实际参数表);

例如 add( a,b );

   函数名 参数名 有分号

3. 返回语句(P79)

形式:return(表达式);

功能:函数返回一个值,即函数值.

无返回值的函数,return后无表达式。

习题三(P85)题 311 312

实验三 条件分支程序设计(P33

 

第四章 数组

4.1一维数组

4.1.1一维数组的定义和初始化(P86)

1.数组格式:类型 数组名[元素个数];

例如:int d[ ]={1,2,3,4,5,6};

2.数组元素的引用:下标访问操作符[ ](P87)

形式:数组名[下标];

例如:k=num[4];

3.数组的机内存储(P88)

按行逐一元素逐行存储.

4.1 反显输入数

……

int data[8];

for(I=0;I<8;I++)cin>>data[I];   //正方向扫描

……

for(I=7;I>=0;I--)cout<<data[I];<<’’;  //反方向扫描

 

4.3 序排数 SXPS.CPP(P90)

数组
元素

Data
[0]

Data
[1]

Data
[2]

Data
[3]

Data
[4]

Data
[5]

Data
[6]

Data
[7]

Data
[8]

Data
[9]

元素
数值

12

23

9

34

45

7

78

-33

59

3

元素

Data
[m]

           

Data
[j]

 

 

I=1

-33

23

9

34

45

7

78

12

59

3

I=2

 

3

             

23

I=3

 

 

7

             

I=4

 

 

             

 

结果

-33

3

7

9

12

23

34

45

59

78

   For(m=0;m<SIZE;m++){

   Int j=m;  //j 最小位置,data[m]最小元素

   For(int I=m+1;I<SIZE;I++)

   If(data[I]<data[j])j=I;    //挑选

   If(j>m){                          //排序

   Int k=data[m];

   Data[m]=data[I];

   Data[j]=k;

 

4.2 多维数组

4.2.1 二维数组的定义和初始化(P94)

  例如:float d[4][5];   //4行5列

定义数组时对数组元素列表初始化(赋初值).

例如:int num[ ][3]={1,3,5},{0},{2,4,6};

4.2.2 二维数组应用举例(P96)

  例4.5  整数矩阵5*5

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

4.3 字符数组与字符串(P100)

定义:char s[  ];

赋值:字符 char s1[ ]={'A','B','C'};

 字符串 char s2[ ]="A String";

* 字符串(数组)的输入(P)

重载运算符>>:同运算符装载单字符或重新装载字符串.

例如:char str[5];

 cin>>str[0]; //装载单字符

 cin>>str; //同运算符重新装载字符串

标准库函数gets:装载字符串

* 字符串(数组)的输出(P)

  重载运算符<<:同运算符输出单字符或重新输出字符串.

  例如:char str[]="ABCDE";

 cout<<str[3]; //输出单字符

 cout>>str; //同运算符重新输出字符串

  标准库函数puts:输出字符串

 

4.3.3 字符串的主要操作(P101)

  字符串测长度:strlen(字符串)

  字符串复制:strcpy

  字符串连接:strcat

  字符串比较:strcmp

  字符串输出:cout<<字符串

  字符串输入:cin>>字符串变量

  字符串大写转小写 strlwr

  字符串小写转大写 strupr

自测题(P105)

4.3-2 char s1[10]="abcdef",s2[20]="inter";

        // s1:abcdef+4, s2:inter+15

      cin>>s1;   //s1:net

      int k=0,j=0;

      while(s2[k])k++;  //k:01234,4+1

      while(s2[k++]=s1[j++]);  //k:567,j:012,s2:inter+net