《visualc程序设计》第3章

上传人:tian****1990 文档编号:75517910 上传时间:2019-01-31 格式:PPT 页数:35 大小:276.50KB
返回 下载 相关 举报
《visualc程序设计》第3章_第1页
第1页 / 共35页
《visualc程序设计》第3章_第2页
第2页 / 共35页
《visualc程序设计》第3章_第3页
第3页 / 共35页
《visualc程序设计》第3章_第4页
第4页 / 共35页
《visualc程序设计》第3章_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《《visualc程序设计》第3章》由会员分享,可在线阅读,更多相关《《visualc程序设计》第3章(35页珍藏版)》请在金锄头文库上搜索。

1、第3章 结构化程序设计,3.1 程序设计概述 3.2 C+语句 3.3 顺序结构 3.4 选择结构 3.5 循环结构 3.6 其它控制语句 3.7 应用举例,3.1 程序设计概述,程序是计算机指令的序列,是用计算机语言来编写的,计算机语言通常被称为“程序语言”。 程序=数据结构+算法 对于程序设计的初学者来说,首先要学会设计一个正确的程序。一个正确的程序通常包括:书写正确与结果正确两个含义。除此之外,还应追求高质量:结构化程度高、可读性好、可靠性高、便于调试等。 通常一个简单的程序设计一般包含以下几个步骤: 1分析问题,明确要求,建立数学模型。 2确定数据结构和算法(有穷性、确定性、可执行性、

2、有零个或多个输入、有一个或多个输出)。 3选择语言,编制程序。 4调试程序。 5整理文档,编制说明。,程序设计的基本目标是用算法对问题的原始数据进行处理,从而获得所期望的效果。要做到这一点,就必须要掌握正确的程序设计方法和技术。 结构化程序设计方法是公认的面向过程编程应遵循的基本方法和原则。该方法包括: 1只采用顺序结构、选择结构和循环结构这三种基本的程序控制结构来编制程序,从而使程序具有“单入口和单出口”良好的结构; 2程序设计自顶向下; 3用结构化流程图表示算法。,3.2 C+语句,1. 声明语句,声明语句又称说明语句,它可以用来对程序中出现的各种名称进行声明。这些名称通常是表示变量、常量

3、、函数、结构、类、对象等实际的标识符。如: char ch; /声明和定义char型变量 int count=1; /声明、定义和初始化int型变量 const double PI=3.14159; /声明、定义和初始化double型变量 C+语言规定:一个实体的定义只能出现一次,而其声明却可以出现多次。但同一实体的多个声明必须在类型上保持一致。,形式:表达式; 例如: i+; sum=a+b; coutabendl;,3. 控制语句 控制语句用于完成一定的控制功能,以实现程序的各种结构方式。C+语言有9种控制语句,可分为三类: (1) 条件判断语句:if语句、switch语句 (2) 转向语

4、句:break语句、continue语句、goto语句、return语句 (3) 循环语句:for语句、while语句、do-while语句,2. 表达式语句,4. 空语句,如:for (m = 0; m1000; m+) ;,形式: ; 作用: 当程序中某个位置在语法上需要一条语句,而在语义上又不 要求执行任何动作时,可放上一条空语句。 一般适用于在循环语句中做空循环体;,5. 复合语句,例如: if(x=0) couta; coutb;,形式: 变量定义 语句组 作用:当程序中某个位置在语法上只允许一条语句,而在语义上要执行多条语句才能完成某个操作时,需要使用复合语句。,常出现在选择、循环

5、语句中,3.3 顺序结构,顺序结构:按照语句出现的先后顺序依次执行。,语句1,语句2,其中的语句可以是输入/出、表达式、空或复合等,【例3.1】输入两个整数给变量x和y,然后交换x和y的值。,3.4 选择结构,选择结构是根据条件的值来判断程序的流向。C+中,提供两类选择控制语句: if语句,实现n分支,要求n个表达式; switch语句,实现多分支;只用1个表达式。,3.4.1 if 语句,if语句的三种形式: 形式1: if (表达式) 语句 作用:当表达式为真(非0)时,执行表达式后面的语句, 否则绕过该语句,而执行其后面的语句。,#include “iostream.h“ void ma

6、in() int x,y,t; coutxy; if (x“yendl; ,程序:,【例3.2】已知两个数x和y,比较它们的大小,使得x大于y。 if(xy) t=x; x=y; y=t; coutxy;,形式2: if (表达式) 语句1 else 语句2,作用:当表达式为真(非0)时,执行语句1,否则执行语句2。,【例3.3】计算分段函数:,if (x) y=sin(x)+sqrt(x*x+1); else y=cos(x)x*x+3*x;,要使max存放x、y中大者,min存放小者,分析下面程序段正确否?,if (xy) max = x; min = y; else max = y; m

7、in = x;,形式3:if (表达式1) 语句1 else if (表达式2) 语句2 else if (表达式n) 语句n else 语句n+1 作用:当表达式1的值为true时,执行语句1;否则判断当表达式2的值为true时执行语句2;依此类推,若表达式的值都为false,则执行语句n+1。,【例3.4】已知成绩mark,要求显示对应五级制的评定,评定条件:,if (mark = 90) cout “优“; else if (80=mark ,分析下面程序段是否正确:,注意: 不管有几个分支,程序执行一个分支后,其余分支不再执行。 else if不能写成elseif。 当多分支中有多个表

8、达式同时满足,则只执行第一个与之匹配的语句。,if (mark = 60) cout= 70) cout= 80) cout=90) cout “优“; else cout “不及格“;,if语句的嵌套形式:,if语句的嵌套是指if或else后面的语句本身又是一个if语句。,if (表达式1) if (表达式2) 语句1 else 语句2,注意: 为了增强程序的可读性,建议采用锯齿型的书写形式。 else始终与它上面的最近的if语句配对,而这个if语句又没有其它的else与之匹配 。,如何使之与第一个if配对?,如:if(表达式1) if(表达式11) 语句11 else 语句12 else

9、语句2,【例3.5】已知x,y,z三个数,使得xyz。 可用一个IF语句和一个嵌套的IF语句实现。,if (xy) t=x ; x=y ; y=t; if (yz) t=y ; y=z ; z=t ; if (xy) t=x ; x=y ; y=t ; ,3.4.2 switch语句,执行顺序:当表达式的值与某个常量表达式的值相等时,则执行该常量表达式后面相应的语句,若使用了break, 则执行完该语句后便退出switch语句;否则,还要依次执行其后面的各条语句。若找不到相匹配的常量表达式,则执行default后面的语句。,必须为整型或字符型,形式: switch(表达式) case 常量表达

10、式1:语句组1;break; case 常量表达式2:语句组2;break; case 常量表达式n:语句组n;break; default:语句组n+1 ,2a+1 (1=a2) 【例3.6】用switch结构求分段函数b= a2-3 (2=a4) a 其它,共用同一个语句组: switch(int)a) case 1: b=2*a+1;break; case 2: case 3: b=a*a-3;break; default: b=a; ,错误: switch(int)a) case a=1 ,思考:若省去break语句,情况会怎样?,3.5 循环结构,C+语言提供了三种循环语句,流程图如

11、下: while,while (表达式) 语句,do 语句 while (表达式);,for(表达式1;表达式2;表达式3) 语句,do-while,for,【例3.7】用上述三种循环语句求,while语句:,n = 1;s = 0; while (n=100) s=s+n; n=n+1; ,n = 1; s = 0; do s = s+n; n = n+1; while(n=100);,do-while语句:,for语句:,for (n = 1,s = 0;n=100;n+) s=s+n;,【例3.8】求下列级数的前m项和,要求其误差小于0.00001 。,分析: 级数的通项为 xm/m!,

12、 第i项ti与第i-1项 ti-1之间存在如下关系:ti=ti-1*x/i,int i(1); float t(1),e(0),x; cinx; while(t1e-5) e+=t; t=t*x/i; i+;,int i(1); float t(1),e(0),x; cinx; for( ;t1e-5; ) e+=t; t=t*x/i; i+;,for(i=1,t=1,e=0;t1e-5; e+=t, t=t*x/i,i+);,分号不能省略,空语句,3.5.3 循环的嵌套,循环的嵌套:循环体内包含另一个完整的循环结构。 三种循环语句皆可以相互嵌套 。 【例3.9】打印九九乘法表,#includ

13、e “iostream.h“ void main() cout“t 九九乘法表“endl; cout“t -“endl; for(int i=1;i=9;i+) for(int j=1;j=9;j+) couti“j“=“i*jt; coutendl; ,程序:,思考:打印上三角或下三角程序如何改动?,3.6 其它控制语句,【例3.10】 break 和 continue 语句的区别,for(m=20;m0;m-) if(m % 6=0) break; coutm“ “; ,for(m=20;m0;m-) if(m % 6=0) continue; coutm“ “; ,1. break语句

14、break语句有两个作用: 用于switch语句中,保证多分支情况的正确执行; 用于循环语句中,强制终止本层循环(跳出本层循环)。 2. continue语句 continue语句的作用:绕过本次循环,强行进入下一次循环。即它只能跳过循环体中continue后面的语句。 注意: continue只能用于循环语句,3.7 应用举例,1. 求最大值(或最小值) 【例3.11】从键盘输入一组数,求这组数中的最大值。,cinm; max=m; /第一个数假设为最大数 while (cinm,m!=0) if (mmax) max=m;,max=0; /设一个较小的数为最大值的初值 for(int i=

15、0;im; if (mmax) max=m; ,以输入0作为结束,输入数的个数未知,输入数的个数已知,2.最大公约数,辗转相除法 while (r=m % n)!=0) m=n;n=r; coutn;,辗转相减法 m=m-n mn n=n-m nm m、n为公约数 m=n while (m!=n) if(mn)m-=n;else n-=m;,m n r 12 5 2 5 2 1 2 1 0,【例3.12】用辗转相除法求两自然数的最大公约数。 算法思想: (1) 对于已知两数m,n,使得mn (2) m除以n得余数r (3) 若r=0,则n为最大公约数,结束;否则执行(4) (4) n m, r n,再重复执行(2),#include “iostream.h“ void main( ) int m, n, t, r; coutmn; if(mn) t=m; m=n; n=t; while (r=m % n)!=0) m=n; n=r; cout“最大公约数为:“mendl; ,程序:,【例3.13】求2100之间的素数,并以每行显示8个质数。 质数:除1和它本身外,不能被其他任何一个整数整除的自然数。 分析: (1) 判别某数m是否为素数最简单的方法是:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号