C语言初级阶段3——循环与分支
流程控制
1.定义:流程控制结构是指能够改变程序执行顺序的结构,他们可以根据不同的条件在一段或多段程序中选择一个运行或者不运行。
2.分类
(1)顺序结构:顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下从左向右,依次执行。(一般结构)
(2)循环结构:循环结构是依据一定的条件重复执行某一句或某几句代码,是为反复做某个操作而设置的一种程序。
(3)选择结构(分支结构):分支结构是依据一定的条件选择执行的路径,而不是严格按照语句出现的前后顺序执行。
选择分支结构
if选择分支结构(if判断语句)
1.基本格式
(1)if(表达式)
{
语句1;
}
(2)if(表达式)
{
语句1;
}
else
{
语句2;
}
(3)if(表达式1)
{
语句1;
}
else if(表达式2)
{
语句2;
}
else
{
语句3;
}
#incldue<stdio.h>
int main()
{
int HP = 100;
if(HP < 60)
printf("英雄的血量不够,请回家补充血量\n");
else if(HP > 60 && HP < 90)
{
printf("英雄的血量值充足,请继续战斗\n")
}
else
{
printf("英雄的血量满,请继续战斗\n")
}
return 0;
}
#incldue<stdio.h>
int main()
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
if(a < b && a<c)
{
printf("a最小\n");
}
else
{
printf("a不是最小\n");
}
return 0;
}
2.执行流程
首先判断if之后条件表达式的逻辑值,如果逻辑为真,执行语句1,否则如果逻辑为假则不执行语句1,如有else则执行else之后的语句2(else可有可无)。
switch多分支结构
1.基本格式
switch不能作为多分支结构必须结合break,它本身是不带break的。
case后面的只能是常量(整型或者字符型常量)
switch(表达式)
{
case 常量1:语句1;break;
case 常量2:语句2;break;
......
case 常量n:语句n;break;
default:语句n+1;
}
#include<stdio.h>
int main()
{
int a = 3;
switch(3)//执行哪个语句取决于总闸的值
{
case 0:
printf("0号灯泡亮\n");
break;
case 1:
printf("1号灯泡亮\n");
break;
case 2:
printf("2号灯泡亮\n");
break;
default:
printf("其他的灯泡亮\n");
}
return 0;
}
/*switch(总闸)
{
case 0:(灯泡)
语句1;
break;(为了跳出当前语句,阻断继续进行。)
不然的话像上面的例子当输入值为0后面的语句会全部执行
default:(否则)
}*/
2.执行流程
首先判断switch之后表达式的值,如果这个值和case之后的某个常量相等则执行对应的case之后的语句,若与所有的值都不相等,则执行default之后的语句。
循环结构
for循环
1.基本格式
for(表达式1;表达式2;表达式3)
{
循环体;
}
表达式1:初始化语句,只有开始循环时才执行一次。
表达式2:循环的判定条件。
表达式3:循环的条件改变。
循环体:需要重复执行的代码段。
注意:表达式之间的分隔符';'不能少。
/*第一步 执行表达式1,初始化语句,只在开始循环时才执行一次。
第二步 执行表达式2,判断条件是否成立,执行循环体语句,否则退出循环。
第三步 执行表达式3,再进行判断表达式2,执行循环体语句,执行表达式3
第四步 重复执行第二步和第三步
*/
#include<stdio.h>
int main()
{
for(int a = 10;a < 100;a++)
{
printf("条件成立\n");
}
return 0;
}
#include<stdio.h>
int main()
{
for(int a = 10;a < 15;a++)
{
for(int j = 10;j < 15;j++)
{
printf("*\n");
}
printf("###\n");
}
return 0;
}
//九九乘法表
#include<stdio.h>
int main()
{
for(int i = 1;i < 10;i++)
{
for(int j = 1;j < i;j++)
{
printf("%d*%d==%d\t",i,j,j*i);
}
printf("\n");
}
return 0;
}
2.执行流程
首先执行初始化语句,然后判断条件,如果条件满足则继续执行循环体,否则结束循环。
while循环(先判断,后执行)
1.基本格式
whlie(表达式)
{
语句:
}
#include<stdio.h>
int main()
{
int a = 10;
while(a > 0)
{
printf("****\n");
a--;//如果不加这一句,会一直执行下去,可能会卡死。
}
return 0;
}
2.执行流程
先判断while之后的表达式的值,若表达式为真则继续执行循环体,否则结束循环。
do while循环(先执行,后判断)
1.基本格式
do
{
语句;
}
while(表达式);
#include<stdio.h>
int main()
{
do//执行
{
printf("****\n");
a++;
}while(a > 0);
return 0;
}
2.执行流程
首先,先执行一次do之后的循环体,然后再判断while之后的表达式的值,表达式的值真则继续执行循环体,否则结束循环。
跳转结构
break
定义:结束循环结构for、while、do-while或者分支结构switch当前的执行。
continue
1.定义:结束本次循环,继续执行下一循环。
2.具体程序
#include<stdio.h>
int main(){
for(int i = 0;i < 100; i++){
if(i % 2 == 0)//i是偶数
{
continue;//跳过本次循环,从这里开始下面的循环体不再执行,开始新一次循环。
}
printf("%d\t",i);
}
return 0;
}
goto
1.定义:跳转到指定标记的位置。(结构化程序最好不要使用)
2.具体程序
#include<stdio.h>
int main(){
for(int i = 0;i < 10;i++)
{
goto a;
printf("*\n");
}
a:
printf("####\n");
return 0;
}
#include<stdio.h>
int main(){
for(int i = 0;i < 10;i++)
{
goto a;
printf("*\n");
}
a:
printf("####\n");
b:
printf("****\n");
goto a;//陷入死循环一直执行下去
return 0;
}
循环中变量的使用:局部变量只能在当前for循环中进行使用,否则会陷入死循环。
作业1:不使用关系运算符,来判断3个你输入的数据的最小值
作业1:用循环语句输出一个矩形的