1.顺序结构:按语句出现的先后顺序,依次执行。
2.选择结构(也叫分支结构):根据所给定的条件选择是否执行。
选择结构分为单分支和多分支。
单分支:
if(条件表达式)//表达式为真(非零),执行语句块1
{
语句块1;//若语句块只有一句,其前后{}可省略。若为多句不加{},只有第一句属于if
}
else //else前必须要有if与之对应,且遵循就近原则(与最近的if配对),但if不一定有else
{
语句块2;//表达式为假,执行语句块2
}
例1:有两个整数A,B,求出最大值
{
int A=3;
int B=4;
int max=0;
if(A>B)
{
max=A; //前后{}可省略
}
else
{
max=B; //前后{}可省略
}
}
if语句表示多分支:
//根据实际需求确定if后是否需要else,但else存在就必有if与之对应,且就近匹配
if(条件表达式1)
{
语句块1;//表达式1为真执行语句块1
}
else if(条件表达式2)//1为假判断表达式2
{
语句块2;//表达式1为假,表达式2为真执行语句块2
}
......//中间可有多个else if ,看实际需求,此处举例一个else if的情况
else //与if(表达式2)匹配
{
语句块3; //表达式1为假,2为假执行语句块3
}
例2:有三个整数A,B,C,求出最大值
{
int A=3;
int B=4;
int C=2;
int max =0;
if(A>B)
{
max=A;
}
else if(B>C)
{
max =B;
}
else
{
max=C;
}
}
switch语句表示多分支:
switch(表达式) //表达式的结果作为case的判断条件
{
case 常量表达式1: //一定是一个整数或常量表达式(计算结果为整数),不可为范围
语句块1;break;//满足表达式1,break跳出switch,若无break语句会顺序执行后面的语句直 到遇到下一个break跳出
case 常量表达式2:
语句块2;
break;
....//可有多个case
default: //若所有的case都满足,则执行语句块3,defuault可省略,即所有case不满足不作任何操作
语句块3;
break;
}
例3 :输入一个学生的成绩,0-59为F,60-69为D,70-79为C,80-89为B,90-99为A,100为A+
{
int grade=0;
printf("请输入一个0-100的整数\n");
scanf("%d",&grade); //输入一个整数,并将其赋值给grade
swith(grade/10) //求grade的十位上的值,并将结果作为case的判断条件
{
case 6; printf("D\n");break;
case 7; printf("C\n");break;
case 8; printf("B\n");break;
case 9; printf("A\n");break;
}
default:
if(grade==100) //判断是否为100分
printf("A+\n");
else
printf("F\n")
break;
}
3.循环结构:for循环,while循环(可能一次也不执行),do while循环(至少执行一次)
例4:输出1-10
for(表达式1;表达式2;表达式3)
{
语句块; //当表达式2满足时,执行语句块
}表达式1:循环变量的初始化,在整个for循环过程中,只第一次进入for循环的时候执行(只执行一次)
表达式2:循环的判断条件
表达式3:循环变量的自增或自减step1:执行表达式1
step2:判断表达式2,如果表达式2的值为真(非0),则执行语句块
step3:执行表达式3,回到step2直到表达式2的值为假结束循环for循环可嵌套使用
for(表达式1;表达式2;表达式3)
{
for(表达式4;表达式5;表达式6) //作为语句块嵌套在第一个for中,其前后也可添加语句
{
语句块2;
}
}
{
for(int i=0;i<=10;i++)
{
printf("%d ",i);
}
}
while() ---当型循环
whlie(表达式) //当表达式为真时,执行语句块
{
语句块;
}step1:判断表达式,如果表达式的值为真(非0),则执行语句块,
step2:语句块执行完之后,回到step1,直到表达式的值为假(0)则退出循环
{
int i=0;
while(i<=10)
{
printf("%d ",i);
i++;
}
}
do while() ---直到型循环
do
{
语句块;
}
while(表达式);step:先执行语句块,然后判断表达式,如果表达式的值为真(非0),则继续执行语句块
直到表达式的值为假(0)循环结束。
{
int i=0;
do{
printf("%d ",i);
i++;
}
while(i>10);
}