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

    }

 #include <stdio.h>

 int main(void)
{
int a, b, max; a = ;
b = ; if (a > b) // 判断表示式
{
max = a;
printf("true.\n");
}
else if (a == b)
{
max = a;
printf("a == b.\n");
}
else
{
max = b;
printf("false.\n");
} printf("max = %d.\n", max); return ;
}

  (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,但是建议写代码时一定要写;

 // 结构化设计-选择结构示例代码 switch case演示
#include <stdio.h> int main(void)
{
int num; num = ; switch (num)
{
case :
printf("a\n");
break;
case :
printf("b\n");
break;
case :
printf("c\n");
break;
case :
printf("d\n");
break;
default:
printf("-\n");
break;
} return ;
}

  (3) if else和switch case的区别:if else适合对比条件较复杂,但是分支比较少的情况,switch case适合那种对比条件简单,但是分支较多的情况;

    通常的做法是:在适合使用switch case的情况下会优先使用switch case,如果不适合则使用if else;

4、循环结构:C语言中常用的循环结构主要有以下三种:

  (1) for:

    for (循环控制变量初始化; 循环终止条件; 循环控制变量增量)

    {

      循环体

    }

    循环执行步骤:第一,先进行循环控制变量初始化;

           第二,执行循环终止条件,如果判断结果为真,则进入第三步;如果为假则循环终止并退出;

           第三,执行循环体;

           第四,执行循环控制变量增量,转入第二步;

    注:for循环()中的三部分除了循环终止条件外,其他两部分都可以省略,但标准的for循环中,应该把循环控制变量的初始化,增量都放在()当中,并且在循环体中绝对不应该更改循环控制变量;

 // 计算1+2+3+····+10
#include <stdio.h> int main(void)
{
int i, sum; printf("i = %d.\n", sum); for (i=,sum=; i<=; i++)
{
sum += i;
}
printf("sum = %d.\n", sum); return ;
}

  (2) while:

    循环控制变量初始化

    while(循环终止条件)

    {

      循环体

      循环控制变量增量

    }

    循环执行步骤:第一,先进行循环控制变量初始化(在while之前);

           第二,判断循环终止条件,如果判断结果为真,则进入第三步;如果为假则不执行循环体;

           第三,执行循环体;

           第四,执行循环控制变量增量,转入第二步;

 // 计算100以内所有奇数的和
#include <stdio.h> int main(void)
{
int i, sum; i = ;
sum = ; while(i < )
{
printf("i = %d.\n", i);
sum += i;
i += ;
} printf("sum = %d.\n", sum); return ;
}

  (3) do while:

    循环控制变量初始化

    do

    {

      循环体

      循环控制变量增量

    }while (循环终止条件);

    循环执行步骤:第一,先进行循环控制变量初始化(在do while之前);

           第二,执行循环体;

           第三,执行循环控制变量增量;

           第四,判断循环终止条件,如果判断结果为真,则返回第二步;如果为假则直接退出循环;

 // 计算100以内所有奇数的和
#include <stdio.h> int main(void)
{
int i, sum; i = ;
sum = ; do
{
printf("i = %d.\n", i);
sum += i;
i += ;
}while(i < ); printf("sum = %d.\n", sum); return ;
}

  (4) 总结:不管哪种循环结构,都不能缺少循环控制条件初始化,终止条件,循环控制变量增量,循环体这四部分;

       while循环是先判断后执行,do while循环是先执行后判断,等循环一次之后,其实都是一样的;

(以上所述内容为学习朱老师的嵌入式课程后复习笔记所得,目的是自己复习巩固知识,同时把自己学到的知识分享出来。能力有限,水平一般,如有错误,欢迎指正,谢谢!)

2017-02-26 17:52:18

C语言程序的三种基本结构的更多相关文章

  1. python程序的三种执行结构

    一.分支结构:根据条件判断的真假去执行不同分支对应的子代码 1.1 if判定 完整语法如下: if 条件1: #条件可以是任意表达式,如果条件1为True,则依次执行代码. 代码1 代码2 ... e ...

  2. 执行Go程序的三种方式及Go语言关键字

    执行 Go 程序的三种方式及 Go 语言关键字 执行 Go 程序的三种方式 一.使用 go run 命令 二.使用 go build 命令 Step1. 对 go 源码源文件执行 go build 命 ...

  3. 【C语言入门教程】3.1 程序的 3 种基本结构

    程序设计是一个问题求解的过程,解决问题的步骤可看作是程序的控制结构.简单地说,程序的运行过程就是数据输入.数据处理.数据输出 3 个步骤.其中,数据处理过程是否快捷和准确,主要依赖于程序控制结构的设计 ...

  4. python程序的三种控制结构

    程序的三种控制结构 什么是控制结构? """ 程序有三种基本结构组成:顺序结构.分支结构.循环结构.任何程序都是由这三种基本结构组成. 顺序结构是程序按照线性顺序依次执行 ...

  5. linux系统编程之信号(八):三种时间结构及定时器setitimer()详解

    一,三种时间结构 time_t://seconds   struct timeval { long tv_sec; /* seconds */ long tv_usec; /* microsecond ...

  6. 求推荐go语言开发工具及go语言应该以哪种目录结构组织代码?

    go语言的开发工具推荐? go语言开发普通程序及开发web程序的时候,应该以哪种目录结构组织代码? 求推荐go语言开发工具及go语言应该以哪种目录结构组织代码? >> golang这个答案 ...

  7. Tomcat部署发布JSP应用程序的三种方法 (转)

    Tomcat部署发布JSP应用程序的三种方法     1.直接放到Webapps目录下      Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应 ...

  8. Spark Scala语言学习系列之完成HelloWorld程序(三种方式)

    三种方式完成HelloWorld程序 分别采用在REPL,命令行(scala脚本)和Eclipse下运行hello world. 一.Scala REPL. windows下安装好scala后,直接C ...

  9. Java数据结构——树的三种存储结构

    (转自http://blog.csdn.net/x1247600186/article/details/24670775) 说到存储结构,我们就会想到常用的两种存储方式:顺序存储和链式存储两种. 先来 ...

随机推荐

  1. java 服务

    2014年2月27日 10:30:55 学习 Java Service Wrapper 2014年2月27日 14:14:14太复杂了,以后研究吧. ###### 2014年2月27日 14:14:2 ...

  2. [Angular Tutorial] 10 -More Templating

    在这一步中,我们会实现电话细节的视图,这在用户点击列表中的一部电话时被展示. ·当您点击列表中的一部电话时,带有电话特定信息的电话细节页面将被展示. 我们打算使用$http来获取我们的数据,以此来实现 ...

  3. Leetcode 197. Rising Temperature

    Given a Weather table, write a SQL query to find all dates' Ids with higher temperature compared to ...

  4. Java经典案例之-判断兔子的数量(斐波那契数列)

    /** * 描述:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子, * 假如兔子都不死,问每个兔子总数为多少? * 分析:根据题目条件可以推断 * 兔子的规律 ...

  5. win7下安装sdks

    原文及更多内容:http://yysource.sourceforge.net/?p=103 下载和安装 Windows 调试工具 http://msdn.microsoft.com/zh-CN/wi ...

  6. React快速入门教程

    简介 Facebook官网介绍:React 是一个用来构建用户界面的 JavaScript 库.相当于 MVC 架构的 V 层. React 的核心思想是:封装组件,各个组件维护自己的状态和UI,当状 ...

  7. javascript中对数据文本格式化的思考

    在实际应用场景中,我们常常需将一些数据输出成更加符合人类习惯阅读的格式. 保留小数点后面两位 在一些要求精度没有那么准确的场景下,我们可以直接通过Number.prototype.toFixed()来 ...

  8. ABP入门系列(10)——扩展AbpSession

    ABP入门系列目录--学习Abp框架之实操演练 源码路径:Github-LearningMpaAbp 一.AbpSession是Session吗? 1.首先来看看它们分别对应的类型是什么? 查看源码发 ...

  9. Yii框架上传后展示图片

    在视图层index.php展示代码中加入[ 'attribute' => 'file', 'format' => 'raw', 'value' => function($model) ...

  10. [译] AR SDK的种类比你想得要多!这里介绍七个棒棒哒

    作者:Eddie Offermann 原文:There are dozens more Augmented Reality SDKs than you think! Here are seven gr ...