- 顺序结构
顺序结构是根据代码的执行顺序根据运算符的优先级对程序顺序执行的结构。如下图所示:
一般除过分支结构和循环结构,其他的程序都属于顺序结构(包括程序的调用)。
顺序结构遵循自上而下的执行规则,也就是当进入主函数之后,如果程序没有分支结构或者循环结构,那么函数将从主函数的第一句一直执行到函数的最后一句。
main()
{
int a = 0;
int b = 1;
printf("输出a = %d\n",a);
printf("输出b = %d\n",b);
system("pause");
}
如以上例子:首先函数进入主main函数,进入主函数之后函数一句一句的执行,首先定义一个int型的变量a并将其初始化为0,之后在定义一个int型的变量b初始化为1,依次执行printf函数输出a的值和b的值。这种从上到下依次执行的执行过程称顺序执行,这种结构称为顺序结构。
- 循环结构
循环结构是指在函数运行的过程中,有一部分代码是重复且连续调用的,这一部分代码就可以使用循环结构。循环结构区别于顺序结构的是在循环结构中会有一个判断条件,根据这个条件来决定函数的执行方向。例如在函数中有一判断条件,当满足这个条件的时候,函数顺序向下执行,如果不满足条件则执行另一段程序。循环结构一般使用的关键字有while、for、do while,下面依次介绍。
1 while语句
while的使用个数如下:
while(判断条件)
{
循环体;
}
使用while语句进行循环控制的时候,一般是先判断条件是否满足循环条件的要求。如果满足循环条件的要求,那么就执行循环体中的语句,如果不满足要求,那么就不执行循环体中的要求。while不止可以进行执行次数的判断,可以对一些变量值的真假进行判断。
例如:
main()
{
int i = 0;//定义一个int型变量a
while (i < 10)//i<10为判断条件,如果满足咋执行循环体中的内容,不满足执行函数体之后的语句
{
printf("%d ", i);//函数体中的语句
}
system("pause");
}
输出值为:0 1 2 3 4 5 6 7 8 9
以上代码所示:首先定义一个int型变量a,将其赋值为0,通过while语句循环。首先会执行a<10语句,如果a小于10,那么条件成立,进入循环结构体。将a进行自加,自加完成之后输出a的值。如此往复直到a的值为10,10等于10,不满足条件。跳过循环语句,顺序执行后面的语句。
2 for语句
for语句的使用格式如下:
for(int i;i<10;i++)//i为判断条件的一个初始值,i<10为判断条件,i++则是修改判断条件
//需要注意的是每个语句之间需要使用“;”隔开
{
循环体;
}
使用for语句可以更加方便的进行有限或者已知循环次数的循环体进行判断。对于已知循环次数的循环结构更加推荐使用for。使用for语句的时候,首先需要注意的是for语句括号中的三个语句,分别有不同的功能,如果之后一个判断条件可以进行语句判断,但是两个“;”不能缺少。例如:for(;i<10;);这种语句是成立的但是两个“;”不能少。
具体使用如下:
main()
{
for(int i = 0;i<10;i++)//i为判断条件的一个初始值必须一个初始值,i<10为判断条件,i++则是修改判断条件
//需要注意的是每个语句之间需要使用“;”隔开
{
printf("%d ", i);//函数体中的语句
}
system("pause");
}
输出值为:0 1 2 3 4 5 6 7 8 9
图中代码所示:使用for循环语句,则不需单独定义一个循环的控制变量。而是在for循环中定义了一个循环变量i,并将其值赋值为0。for循环的执行顺序是首先定义一个int 型的循环控制变量i,之后执行判断条件 i<10,这个等价于0<10,每当循环一次i的值会变化,一直会将i中的值和10比较,如果i的值小于10,那么则执行循环体中的值。执行完成之后执行i++语句,修改i的值,再次进行条件判断。如此反复直到不满足条件。
3 do while循环语句
do while循环语句的使用格式:
do
{
循环体;
}while(判断条件);
使用do while语句和while语句一样,只不过是将判断条件放在循环体之后,那么使用这种结构,循环体中的代码至少要执行一次。
main()
{
int i = 0;//定义一个int型变量a
do
{
printf("%d ", i);//函数体中的语句至少会执行一次
}while (i < 10);//i<10为判断条件,如果满足咋执行循环体中的内容,不满足执行函数体之后的语句
system("pause");
}
输出值为:0 1 2 3 4 5 6 7 8 9
图中代码所示:首先定义一个int型变量a,将其赋值为0,通过do while语句循环。首先会执行循环体语句将a进行自加自加完成之后输出a的值。之后判断是否a小于10,如果小于那么条件成立,进入循环结构体。如此往复直到a的值为11,11大于10,不满足条件。跳过循环语句,顺序执行后面的语句。
- 分支结构
分支结构是根据不同的条件执行不同语句,当函数顺序执行到分支语句的时候,会根据分支结构中的判断条件执行不用的代码。分支结构和循环结构有相似之处也有不同之处,相似之处都是有判断条件,根据判断条件决定下一步代码的执行方向,不同之处是循环结构会对某一部分的代码进行重复执行,而分支结构是执行不同的代码。一般分支结构用到的关键字有if else 、switch case。
1 if 、else if、 else语句
if 、else if、 else语句的使用格式如下:
if (判断条件1)
{
分支程序1;
}
else if (判断条件2)
{
分支程序1;
}
else
{
分支程序3;
}
if 、else if、 else语句语句是一个互斥的条件语句,当程序执行到这里这三个分支的进入条件是互斥的,没有交集。也就是说程序顺序执行到这里,只能进入到一个分支程序。不能进入到其他的分支程序。
使用例子如下:
int main()
{
int a = 0;
if (a == 0)
{
printf("a的值等于0");
}
else if (a ==1)
{
printf("a的值等于1");
}
system("pause");
return 0;
}
以上代码所示,如果程序输出a的值等于0,那么程序就不会执行printf("a的值不等于0");
这个语句,而是跳出判断执行 system("pause");语句。因此在分支结构中,每个分支在程序中只有一个满足要求。
2 switch case语句
switch case的使用方式如下:
switch (switch_on)//此处为一个int整形的变量
{
case 0://当switch_on 的值等于0的时候执行case 0
程序1;
break;
case 1://当switch_on 的值等于1的时候执行case 1
程序1;
break; //当执行完一个case语句之后,需要使用break退出,不然则会顺序执行后面的case语句
default:
break;
}
switch case语句也可以进行分支处理,但是switch语句不能进行条件判断。而是根据switch之后的int型数据进行分支结构的选择。
代码如下:
int main()
{
int a = 0;
switch (a)
{
case 0:
printf("a = 0\n");
break;
case 1:
printf("a = 1");
break;
case 2:
printf("a = 2");
break;
case 3:
printf("a = 3");
break;
case 4:
printf("a = 4");
break;
default:
break;
}
printf("switch语句执行结束\n");
system("pause");
return 0;
}
输出结果如下:
a = 0
switch语句执行结束
根据以上结果分析发现,a变量的值为0,因此满足第一个case 后面的常量值,因此程序进入第一个case分支中执行printf("a = 0\n");语句。执行之后break退出第一个分支,顺序运行switch之后的语句printf("switch语句执行结束\n");。
注意:在switch中如果一个分支运行结束之后,没有break结束分支,那么根据程序的顺序结构软件会据需执行下一个分支结构,直到遇到break。
一般这几个结构是一起使用的互相嵌套,在跳转结构和循环结构中还使用了其他的关键字continue 、return、 break。在这里如果在函数中遇到这几个关键字则便是不同的含义。
continue | 是表示跳过后面需要执行的代码,继续执行判断条件执行满足条件的语句。 |
return | 是代表退出当前函数 |
break | 是代表退出当前循环体 |