• / 55
  • 下载费用:10 金币  

第三章顺序语句和选择语句

关 键 词:
第三章顺序语句 顺序语句和选择语句
资源描述:
*1 3.1 程序设计概述 3.2 scanf( )函数 3.3 程序的三种基本结构 3.4 if语句 3.5 switch语句￿￿ 3.6 程序设计举例 第3章 顺序语句和选择语句 *2 3.1 程序设计概述 程序设计的最终目的是能在计算机上计算出 正确的结果来。 1969年,Dijkstra首先提出了结构化程序设 计的概念,强调从程序的结构和风格上来研究和设 计程序。 *3 一个高质量的程序必须是运行可靠、清晰易读 、高效率和可适应性及可移植性的。 程序设计方法: 1.分析问题 确定输入、输出、定义算法 2.画出程序的基本轮廓 设计处理过程 3.用某种语言实现该程序 将思路转化为程序 *4 表达式语句 在表达式的后面加一个分号,可以构成一个简单语 句——表达式语句。 例如, a=a+c*(d+3) a=a+c*(d+3); a+b+c a+b+c; i++ i++; 函数调用也是表达式,在其后面加上一个分号, 就变成了函数调用语句。 printf(”hello!”); scanf(”%d”, b=2.0; i++; } 一个复合语句在语法上等同于一个语句。 *6 3.2 scanf( )函数 3.2.1 数据输入的概念 3.2.2 scanf( )函数的调用 3.2.3 字符输入函数 3.2.4 字符输出函数 *7 3.2.1 数据输入的概念 表达式中参加运算的变量必须有确定的值。 考虑下面求圆面积的程序 #include #define PI 3.14159 void main( ) { float r, area;￿￿ r=4;￿￿ area=PI*r*r;￿￿ printf(″The area is %f\n″,area); }￿￿ *8 缺陷:只能计算半径为固定值4的圆的面积,不 能输出其他不同半径的圆面积。 解决方法:加入数据输入语句。运行时,从外 部输入所需数据作为变量的值。 缺陷与解决方法 *9 3.2.2 scanf( )函数的调用 scanf( )函数的一般格式为: scanf(″输入控制″,输入数据表列); ￿￿ “输入控制”的含义与printf()函数的“输出控 制”相同,输入数据表列是一个或多个用逗号分隔 的变量的地址或字符串的首地址。 变量的地址可以通过地址运算符“ 输入123456 系统自动将123赋值给a,将456赋值给b. 3、输入实型数据时,可以不带小数点,即按整型数方式输入。 *12 scanf()函数的使用要点 4、从终端输入数值数据时,遇下述情况将认为该项数据结束 : • 遇到空格、回车符或制表符(TAB),故可用它们作 为数值数据间的分隔符; • 遇到宽度结束,如“%4d”表示只取输入数据的前4列。 • 遇到非法输入,如:假设a为整型变量,ch为字符型变 量,对于: scanf(“%d%c”, 若输入246a, 则系统将认为:a=246,ch=a 5、在使用%c格式符时,输入的数据之间不需要分隔符标志 ;空格、回车符都将作为有效字符读入。 scanf(“%c%c%c”, 输入b□o□y b赋值给a,□赋值给b,o赋值给c *13 scanf()函数的使用要点 6、如果输入控制中除了格式说明之外,还包含其它字符,则输 入数据时,在与之对应的位置上也必须输入相同的字符。 如:scanf(“Enter a number: %d”,输入格式 Enter a number:90 scanf(“%d%d”, 输入格式 122 23或 122回车23 scanf(“%d,%d”, 输入格式 122,23 scanf(“a=%d,b=%d”, 输入格式 a=123,b=23 7、格式说明%*表示跳过对应的输入数据项不予读入。 如:scanf(“%2d %*2d %2d”, 若输入12 345 67 则12赋给a,67赋给b,而345没有赋给任何数据. *14 例: #include void main(void) { int a,b; char x,y; scanf(“%c%c”, scanf(“%d,%d”, printf(“%c%c”,x,y); printf(“%d%d”,a,b); } *15 3.2.3 字符输入函数 getchar( ):用于输入一个字符常量。 无参数,函数的返回值就是从键盘输入的一个字符。 【例】 显示从键盘输入的一个字符。 #include void main( ) { char c;￿￿ c=getchar( );￿￿ printf(″%c″,c); }￿￿ 程序中使用getchar( )从键盘的输入中得到一个字 符常量并赋给字符变量c,然后输出该字符。 *16 3.2.4 字符输出函数 putchar( ):字符输出函数。 作用:向标准设备(通常是显示器)输出一个 字符。 putchar(c); ￿￿ 结果:输出字符变量c的值。 *17 例 用putchar( ) 显示从键盘输入的字符。 #include void main( ) { char c;￿￿ c=getchar( );￿￿ putchar(c); }￿￿ 可以将 c=getchar( ); putchar(c); 合并为: putchar(getchar( )); *18 算法的描述—流程图 以图解方式说明实现一个解决方案所需完成的一 系列操作. 为了达到下列目的: u一目了然,比文字描述易懂. u程序可以很容易地查看和修改. u提供有效的程序文档. u解释程序和讨论解决方案变得容易. *19 传统流程图里常用的符号 开始或结束框 “处理框”--运算步骤 输入或输出框 判断框 连接符:一个程序中两个部分之 间的连接 程序的流程线 注释 *20 传统流程图里的符号—连接符 在为复杂问题准备流程图时 p流程图可能无法放在一页中 p要将所有的图块直接连接起来比较困难 流程图可以被分割成若干部分. 连接符可以用于指定连接的位置. 在连接符中指定了一个唯一的数. 在图表断开的地方,一个箭头指示了那一点. *21 传统流程图里的符号—连接符 ab? 1 2 读入 a, b, c 开始 ac ? cb ? 12 显示a显示c 显示 b 结束 NY N N YY *22 流程图的一些提示 画流程图时应该记住的一些要点: p开始把注意力集中在问题的逻辑上,画出流程图的 主路径. p完成主路径后,加上分支和循环. p一个流程图只能含有一个起始点和一个结束点 p使流程图保持独立,只要可能,就不要用与计算机 有关的术语. p没有必要在流程图中画出程序的每个步骤. p使用描述性的术语来表现问题的逻辑结构. p不要用模棱两可的词语. p让其他编程人员或用户能够轻松看懂你的流程图 *23 结构化程序设计的基本思想是任何程序都可以用三种基本 结构来实现,即顺序结构、选择结构和循环结构。 顺序结构的程序流程是按语句书写的顺序依次执行。 选择结构是根据给定条件进行判断,由判断的结果决定执 行两条或多条路径中的一条。 循环结构是在给定条件成立的情况下反复执行某个程序段 ,该程序段称为”循环体”。 3.3 程序的三种基本结构 *24 3.4 if条件语句 3.4.1 if语句的3种形式 3.4.2 if语句的嵌套 *25 3.4.1 if语句和3种形式 if结构的一般格式(单分支)为: if(表达式) 语句￿￿ 功能: 首先计算表达式的值, 若其值为非0(即“真”),则执行表达式后的语句; 若其值为0(即“假”),则跳过这个语句去执行if语句 的后继语句。 其中,if(表达式)后面的语句只能是一个语句或一个 复合语句。 *26 流程 false (0) true (true (非非0 0) ) 表达式 语 句 表达式 语 句 true (非0) false (0) true (true (非非0 0) ) 表达式 语 句 表达式 false (0) *27 #include void main( ) { float r;￿￿ printf(″Input the radius:″);￿￿ scanf(″%f″,￿￿ if(r0)￿￿ printf(″area=%f\n″, 3.14159*r*r); }￿￿ 程序先从键盘读入r的值,然后判断r值是否大于0,若大 于0则进行计算并输出,否则就不进行计算。 【例】 从键盘输入圆的半径,若半径小于等于 0,则不进行计算;否则,计算圆面积。 *28 #include void main( ) { char c; c=getchar( ); if(c++!=’#’) putchar(c); } purchar(c)输出的字符是’a’+1,即’b’。 例:从键盘输入字符a,试判断下面程序运行的结果。 *29 例:求x的绝对值,x从键盘输入。 输出x的值 输入x的值 开始 x void main(void) {int x; scanf(“%d”, printf(“|%d|=”,x); if (x void main( ) { int a, b, max; scanf(″%d,%d″,￿￿ if(ab)￿￿ max=a;￿￿ else￿￿ max=b;￿￿ printf(″Maxum is %d″,max); }￿￿ *33 程序中引进了一个变量max,用它保存a 、b中的最大者。若ab,则将a送max中保 存,否则将b送max中保存。最后,输出 max的内容。 说明 *34 if(a); if(a) x = 0; ; x = 0; if(a) ; x = 0; // error else x = 1; *35 if语句—使用要点 if语句的使用要点 1、语句块:语句1和语句2可以是简单语句,但经常是 用一对大括号包围的复合语句。即用{…}括起来的 语句。 如:if(ab) 当只有一条语句时,用’;’。 { x=1; max=a;} *36 2、表达式: if语句的表达式可以是任意类型。 例如:if(‘a’) printf(“%d”,’a’); if(‘3’) printf(“OK!”); 注意:“非零”与“零”的用法 请区分if(x=1)与if(x= =1)的不同。 *37 if(表达式1) 语句1 ; else if(表达式2) 语句2 ; else if(表达式3) 语句3 ; else 语句4; 实现多路分支选择的功能。 3. if-else-if 结构 *38 【例】 输入一个x值,求下列相应的y值. #include void main( ) { float x,y;￿￿ scanf(″%f″,￿￿ if (x0)￿￿ y=1;￿￿ else if (x0) y= *39 if语句—嵌套使用要点 1、if语句中if与else的配对关系为 else总是与它上面的最近的if配对.书写格式的缩 进与否与它们之间的配对无关. 例如: if() if()语句块1 else语句块2 这时的else配对的对象为内层的if,而不是外层的if. 2、要实行强行的配对关系可以利用{ }。 如:if() {if()语句块1} else 语句块2 *40 if语句—嵌套形式范例 If语句例1 对学生成绩分A、B、C、D、E级:90分以上为 A; 80~89为B;70~79为C,60~69为D,60分以下为 E。输入一个分数,判断是何等级并显示。 If语句例2 输入一个年份,判断该年是否是闰年,并显示。 闰年的条件是a.能被4整除但不能被100整除;b.能被 100整除又能被400整除。 *41 #include void main( )￿￿ { float a,b,c,max;￿￿ scanf(″%f%f%f″,￿￿ 【例】 从键盘输入三个实数,求其最大 者。 if(ab)￿￿ {￿￿ if(ac)￿￿ max=a;￿￿ else￿￿ max=c;￿￿ }￿￿ else￿￿ {￿￿ if(bc)￿￿ max=b;￿￿ else￿￿ max=c;￿￿ }￿￿ printf(″Max=%f\n″,max);￿￿ } 说明:￿￿ (1)程序引进了一个中间变量 max,用以存放最大数。￿￿ (2)嵌套在内层的if语句可以 不用花括号括起来。但为了 使结构更清晰,添加花括号 也决不是多余的。 *43 3.5 switch语句 switch(多分支开关结构)语句格式: switch (表达式) { case 常量表达式1:语句组1 case 常量表达式2:语句组2 …. case 常量表达式n:语句组n default:语句组n+1 } *44 *45 switch语句 例:写出下面程序的输出结果. #include void main(void) { int x; scanf(“%d”, switch(x) { case 5:printf(“excellent”); case 4:printf(“Good”); case 3:printf(“Pass”); case 2:printf(“Fail”);/*break;*/ default:printf(“Poor”); } } 若从键盘输入3 输出为: PassFailPoor *46 1.switch后的表达式的值必须是整型或字 符型,不能为实型。 2.case后的表达式是可以求得整型量或字 符型量的常量表达式。且每个常量表达式 的值必须各不相同,否则将会出现矛盾. switch语句---使用要点 *47 switch语句---使用要点 3.当表达式的值与case后面的常量表达式值相等时就执 行此case后面的语句。 4.“case 常量:”只起语句标号的作用。 5.break语句在switch中的作用:强行跳出switch体转 到其它某条语句,每个case后面应有一个break语句 (否则程序的执行顺序将改变),default分支后的 break可以省略。 6.各个case出现的先后顺序不影响程序的执行结果。 *48 7.多个case可以执行同一组语句。 8.表示所有情况都不符合时,则执行default分支下 的语句组 n+1,它只能出现一次,通常放在分支结 构的最后。对于没有default分支的switch语句, 在所有情况都不符合时将不执行任何操作。 switch语句---使用要点 *49 switch语句---范例 Switch语句例1:若变量已正确定义, 则以下程序段的运行结果是: a=2;b=7;c=5; switch(a0) { case 1:switch(b12时,d =15%; 3. 设每公里每吨货物的基本运费为P,货物重为W,距离为S ,折扣为d,用switch结构编一程序求总运费F,计算公式为 :F=P*W*s*(1-d) *53 #include void main(void) { int c,s; float p,w,d,f; printf(“请输入基本运费、货物重量以及距离:\n“); scanf(“%f,%f,%d“, if (s=3000) c=12; else c=s/250; switch(c) {case 0:d=0;break; case 1:d=2;break; case 2:case 3:d=5;break; case 4:case 5:case 6:case 7:d=8;break; case 8:case 9:case 10:case 11:d=10;break; case 12:d=15;break; } f=p*w*s*(1-d/100.0); printf(“freight=%15.4f“,f); } *54 小结 程序的清晰易读性越来越被人们所强调。 scanf( )函数、字符输入函数getchar( )函数,可以实现 数据的输入。putchar( )是字符输出函数。 在任何表达式的后面加上一个分号,都可以构成一个表达 式语句。 复合语句在语法上等同于一个语句。 if语句具有三种结构:if结构、if-else结构和if-else- if结构。在if语句中可以嵌套另一个if语句,这种形式可以使 if语句嵌套到任意深度。￿￿ switch语句用于多路分支结构,它使得程序更加简明清晰 。 *55 第3章上机习题 P68~69 3.8 3.10 3.14 3.15(要求用switch语句实现)
展开阅读全文
  麦档网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:第三章顺序语句和选择语句
链接地址:https://www.maidoc.com/p-15475538.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

[email protected] 2018-2020 maidoc.com版权所有  文库上传用户QQ群:3303921 

麦档网为“文档C2C模式”,即用户上传的文档所得金币直接给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的金币归上传人(含作者)所有。
备案号:蜀ICP备17040478号-3  
川公网安备:51019002001290号 

本站提供办公文档学习资料考试资料文档下载


收起
展开