




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计教程,第3章:顺序程序结构 和分支程序结构 (2课时),本章小结,顺序程序结构 分支程序结构,顺序结构程序是指在程序的每次执行过程中,程序中的各条语句按照在程序中的先后顺序依次执行。 每个顺序结构程序中的可执行语句在每一次程序执行的过程中,执行且只执行一次。 顺序程序是最简单的程序。,设计一个程序,首先要将问题分析清楚,然后用适当的方法将问题描述出来,再根据问题的描述编成程序,最后调试运行。,描述问题的方法很多,有各种流程图,层次图、伪代码等,更多的时候是多种手段混合使用。,1 顺序结构程序,/* exam31.c */ /* 最简单的C程序 */ #include main() printf(“Hello,world!、n”); ,例3.1 最简单的C程序,这也是世界上第一个C程序。,头文件,主函数,例 3.2 已知圆的半径为10,求圆的面积和周长,用计算机求解,程序如下,/* exam32.c */ /* 计算圆的面积和周长 */ #include #define pi 3.1415 / 定义符号常量 main() float area,s; area=pi*10.0*10.0; s=2*pi*10.0; printf(“面积= %f, 周长=%fn”,area,s); ,数值常量,例 3.3 已知圆的半径为R(R是一个可变的量),求圆的面积和周长,用计算机求解,完整程序如下,/* exam33.c*/ /* 计算圆的面积和周长 */ #include main() float r,area,s; scanf(“%f“, ,1、注释,2、数据说明,3、数据输入,4、数据处理,5、结果输出,例 3.4 从键盘输入两个数a、b,求a除b的余数。即整除后剩下的数。编写完整的程序。,源程序代码如下:,/ exam34.c / 求两个数的余数 #include main() int a,b,c; /说明整型变量 scanf (“%d,%d”, ,整除运算符,输出语句,例 3.5 以我国1992年工业产值为100,如果以9%的年增长率增长计算到2000年时的工业产值。,1 算法分析:,对此问题,要找出问题的数学模型。设r为年增长率,n为年数,v为第n年的总产值。 则有 v=100*(1+r)n,2 数据结构,根据算法分析,至少要用到这么几个量,年增长率、年数、第n年的总产值。而这几个量中,年增长率肯定是小数(浮点)型数据,年数是整数(整型),总产值不会是整数,应为浮点数。这些数据都要放在相应的变量中,并要进行相应的数据说明。,/ exam35.c / 计算到2000年的工业产值 #include #include main() int n; float rate,value; n=2000-1992; rate=0.09; value=100*pow(float)(1+r),(float)n); printf( “2000年的产值为%f:”,value); ,pow为求幂的函数 格式 pow(底,指数) 底,指数均为浮点数。,强制类型转换,3 源程序代码,注意头文件,此例中,只能算到2000年,且年增长率为9%时的工业产 值。如果将工业产值改为10%,或者要算到其它年份,必须要 修改源程序,使用不便。,方法2:用scanf函数重新编写程序,注意开发环境的使用。,/ exam25a.c / 计算到指定年和指定年增长率的工业产值 #include #include main() int n,year; / 说明整型变量 float value,rate; printf(“请输入年份和年增长率:”); scanf(“%d,%f”, ,强制类型转换,改写后的程序使用更灵活。,例 3.6 鸡兔同笼,已知鸡兔总头数为H(Heads),总数为F(Feet),问鸡兔各有多少只?,1 算法分析:,(1)建立数学模型 设鸡为x只,兔为y只,由题意有: x+y=h (1) 2*x+4*y=f (2),(2)求解方程,找出x,y的具体求解公式:,以下用消元法找出方程的解,(2)式-2(1)式,注意:计算机不会自己建数学模型,也不会自己解方程!,2y=f-2h,y=(f-2h)/2,4(1)式-(2)式,2X=4H-F,X=(4H-F)/2,2 数据结构,程序中要用到不同的数据,存放头、脚数量的变量,存放方程解(鸡、兔数量)的变量,存放方程判别式的变量等。对于头、脚的数量,肯定是整型变量,方程的解理论上讲是整型,但在求解方程时要进行运算,为了避免发生错误,最好是用浮点数据(实型)。,3 伪代码(由于此问题比较简单,也可直接编写程序)。,说明变量 x,y,f,h 输入数据 f,h 计算x,y 打印结果,伪代码是一种程序设计工具,介于程序语言与自然语言之间,伪代码不能被计算机编译,但它很容易翻译成高级语言.,/exam36.c #include main() float x,y; int f,h; printf(“Input the numbers of Heads and Feet: ”); scanf(“%d,%d”, ,4 源程序代码,说明输入数据的内容,输出语句,赋值语句,问题:,1、从键盘输入一个数,如果该数为正,打印,否则不打印;,2、将考试成绩不及格的学生名单打印出来;,3、解一元二次方程,求出相应的实根或复根。,对于上述或类似问题,需要进行某种判断, 并根据不同情况进行不同的处理,怎样进行程 序设计?,2 分支结构程序设计,解决办法:,1、引入新的程序结构,分支结构, 有时也称 判断结构 或 选择结构。,2、为了和分支结构相配合,同时还要引入 逻辑表达式的概念。,3、有三种形式可进行分支结构的程序设计,A、 if 结构 B、多重选择结构(switch语句) C、无条件转移结构(goto语句),内容,if 语句,关系表达式和逻辑表达式,if 语句的变形及嵌套,多重选择语句 (switch 语句),无条件转移语句( goto 语句),本章小结,例 3.7 求一元二次方程,的根,1、算法分析:,2、数据结构: 由于问题简单,只需用到一些单精度实数,3、伪代码,输入方程系数 a,b,c 计算判别式 d=b*b-4*a*c if 判别式大于等于 0 then 计算两个实根 定位输出光标 打印结果 else 计算实部 计算虚部 定位输出光标 打印结果 end program,4、源程序清单,/exam37.c #include #include main() float a,b,d,c,x1,x2,p,q; printf( “输入方程系数: ” ); scanf(“%f,%f,%f”, ,求平方根的函数,关系运算符,例 3.8 商店售货,按购买货物款的多少分别给予不同的 优惠折扣,编程计算实际应付货款。,购货不足250元,没有折扣; 购货250元(含250元,下同),不足500元,减价5%; 购货500元,不足1000元,减价7.5%; 购货1000元,不足2000元,减价10%; 购货2000元及以上,减价15%;,1、算法分析: 设购物款为M,折扣为D,则D可表示为: D=0 (M250) D=0.05 (250 M500) D=0.075 (500 M1000) D=0.1 (1000 M2000) D=0.15 (2000M),2、源程序清单 / exam38.c #include main() float m,d,t; printf(“请输入购物金额: ”); scanf(“%f”,if (m=2000) d=0.15; t=m*(1-d); /计算应付 款 printf( “实际应付款:%f”,t); ,输入购物款: 249,实际应付款:249,输入购物款: 500,实际应付款:462.5,例 3.9 购物折扣程序 的另一个写法,改写后,程序更清晰, 执行时间更省。,/ exam39.c #include main() float m,d,t; printf(“请输入购物金额: ”); scanf(“%f”,else d=0.15; t=m*(1-d); /应付款 printf( “实际应付款:%fn”,t); ,例 3.10 从键盘输入一字符,如果为Y,则打印是,为N,打印否,其它 字符,打印输入错误。,/ exam310.c #include main() char a; printf(“输入一个字符:”); a=getchar(); if( a=Y | a=N ) if (a=“Y”) printf( “是!n”); else printf( “否!n”); else printf( “输入数据不合要求!n”); ,#include main() int x,y,z; printf(“Iput x,y,z:”); scanf(“%d,%d,%d”, ,例 3.11,嵌套不能太深,一般以三层为限, 嵌套太深,容易出错。,嵌套演示程序,/exam311a.c #include main() int x,y,z; printf(“Iput x,y,x:”); scanf(“%d,%d,%d”, ,利用逻辑表达式将例3.5改写,改写后程序的结构要清晰得多。,例 3.12 将输入的字母转化为小写字母。,1 算法分析,在计算机中,处理英文字母,其实是处理它的ASCII码值。将大写字母变成小写字母,就是将大写字母的ASCII码值变为相应的小写字母的ASCII码值。,大写字母的ASCII值比小写字母的ASCII值小32,故将相应字母的ASCII值加32就变成了小写字母。,程序设计时,要注意如果输入的不是大写的字母,则不用转换。,/exam312a.c /将输入的大写字母变成小写 #include main() char ch; printf(“请输入一个大写英文字母 :”); scanf(“%c”, ,2 源程序代码之一,/exam312b.c #include main() char ch; scanf(“%c”, ,注意:1 条件运算符优先于赋值运算符,低于关系运算符; 2 条件运算符的结合方向为“自右至左” ab?a:cd?c:d ab?a:(cd?c:d),此处使用了条件运算符,3 源程序代码之二,#include main() int i; printf(“输入数字 1- 7: ”); scanf(“%d”, ,例 3.13入星期中的某一天,显示对应的英文,此例似显复杂,是否有更好的办法?,main() int i; printf( “输入数字 1- 7: ”); scanf(“%d”, ,例 3.14 用 switch 语句重写打印星期程序。,main() int I; printf( “输入数字 1- 7: ”); scanf(“%d”, ,例 3.15 用 switch 语句重写例3.4的程序,main() char a; printf( “输入一个字符:” ); a=getchar(); if (a=“Y” | a=“N” ) if (a=“Y” ) printf( “是n”); else printf( “否n”); else printf( “字符不合要求!n”) ,显然,改写后的程序更清晰, 更简短。,/ exam315.c #include main() char a; printf( “输入字符:”); a=getchar(); switch (a) case Y: printf( “是n”); break; case N: printf( “否n”); break; default: printf( “字符不合要求!n”); ,例 3.16 在屏幕上显示菜单,分析: 程序首先在屏幕上将功能显示出来,用户根据需要选择相应的功能,程序根据用户的选择执行相应的程序段。,对于这类程序,往往是用户输入一个英文字母,然后程序根据字母来断别程序该执行什么程序段,故一般用 switch语句比较方便。,2 源程序清单,switch(a) case i: printf(“调用输入模块!n”); break; case o: printf(“调用输出模块!n”); break; case l: printf(“调用查找模块!n”); break; case q: printf(“调用退出模块!n”); break; ,/exam316.c #include main() char a; printf(“请选择:”); printf(“输入 i ”); printf(“ 输出 o ”); printf(“找出最长的单词 l”); printf(“退出 q”); a=getchar();,执行选项时,要调用相应的模块(程序段)。由于现在还没有相应的程序,暂用一条打印语句代替。,以后会用相应程序代替,例 3.17 统计某班级中计算机课程中考试成绩高于80分的人数。假设学生人数为 (结束程序,按Ctrl+Break组合键),/exam317.c #include main() int i=0, fs, j=0; Loop: scanf(“%d”, ,本章小结,1、分支结构:改变程序的执行流程,或有选择地执行程序;,2、if else 和 switch 是结构化语句,而 goto 语句不是;,3、块 if 语句 可以取代所有的分支结构,而多重分支结构不可;,4、块 if 语句 中的条件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业废弃物资源化利用在2025年的技术创新动态报告
- 安全教育培训骗人课件
- 安全教育培训途径课件
- 农业产业园项目农产品质量安全监管体系可行性研究与2025年效益评估报告
- 农业产业园项目农业科技成果转化与2025年经济效益评估报告
- 安全教育培训课件案例
- 2025年新能源社区智能微电网技术创新与应用案例深度解析报告
- 2025年城市道路照明节能改造项目施工图设计与审查
- 农业产业化龙头企业发展模式对农村经济发展的带动效应报告
- 2025年教育资源整合项目对教育行业教育评价风险分析报告
- 封路店铺经营补偿方案
- 职业病危害事故救援应急预案
- 2025深入贯彻中央八项规定精神学习教育测试题和答案
- 医生进基层活动方案
- 2025-2030年中国蔬果保鲜剂行业市场深度调研及发展趋势与投资价值评估研究报告
- 云南省土地征收农用地转用审批管理细则 (2023年修订)
- 2024年长庆油田分公司招聘考试真题
- 药剂知识竞赛试题及答案
- 尊师重教主题班会教案
- 医院质量与安全管理委员会制度职责及工作流程
- 幼儿园获奖公开课:中班数学《2和3的组成和分解》课件
评论
0/150
提交评论