第一篇第一篇 基础知识篇基础知识篇第三章 结构化程序设计教学目标◆理解结构化程序设计的思想 ◆熟悉传统流程图和N-S流程图的画法 ◆掌握结构化程序设计的三种基本结构的程序设计方法 •顺序结构 •选择结构 •循环结构 ◆掌握控制转移语句break、continue的使用3.1 结构化程序设计的 思想及流程图3.2 顺序结构3.3 选择结构3.4 循环结构3.5 编程实例目 录3.1 3.1 结构化程序设计的思想及流程图结构化程序设计的思想及流程图结构化程序设计(Structured Programming)的核心是算 法设计,基本思想是采用自顶向下和逐步细化的设计方法以及 单入单出的控制结构即将一个复杂问题按照功能进行拆分, 并逐层细化到便于理解和描述的程度,最终形成由多个小模块 组成的树型结构其中每个模块都是单入单出的控制结构 结构化程序设计包括三种基本结构:顺序结构、选择结构和循 环结构所有的算法都可以用这三种结构来描述描述结构化程序设计算法的方法,一般采用流程图的方法 流程图可以分为两种:传统流程图和N-S流程图,下面分别介 绍这两种流程图。
3.1 3.1 结构化程序设计的思想及流程图结构化程序设计的思想及流程图3.1.2 传统流程图 传统流程图是用一些图框表示各种操作,如图3-1所示由这些 图框组成的流程图可以把解决问题的先后次序直观地描述出来 3.1 结构化程序设计的 思想及流程图3.2 顺序结构3.3 选择结构3.4 循环结构3.5 编程实例目 录3.1 3.1 结构化程序设计的思想及流程图结构化程序设计的思想及流程图顺序结构、选择结构和循环结构的传统流程图的示意如图3-2所 示传统流程图可以直观表示算法,易于理解,但是它对流程 线即箭头的使用没有严格限制,很容易使流程图变得复杂而没 有规律与传统流程图相比,N-S流程图更适合结构化设计3.1 结构化程序设计的 思想及流程图3.2 顺序结构3.3 选择结构3.4 循环结构3.5 编程实例目 录目 录3.1 3.1 结构化程序设计的思想及流程图结构化程序设计的思想及流程图3.1.3 N-S流程图 上个世纪70年代提出了一种新的流程图——N-S流程图N-S流 程图去掉了所有箭头,全部算法写在一个矩形框内,在该框内 还可以包含从属于它的其它矩形框 顺序结构、选择结构和循环结构的N-S流程图的示意如图3-3所 示。
3.1 结构化程序设计的 思想及流程图3.2 顺序结构3.3 选择结构3.4 循环结构3.5 编程实例目 录3.1 3.1 结构化程序设计的思想及流程图结构化程序设计的思想及流程图例如:求5!,将算法分别用传统流程图和N-S流程图表示出来 结果见图3.1 结构化程序设计的 思想及流程图3.2 顺序结构3.3 选择结构3.4 循环结构3.5 编程实例目 录3.2 3.2 顺序结构顺序结构顺序结构是最简单的一种结构,程序中的语句按照书写的 顺序,自上而下地执行其特点是程序总是从第1条语句开始执 行,依次执行完所有的语句后结束程序3.1结构化程序设计的思 想及流程图3.2 顺序结构3.3 选择结构3.4 循环结构3.5 编程实例目 录3.3 3.3 选择结构选择结构 3.3.1 if语句的3种形式选择结构体现了程序的判断能力,即通过对条件的判断来 选择执行不同的程序语句在C语言中是用if语句(又称条件语句)或switch语句(又 称多路开关语句)来构成选择结构的if语句一般适用于两路 选择,也可以通过嵌套形式来实现多路选择switch语句能方 便地实现多路选择 3.3.1 if语句的3种形式 1.简单选择结构 语句形式:if(表达式) 语句执行过程:判断是否a>b,若是则输出a;若不是(即ab)printf(”%d”,a);3.3 3.3 选择结构选择结构3.1结构化程序设计的思 想及流程图3.2 顺序结构3.3 选择结构3.4 循环结构3.5 编程实例目 录【温馨提示】表达式可以是任何类型,如逻辑型、关系型、数 值型等,语句序列可以是一个语句也可以是写成复合语句形式 的多个语句。
3.3 3.3 选择结构选择结构【例3.1】输入一个三位整数,依次输出该数的正(负)号和百 位、十位、个位数字图3-5所示为对应的N-S流程图3.1结构化程序设计的思 想及流程图3.2 顺序结构3.3 选择结构3.4 循环结构3.5 编程实例目 录3.3 3.3 选择结构选择结构3.1结构化程序设计的思 想及流程图3.2 顺序结构3.3 选择结构3.4 循环结构3.5 编程实例目 录程序如下: #include main() { char c1,c2,c3,c4;int x;printf(“请输入一个三位整数:\n“); scanf(“%d“, c4=x>=0?'+':'-';/* 将x的符号存入c4,运算优先级:先做关系表达式x>=0 ,然后是条件运算“?: ”,最后是赋值运算/ x=abs(x); /* 求三位整数的绝对值 */ c3=x%10+48; /* x%10获得个位数字,加48后转换为对应的字符 */ x=x/10; /* 获得x的百位和十位 */3.3 3.3 选择结构选择结构3.1结构化程序设计的思 想及流程图3.2 顺序结构3.3 选择结构3.4 循环结构3.5 编程实例目 录c2=x%10+48; /* x%10获得十位数字,加48后转换为对应的字符 */ c1=x/10+48;/* x/10获得百位数字,加48后转换为对应的字符 */ printf(“%c\t%c\t%c\t%c\t“,c4,c1,c2,c3); } 【运行结果】请输入一个三位整数: -125↙ - 1 2 53.3 3.3 选择结构选择结构【例3.2】输入一个学生的语文、数学和英语成绩,如果这三门 课的平均成绩在90分以上,则在屏幕上显示“优秀”,算法如 图3-6所示。
3.1结构化程序设计的思 想及流程图3.2 顺序结构3.3 选择结构3.4 循环结构3.5 编程实例目 录3.3 3.3 选择结构选择结构程序如下: #include main() { float yw,sx,yy,average; /* 前三个变量分别存放语 文、数学和英语成绩,average存放平均值 */printf(“请输入语文、数学和英语成绩:\n“);scanf(“%f,%f,%f“, /* 从键盘上输入 三门课的成绩 */average=(yw+sx+yy)/3.0; /* 计算平均成绩 */if(average>=90) /* 判断平均成绩是否在90分以上*/printf(“优秀!\n“); /* 在屏幕上显示优秀!*/ }【想一想】当平均成绩低于90分时,执行结果如何?3.1结构化程序设计的思 想及流程图3.2 顺序结构3.3 选择结构3.4 循环结构3.5 编程实例目 录请输入语文、数学和英语成绩 : 93,97,88↙ 优秀!3.3 3.3 选择结构选择结构【例3.3】从键盘上任意输入3个整数a,b,c,并按从大到小的 顺序显示出来,排序算法流程图如图3-7所示。
3.1结构化程序设计的思 想及流程图3.2 顺序结构3.3 选择结构3.4 循环结构3.5 编程实例目 录3.3 3.3 选择结构选择结构【分析】输入时a,b,c三个变量中的数是无序的,通过程序处 理后,a中存放最大的数,b中存放次大的数,c中存放最小的数 ,程序如下 #include main() { int a,b,c,t; /* t是为交换而引入的临时变量 */printf(“请输入三个数(用逗号分隔):\n“);scanf(“%d,%d,%d“, if(ab成立,则输出a;否则(即ab)printf(”%d”,a); elseprintf(”%d”,b);3.3 3.3 选择结构选择结构【例3.4】从键盘上输入三个数,输出较大的数流程图如图3- 9所示3.1结构化程序设计的思 想及流程图3.2 顺序结构3.3 选择结构3.4 循环结构3.5 编程实例目 录3.3 3.3 选择结构选择结构程序如下: #include void main() { int x,y,z,max; /*定义所需变量*/printf(“\n请输入三个整数:\n “); /*输出提示信息*/scanf(“%d %d %d“, /*输入变量的值*/if(x>y)max=x;elsemax=y;if(max500) cost = 0.15; else if (number>300) cost = 0.10; else if (number>100) cost = 0.075; else if (number>50) cost = 0.05; else cost = 0;3.3 3.3 选择结构选择结构【温馨提示】 (1) 在if语句中,语句1至语句n+1可以是单个语句,也可以 是由多个语句组成的复合语句。
请记住哟:复合语句必须是用 一对花括号“{”和“}”把若干C语句括起来的语句,否则,编 译时会出现语法错误 (2)if语句本身可以嵌套使用, else总是与它上面最近的if 配对如果要改变这种默认的配对关系,可以在相应的if语句 上加上左、右花括号来确定新的配对关系请分析下面程序段 中if语句的配对问题3.1结构化程序设计的思 想及流程图3.2 顺序结构3.3 选择结构3.4 循环结构3.5 编程实例目 录int a=1,b=3,c=5,d=4; if(ay)?x:y; printf(“max=%d“,max); }/* 用if语句编程*/ main() { int x,y,max;printf(“\nInput x,y=“);scanf(“ %d%d“, if(x>y) max=x;else max=y;printf(“max=%d“,max); }3.3 3.3 选择结构选择结构 3.3.2 switch语句3.3.2 switch语句switch语句是多分支选择语句前面用if语句也可以实现多 分支选择结构,但会使if语句的嵌套层次太多,从而降低了程序 的可读性。
switch语句则能更加方便、直接地实现多路选择结构 语句形式: switch (表达式){case 常量表达式1:语句1break;case 常量表达式2:语句2break;…case 常量表达式n:语句nbreak;default : 语句n+1 }3.1结构化程序设计的思 想及流程图3.2 顺序结构3.3 选择结构3.4 循环结构3.5 编程实例目 录3.3 3.3 选择结构选择结构3.1结构化程序设计的思 想及流程图3.2 顺序结构3.3 选择结构3.4 循环结构3.5 编程实例目 录3.3 3.3 选择结构选择结构switch语句的执行过程:先计算switch语句中表达式的值,再依次与1~n个常量表达 式的值进行比较,当表达式的值与某个case后的常量表达式的值 相等时,则执行该case后的语句,然后执行break语句跳出 switch结构如果所有常量表达式的值都不等于switch中表达式 的值,则执行default后的语句说明:程序执行时,从匹配常量的相应case处入口,一直执行到 break语句或到达switch结构的末尾为止在switch语句中, default和语句n+1可以同时省略。
3.1结构化程序设计的思 想及流程图3.2 顺序结构3.3 选择结构3.4 循环结构3.5 编程实例目 录3.3 3.3 选择结构选择结构3.1结构化程序设计的思 想及流程图3.。