循环结构和分支结构

本文详细介绍了C++中的循环结构(for、while、dowhile),包括它们的语法和用法,并探讨了分支结构(if和switch)的实现及其在程序中的作用。特别强调了循环中的条件判断、死循环和递增运算符的使用。
摘要由CSDN通过智能技术生成

前言

  C++程序中循环与分支的存在使部分代码可以多次执行,直到达到某些条件后,退出循环提高了效率,使编程更加灵活、得心应手。

循环结构

  让特定代码重复执行。主要包括for循环、while循环以及do while循环。

for循环

for循环形式如下:

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

  表达式1是循环的初始化部分,表达式2是循环测试部分,表达式3是循环更新部分,花括号内的是循环体,是程序接下来将会执行的语句。

  for循环在执行时,首先会执行表达式1,进行初始化,之后会执行表达式2,进行判断,为真则执行循环体内的代码;为假则跳过循环,执行循环后面的代码。如果为真在执行完循环体内的代码后,将会执行表达式3,然后再执行表达式2进行判断。

#include<iostream>
using namespace std;
int main(){
    for(int i=0;i<10;i++)
        {
             cout<<"i="<<i<<"\n";
        }

    return 0;
}

  首先要讲的时for循环后括号内的三个表达式可以不写,即for(; ;)这时会一直执行循环体的内容,这种情况称为死循环,可以在循环体里加上break或者continue跳出循环。其次,表达式3i++,用于更新用来测试的值,++运算符是递增运算符,它将操作数的值加一。(这里补充一个知识,++运算符可以放在操作数前和后,两者意义不同,优先级不同。i++的优先级大于++i,前者为先用后加,后者为先加后用。很多人搞不清楚i++的值到底什么时候加,这里需要提到两个概念副作用顺序点,副作用是指改变了某些变量的值。顺序点的意思是在一系列步骤中的一个“结算”的点,语言要求这一时刻的求值和副作用全部完成,才能进入下面的部分。例如",",";"都是一个顺序点,一个完整的表达式后也是一个顺序点)。

while循环

  while循环可以在条件表达式为真的情况下,循环执行指定的一段代码,直到表达式不为真的时结束。

while循环形式如下:

while(条件表达式){
	//循环体代码
}

  在执行while循环时,首先执行条件表达式,如果结果为true,则执行循环体代码;如果为false,则退出循环,执行后面代码;循环体代码执行完毕后,程序会继续判断执行条件表达式,如条件仍为true,则会继续执行循环体,直到循环条件为false时,整个循环过程才会结束。

#include<iostream>
using namespace std;
int main(){
	int n = 0;
	while (n < 10) {
		cout<<"n="<<n<<"\n";
		n++;
	}
return 0;
}

  值得一提的是,在for循环中可以声明并初始化一个局部变量,而while循环不可以。当不知道需要循环的次数时,程序员更喜欢使用while循环。

do while循环

  不同于for循环和while循环,do…while循环是先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)。

do…while循环形式如下:

do {

     循环体语句;

} while(条件判断语句);

  在执行do while循环时,首先执行一次指定的循环体语句,然后判别表达式,当表达式的值为真(非0)时,返回重新执行循环体语句,如此反复,直到表达式的值等于0为止,此时循环结束。其特点是:先执行循环体,然后判断循环条件是否成立 。

#include<iostream>
using namespace std;
int main(){
   int i = 0;

   do
   {
      cout<<"i="<<i<<"\n";
      i++;
   } while (i < 10);

   return 0;
}

  需要注意的是大家在使用do while循环时一定要记得,循环是先执行再判断。

分支结构

  如果条件满足才能做某件事情,如果条件不满足就做另外一件事情,或者什么也不做。分支语句又被称为“判断语句”,正因为有了判断,才让程序有了很多的分支。主要包括if语句、switch语句。

if语句

if语句形式如下:

单分支:

if(表达式){
    语句;
    }

双分支:

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

多分支

if(表达式1){
    语句1;
    }
else if(表达式2){ //此处else if语句可以有多个
    语句2;
    }
else{
    语句3;
    }

  在执行if语句时,会判断表达式是否为真,为真时则执行其语句体,为假则跳过其语句体,继续执行下一条语句。

#include<iostream>
using namespace std;
int main(){
   int i = 1;
   if(i==1)
        cout<<"军哥很帅!"<<"\n";
   else
        cout<<"军哥一般帅!"<<"\n";

   return 0;
}

  计算机判断if是真还是假时,认为0为假,非0即为真,所以你在表达式的位置写个非0的常数,也会判断为真。当需要判断的情况过多,即分支太多时,使用if语句就显得太麻烦了,这里就需要用到switch语句了。

switch语句

switch语句形式如下:

switch(整型表达式)
{
   case 整形常量表达式:
    语句;
   case 整形常量表达式:
    语句;
   case 整形常量表达式:
    语句;
   ......
   default:
    语句;
}

  当执行switch语句时,若整形表达式值为整型常量表达式值时,则执行其语句。执行完该语句后,接着执行下面的语句。

#include<iostream>
using namespace std;
int main()
{
	int day = 0;
	cin>>day;
	switch (day)   \\day必须是整数
	{
	case 1:         \\标签必须是常数或者枚举量
		printf("星期一\n");
		break;
	case 2:
		printf("星期二\n");
		break;
	case 3:
		printf("星期三\n");
		break;
	case 4:
		printf("星期四\n");
		break;
	case 5:
		printf("星期五\n");
		break;
	case 6:
		printf("星期六\n");
		break;
	case 7:
		printf("星期天\n");
		break;
    default:
        break;
	}
return 0;
}

  代码中的default用于前面的条件都不符合时,此时就会执行default后的语句。在使用switch时一定要用break进行跳出,否则当一条语句判断成功,执行完后面的语句之后,其之后所有标签后的代码都会执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值