C语言程序的三种基本结构
1、程序结构:在C语言程序中,一共有三种程序结构:顺序结构、选择结构(分支结构)、循环结构;
顺序结构:从头到尾一句接着一句的执行下来,直到执行完最后一句;
选择结构:到某个节点后,会根据一次判断的结果来决定之后向哪一个分支方向执行;
循环结构:循环结构有一个循环体,循环体里是一段代码。对于循环结构来说,关键在于根据判断的结果,来决定循环体执行多少次;
注:在逻辑上有一种bool类型(也叫boolean类型,布尔类型),只有两个值,即真和假。C语言的判断表达式最终的值就是一个bool类型,这个判断表达式的bool值就决定了选择结构如何选择,循环结构如何循环;
2、顺序结构:顺序结构很简单,一般我们遇到的除了选择结构和循环结构外,都是顺序结构;
3、选择结构:C语言中常用的选择结构主要有以下两种:
(1) if else:引入关键字:if else else if
if (bool值) // 如果bool值为真,则执行代码段1,否则执行代码段2
{
代码段1
}
else
{
代码段2
}
if (bool值1) // 如果bool值1为真,则执行代码段1,否则判断bool值2是否为真
{
代码段1
}
else if (bool值2) // 若bool值2为真则执行代码段2,否则直接执行代码段3
{ // 开头的if和结尾的else都只能有一个,但是中间的else if可以有好多个
代码段2
}
else
{
代码段3
}
1 #include <stdio.h> 2 3 int main(void) 4 { 5 int a, b, max; 6 7 a = 456; 8 b = 45; 9 10 if (a > b) // 判断表示式 11 { 12 max = a; 13 printf("true.\n"); 14 } 15 else if (a == b) 16 { 17 max = a; 18 printf("a == b.\n"); 19 } 20 else 21 { 22 max = b; 23 printf("false.\n"); 24 } 25 26 printf("max = %d.\n", max); 27 28 return 0; 29 }
(2) switch case:引入关键字:switch case break default
switch (变量) // 执行到这一句时,变量的值是已知的
{ // switch case语句执行时,会用该变量的值依次与各个case后的常数去对比,试图找到第一个匹配项,找到匹配的项目后,
case 常数1: // 就去执行该case对应的代码段,如果没找到则继续下一个case,直到default
代码段1; // 如果前面的case都未匹配,则default匹配。
break;
case 常数2:
代码段2;
break;
……
default:
代码段n;
break;
}
注:第一,case中必须是常数,而且必须是整形;
第二,一般来说,每个case中代码段后都必须有一个break;
第三,case之后一般都会有default,虽然语法上允许没有default,但是建议写代码时一定要写;
1 // 结构化设计-选择结构示例代码 switch case演示 2 #include <stdio.h> 3 4 int main(void) 5 { 6 int num; 7 8 num = 1; 9 10 switch (num) 11 { 12 case 1: 13 printf("a\n"); 14 break; 15 case 2: 16 printf("b\n"); 17 break; 18 case 3: 19 printf("c\n"); 20 break; 21 case 4: 22 printf("d\n"); 23 break; 24 default: 25 printf("-\n"); 26 break; 27 } 28 29 return 0; 30 }
(3) if else和switch case的区别:if else适合对比条件较复杂,但是分支比较少的情况,switch case适合那种对比条件简单,但是分支较多的情况;
通常的做法是:在适合使用switch case的情况下会优先使用switch case,如果不适合则使用if else;
4、循环结构:C语言中常用的循环结构主要有以下三种:
(1) for:
for (循环控制变量初始化; 循环终止条件; 循环控制变量增量)
{
循环体
}
循环执行步骤:第一,先进行循环控制变量初始化;
第二,执行循环终止条件,如果判断结果为真,则进入第三步;如果为假则循环终止并退出;
第三,执行循环体;
第四,执行循环控制变量增量,转入第二步;
注:for循环()中的三部分除了循环终止条件外,其他两部分都可以省略,但标准的for循环中,应该把循环控制变量的初始化,增量都放在()当中,并且在循环体中绝对不应该更改循环控制变量;
1 // 计算1+2+3+····+10 2 #include <stdio.h> 3 4 int main(void) 5 { 6 int i, sum; 7 8 printf("i = %d.\n", sum); 9 10 for (i=0,sum=0; i<=10; i++) 11 { 12 sum += i; 13 } 14 printf("sum = %d.\n", sum); 15 16 return 0; 17 }
(2) while:
循环控制变量初始化
while(循环终止条件)
{
循环体
循环控制变量增量
}
循环执行步骤:第一,先进行循环控制变量初始化(在while之前);
第二,判断循环终止条件,如果判断结果为真,则进入第三步;如果为假则不执行循环体;
第三,执行循环体;
第四,执行循环控制变量增量,转入第二步;
1 // 计算100以内所有奇数的和 2 #include <stdio.h> 3 4 int main(void) 5 { 6 int i, sum; 7 8 i = 1; 9 sum = 0; 10 11 while(i < 100) 12 { 13 printf("i = %d.\n", i); 14 sum += i; 15 i += 2; 16 } 17 18 printf("sum = %d.\n", sum); 19 20 return 0; 21 }
(3) do while:
循环控制变量初始化
do
{
循环体
循环控制变量增量
}while (循环终止条件);
循环执行步骤:第一,先进行循环控制变量初始化(在do while之前);
第二,执行循环体;
第三,执行循环控制变量增量;
第四,判断循环终止条件,如果判断结果为真,则返回第二步;如果为假则直接退出循环;
1 // 计算100以内所有奇数的和 2 #include <stdio.h> 3 4 int main(void) 5 { 6 int i, sum; 7 8 i = 1; 9 sum = 0; 10 11 do 12 { 13 printf("i = %d.\n", i); 14 sum += i; 15 i += 2; 16 }while(i < 100); 17 18 printf("sum = %d.\n", sum); 19 20 return 0; 21 }
(4) 总结:不管哪种循环结构,都不能缺少循环控制条件初始化,终止条件,循环控制变量增量,循环体这四部分;
while循环是先判断后执行,do while循环是先执行后判断,等循环一次之后,其实都是一样的;
(以上所述内容为学习朱老师的嵌入式课程后复习笔记所得,目的是自己复习巩固知识,同时把自己学到的知识分享出来。能力有限,水平一般,如有错误,欢迎指正,谢谢!)
2017-02-26 17:52:18