C/C++循环与分支语句
- 循环与分支语句的意义
- 关系运算符、逻辑运算符
- for循环和嵌套for循环(基于范围for循环)
- while循环与do while循环
- 分支if语句、if else语句、if else…if else 语句
- switch case语句
- break与continue语句
循环与分支语句的意义
循环与分支的存在是部分代码可以多次执行,直到达到某些条件后,退出循环提高了效率,使编程更加灵活、得心应手。
关系运算符与逻辑运算符
- 关系运算符(二目运算符)(>、<、 >=、 <=、 ==)
- 逻辑运算符(!、 &&、 ||)
- 补充:位或运算符
- 参考各种运算符用法
for循环和嵌套for循环(基于范围for循环)
- for循环格式: for(声明赋值变量1,声明赋值变量2···;返回值为真或假的关系式;对变量进行操作)
//例子1:
for(int i=0,int k=10;i<k;i++,k--);
cout<<"xun huan zhong";
- 注意:for循环有三个循环条件分别用‘;’号分隔,三个条件均是(根据需要)可以省略的,而每个条件又可以写多个语句(如在第一个条件中 写了两个句子分别为int i=0,int k=10)并以‘,’号分隔
例子2:循环打印数组元素
#include<stdio.h>
int main()
{
char ar[11]={"Hollowword"}; //注意:字符串中10个英文至少要放到数组元素为11到里面,因为最后一个数组元素(ar[10])要放字符串结束符:'\0'
for(int i=0;i<10;i++)
printf("%c\n",ar[i]);
return 0;
}
- 嵌套for循环格式(本质:for循环里面又有一个for循环,里边还可以再加for循环)
//格式:
for( ; ; )
{
for( ; ; )
{
for( ; ; )
{
····
}
}
}
举例:二维数组的初始化
#include<stdio.h>
int main()
{
int array[10][10];
for(int i=0;i<10;i++) //外层循环二维数组行数
for(int k=0;k<10;k++) //内层循环二维数组列数
{
array[i][k]=0; //赋值
}
return 0;
}
/*注意:第一个for循环后没有加一对{}号,而内层的for循环却加了。这是因为for后默认可以跟一条语句在循环内执行,
而加了{ }后,可以在其中写多条语句,作为一个代码块在循环内执行,在其它地方代码块这种格式也同样适用*/
while循环与do while循环
- while循环格式
while (condition执行条件)
{
statements执行内容
}
- do while循环的格式
do
{
statements
} while (condition);
- 注意for循环、while循环、do while循环的差别
首先for循环与while循环是可以相互替代的,for、while循环与do while循环的差别是
for、while循环在执行循环体的时候会先检测是否符合循环条件,而do while循环是 先执行一次循环体后,再检查是否要继续循环。
分支if语句、if else语句、if else…if else 语句
- 分支if()语句
if (condition) //如果条件为真就执行statements可以与for循环配合使用,注意condition可以有多个并通过逻辑运算符连接。
{
statements
}
举例:判断是否为闰年
#include<stdio.h>
int main()
{
int year;
printf("%d",year);
if ((year%4==0&&year%100 !=0) || year%400==0) //判断闰年的标准是:1、能整除4且不能整除100 2、能整除400
{
printf("shi run nian!")
}
}
- if else与if else if else语句
if else格式:
if (condition)
{
statements
}
else
{
statements
}
if eles if else····格式:
if (condition)
{
statements
}
else if (condition)
{
statements
}
else if (condition)
{
statements
}
······
switch语句(与if else if else ···语句等效)
格式:
switch (expression) //跳转表达式
{
case constant1: //情况1;
statements
case constant2: //情况2;
statements
break;
····
default:
break;
}
/*注意switch使用的细节:默认在 switch跳转到某个case之后,会继续向下执行其他的case 直到把case执行完跳出switch语句,如果不想让程序继续执行下去可以在每种case的statements后加上break; 去直接跳出case*/
/*switch语句可以与if else 混合使用,switch也可以嵌套switch语句*/
//switch语句的应用
#include<stdio.h>
#include<stdlib.h>
int main(){
printf("输入一个表示星期的数字(1-7):");
int num=0;
scanf("%d",&num);
switch(num){
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:
//如果前面所有的 case 都没有命中,于是就走到 default 分支中
//如果使用了 switch 语句,必须要写 default 分支
printf("非法输入\n");
break;
}
system("pause");
return 0;
}
break与continue语句
- break语句
作用有两个:
- 如上例用法退出switch,不再执行下一个case情况。
- 用于退出循环(如果是多层嵌套循环,只能结束break;所在的一层循环)。
#include<stdio.h>
#include<stdlib.h>
int main(){
//从1循环到10,如果一旦发现 数字5就结束循环
int i=1;
while(i<=10){
printf("%d\n",i);
if(i==5){
//跳出循环
break;
}
i+=1;
}
system("pause");
return 0;
}
- continue
作用:只能在循环中使用,当执行到 continue; 语句时程序将不执行下面的语句此时直接回到该层循环起始处开始执行。
#include<stdio.h>
#include<stdlib.h>
int main(){
//for语句也是用来表示循环.
//while语句容易遗漏循环变量的更新操作
//for循环就是为了解决 while 循环的这个缺点
//从1循环到10,如果发现数字5,就跳过5,继续循环后面的数字
int i=1;
while(i<=10){
if(i==5){
i+=1;
continue;
}
printf("%d\n",i);
i+=1;
}
system("pause");
return 0;
}