目录
循环结构:
选择结构:if语句和switch语句
if语句的三种形式
cpp
if(表达式)语句1; // 单独的一个if语句
cpp
if(表达式1)语句1;
else 语句2; // if 和else组合
cpp
if(表达式1)语句1;
else if(表达式2)语句2;
else if (表达式3)语句3;
....
else 语句n; // if和else嵌套
■. if和else默认只控制在它之后离它最近的一条语句
如果一个if或者else要控制多条语句,那么这些多条语句需要复合语句 {} 括起来,整体作为一条语句来控制。
■. else总是与在它之前第一个没有配对的if配对,并且一个else只能和一个if配对。
else不能单独存在。
switch语句
一般形式:
cpp
switch(判断条件)
{
case 常量1:语句1;
case 常量2:语句2;
case 常量3;语句3;
......
case 常量n:语句n;
default: 语句n+1;
} //switch......case 多分支结构
■. 判断switch之后括号中表达式的值,
如果等于哪个case之后的值就执行那个case之后的语句(包括default语句)。
default语句可与case语句交换位置也就是改变他们的先后位置,只是可能会影响操作结果而已
■. case之后的条件(括号里的)只能是整型常量表达式,不能是小数、变量,也不能造成重复。
■. break跳转语句,用于跳出switch结构或者循环结构
例如
cpp
case 常量3 :语句3;
break;
■. 语句可以为空
例如
cpp
case10:
case 9:printf("A\n"); //"合并",即两个case共用语句
break;
■. dafault语句可以省略,不影响switch结构操作运行。
循环结构
for循环
while循环
do__whlie循环
for循环
cpp
for(表达式1; 表达式2 ; 表达式3)
{
循环体
}
■. 表达式1:条件初始化
表达式2:循环继续的条件
表达式3:改变循环条件里的变量值
■. 分号必不可少,有且只有两个。
■. for(;;)
类似这样的可以进行无数次循环的,称为死循环或无限循环
3个表达式相互独立,可各自为空
例如
cpp
for (int i=0;;i++)
{
printf("%d\n", i++);
} //输出0、2、4、6、8、10.....................
while循环
cpp
while(表达式)
{
循环体
} //不需要分号
■. while之后的括号里必须给定条件,不能为空。
■. 表达式非0为真,为死循环
例一
cpp
int i=0;
while(1)
{
printf("%d\n",i++);
}
例二
cpp
int i = 0;
for (;;)
{
printf("%d\n", i++);
if (i >= 10) // if判断条件执行break跳出循环
break;
}
■. 例如:给学生成绩打相应的等级
cpp
int score = 0;
int j = 0;
while (j <5) //重复判断5个同学的成绩等级
{
scanf("%d", &score);
if (score<0 || score>100)
{
printf("请重新输入正确数据\n");
continue;
}
switch (score / 10)
{
case 10:
case 9:
printf("A\n");
break;
case 8:
printf("B\n");
break;
case 7:
case 6:
printf("C\n");
break;
default:
printf("D\n");
}
j++;
}
do__while循环
cpp
do
{
循环体;
}while(表达式);
■. while(表达式);
分号是结构的一部分,不可少。
■. do__while循环:先执行循环体,在判断条件。(至少会执行一次循环体)
for循环和while循环:先判断条件,若为真则进入循环,不然不执行循环。
循环的嵌套
循环中有循环(套娃)
执行规则:外层循环执行一轮,
内层循环需要整个循环完毕,
如此循环下去直至满足特定条件退出循环。
例如:
输出下面的图案
******
****** // 用for的嵌套循环结构
******
cpp
for (int i=0;i<3;i++) // 外层循环决定输出多少行
{
for(int j=0;j<6;j++) // 内层循环决定每一行输出多少个*号
{
printf("*");
}
printf("\n"); // 内层循环整个执行完毕后换行
}
跳转语句
break语句
continue语句
goto语句
■. **break语句:**只适用于switch结构和循环结构
跳出并结束整个循环,循环不再继续
跳出一个离它最近的循环或switch结构。
若if_else条件判断结构包含在上述结构的循环体中,则可以在if_else循环体内加入break语句进行使用
例如:
输出一下图案:
******
******
cpp
for (int i = 0; i<3; i++)
{
for (int j = 0; j < 6;j++)
{
if (i == 1)
break; // 这里若用continue,在此循环结构中的输出效果相同
else
printf("*");
}
printf("\n");
}
■. **continue语句:**只适用于循环语句
跳出本次循环,继续执行下次循环。
即不再执行本次循环中continue语句后的语句
continue语句在if__else条件判断结构和switch多分支结构中也可以使用
前提是两者都在循环结构的循环体内
■. goto语句:跳转到指定的位置
cpp
标记:
.......
goto 标记; //执行goto语句后,会跳转到标记的指定位置
cpp
goto 标记; //先后顺序不同,程序运行时操作效果会不同
......
标记:
■. goto语句可以方便有效的跳出多层循环
例一
cpp
for (int i = 0;; i++)
{
printf("%d\n", i++);
if (i >= 10)goto end; //跳出该程序所存在的一层循环
}
end: //输出0、2、4、6、8、10
例二
cpp
for (int i = 0; i<3; i++)
{
for (int j = 0; j < 6; j++)
{
if (i == 1)
goto end; //跳出两层循环
else
printf("*");
}
printf("\n");
}
end: //输出一行******图案
例三
cpp
int i = 0;
for (;;)
{
while (1)
{
do
{
printf("%d\n", i++);
if (i >= 10)goto end; //可以方便有效的跳出多层死循环
} while (1);
}
}
end: //输出结果 0、1、2、3、4、5、6、7、8、9
■. goto语句一般用于多层嵌套循环结构的跳出
3.1补充:
■. 空循环:
for循环后面直接加分号(不使用大括号)
例如:
for(int i=0;i<=500000000;i++);
系统内部运行5亿次循环然后执行下一条语句。(让程序"发呆"一下)
■. 单独if语句里可以用return 0;语句来实现相应的功能(退出)。