4、C++简单程序设计:基本控制结构


算法的基本控制结构包括顺序结构、选择结构和循环结构。

顺序结构

顺序结构就是按照事物的逻辑一条语句一条语句的写下来,顺序执行。

选择结构

if语句

if语句专门用来实现选择结构,使用形式为:

if (表达式)
   语句1
else
   语句2

这个结构的执行顺序是,先计算表达式的值,如果为true,则执行语句1,否则就执行语句2。

if (x>y)
  cout<<x;
else
  cout<<y;

多重选择结构

嵌套的if语句

if(表达式1)
   if(表达式2)  语句1
   else        语句2
else
   if(表达式3)  语句3
   else        语句4

语句1、2、3、4可以是复合语句。每一层的if都要与else配对,如果省略掉一个else则要使用{}把这一层的if语句括起来。写程序的时候最好每层都用大括号括起来这样会大大减少出错的概率,也比较整齐。
Note:距离最近的if和else配对

if…else if语句

若if语句的嵌套都在else分支下,就可以使用if…else if语句。使用的语法形式为:

if (表达式1)        语句1
else if (表达式2)   语句2
else if (表达式3)   语句3
   ...
else               语句n

这里的执行逻辑就是,如果表达式1为true,则执行语句1,如果表达式1为false,且表达式2为true则执行语句2,如果表达式1、表达式2为false,且表达式3为true则执行语句3…就这样一层一层判断着执行下去。

switch语句

我们进行判断选择的时候,有可能每次都是对同一个表达式的值进行判断,那么就没有必要在每一个嵌套的if语句里都计算一下它的值,而是使用switch来解决这个问题。语法形式为:

可用于替换if…else if语句

switch (表达式)
{
  case 常量表达式1:  语句1; break;
  case 常量表达式2:  语句2; break;
    ...
  case 常量表达式n:  语句n; break;
  default:         语句n+1; break;
      }  

此类语句的执行顺序是,先计算表达式的值,然后在case语句中寻找与之相等的常量表达式,跳到此处开始执行,若没有与之相等的则跳到default开始执行。使用switch语句时要注意以下几点:这些常量表达式的值不能相同,顺序可以随便;每个case语句的最后都要加break语句,不然会一直把下面所有的语句执行完;switch括号里的表达式必须是整型、字符型和枚举型的一种;每个case下的语句不需要加{};如果多个case下执行一样的操作,则多个case可以共用一组语句,比如:

case 1:
case 2:
case 3:   a++;
        break;

循环结构

循环结构有三种循环控制语句,就是有三种写法:while语句、do-while语句和for语句。

while语句

while(表达式)    语句

它的执行顺序是,先计算while括号里表达式的值是true还是false,如果是true则执行循环体也就是后面的语句,如果是false则跳出while循环,继续执行while循环下面的程序。while后面的语句可以是多条语句,是多条语句的话要用大括号括起来。大家注意,循环体里应该有可以改变表达式值的语句,以便让它能循环到一定程度时跳出循环,不然可就死循环了。

do-while语句

do   语句
while(表达式)

它的执行顺序是:先执行循环体语句,就是do后面的语句,再判断循环条件表达式的值也就是while括号里表达式的值,如果为true则继续执行循环体,如果为false则结束循环,继续执行do-while循环后面的语句。这里还要强调下,跟while循环一样,循环体中一定要由改变循环条件表达式的语句,不然也会死循环。do后面的语句也可以是多条语句,是多条语句的话也要用大括号括起来。

for语句

for(表达式1;表达式2;表达式3)
   语句

它的执行顺序是,先计算表达式1的值,再计算表达式2的值,根据表达式2的值决定是否执行循环体,若是true则执行一次循环体,若为false则退出循环。每执行一次循环体后都计算表达式3的值,然后再计算表达式2的值根据其值判断是否执行循环体,就这样循环了。表达式1的值只在刚进入for语句的时候执行一次,做一些初始化,后面就不执行了。
for语句需要注意的点:

  1. 表达式1、2、3都可以省略,分号不能省略,都省略后成为for(;😉 语句,相当于while(true),成死循环;
  2. 表达式2是循环控制条件,只要是省略掉它,就会成为死循环
  3. 表达式1一般是给循环控制条件赋初值,比如上面的k=1,也可以是跟循环变量无关的表达式,如果是表达式1省略或是跟循环条件无关的表达式,就应该在进入for语句前给循环条件赋初值
  4. 表达式3为改变循环控制条件的值,如果它被省略掉或者是跟循环条件无关的表达式,就应该在循环体里另有语句来改变循环条件,保证不死循环。比如:
for(i=1;i<=10;) 
{ 
	sum+=i; 
	i++; 
}
  1. 如果省略掉表达式1和表达式3只剩下表达式2则for语句完全等同于while语句。

循环嵌套

一个循环体里边可以包含另一个循环结构。while、do-while和for三种循环语句可以相互嵌套。
循环结构也可以和选择结构嵌套。
经常用来控制循环结构的语句:

  1. break语句。break出现在switch语句或者循环体中时,程序直接从switch语句中或者循环体中跳出,继续执行下面的程序。
  2. continue语句。continue语句用在循环体中时,用来结束本次循环,接着判断决定是否执行下一次循环,它跟break的区别是,比如:
for(int i=0; i<5; i++)  
{ 
	if(i==1) break; 
	sum+=i; 
}

这里如果循环到i等于1的时候for循环就会直接退出,而

for(int i=0; i<5; i++)  
{ 
	if(i==1) continue; 
	sum+=i; 
}

的情况是如果循环执行到i等于1的时候则sum+:=i这个语句不执行了直接执行for后面括号里表达式3:i++,也就是进入i等于2的循环。

  1. goto语句。语法形式是:
goto  语句标号;

其中语句标号是用来表示语句的标识符,放在语句的最前面,并用冒号跟语句分开,它的作用是让程序执行时直接跳到语句标号指定的语句,这个语句有些危险,尽量少用或不用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值