顺序和分支程序结构.ppt

上传人:za****8 文档编号:3283858 上传时间:2019-12-11 格式:PPT 页数:38 大小:356.51KB
返回 下载 相关 举报
顺序和分支程序结构.ppt_第1页
第1页 / 共38页
顺序和分支程序结构.ppt_第2页
第2页 / 共38页
顺序和分支程序结构.ppt_第3页
第3页 / 共38页
点击查看更多>>
资源描述
C语言程序设计教程,第3章:顺序程序结构和分支程序结构(2课时),本章小结,顺序程序结构分支程序结构,顺序结构程序是指在程序的每次执行过程中,程序中的各条语句按照在程序中的先后顺序依次执行。每个顺序结构程序中的可执行语句在每一次程序执行的过程中,执行且只执行一次。顺序程序是最简单的程序。,设计一个程序,首先要将问题分析清楚,然后用适当的方法将问题描述出来,再根据问题的描述编成程序,最后调试运行。,描述问题的方法很多,有各种流程图,层次图、伪代码等,更多的时候是多种手段混合使用。,1顺序结构程序,/*exam31.c*/*最简单的C程序*/#includemain()printf(“Hello,world!、n”);,例3.1最简单的C程序,这也是世界上第一个C程序。,头文件,主函数,例3.2已知圆的半径为10,求圆的面积和周长,用计算机求解,程序如下,/*exam32.c*/*计算圆的面积和周长*/#include#definepi3.1415/定义符号常量main()floatarea,s;area=pi*10.0*10.0;s=2*pi*10.0;printf(“面积=%f,周长=%fn”,area,s);,数值常量,例3.3已知圆的半径为R(R是一个可变的量),求圆的面积和周长,用计算机求解,完整程序如下,/*exam33.c*/*计算圆的面积和周长*/#includemain()floatr,area,s;scanf(“%f“,1、注释,2、数据说明,3、数据输入,4、数据处理,5、结果输出,例3.4从键盘输入两个数a、b,求a除b的余数。即整除后剩下的数。编写完整的程序。,源程序代码如下:,/exam34.c/求两个数的余数#includemain()inta,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#includemain()intn;floatrate,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#includemain()intn,year;/说明整型变量floatvalue,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#includemain()floatx,y;intf,h;printf(“InputthenumbersofHeadsandFeet:”);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*cif判别式大于等于0then计算两个实根定位输出光标打印结果else计算实部计算虚部定位输出光标打印结果endprogram,4、源程序清单,/exam37.c#include#includemain()floata,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(250M500)D=0.075(500Mb?a:cd?c:dab?a:(cd?c:d),此处使用了条件运算符,3源程序代码之二,#includemain()inti;printf(“输入数字1-7:”);scanf(“%d”,例3.13入星期中的某一天,显示对应的英文,此例似显复杂,是否有更好的办法?,main()inti;printf(“输入数字1-7:”);scanf(“%d”,例3.14用switch语句重写打印星期程序。,main()intI;printf(“输入数字1-7:”);scanf(“%d”,例3.15用switch语句重写例3.4的程序,main()chara;printf(“输入一个字符:”);a=getchar();if(a=“Y”|a=“N”)if(a=“Y”)printf(“是n”);elseprintf(“否n”);elseprintf(“字符不合要求!n”),显然,改写后的程序更清晰,更简短。,/exam315.c#includemain()chara;printf(“输入字符:”);a=getchar();switch(a)caseY:printf(“是n”);break;caseN:printf(“否n”);break;default:printf(“字符不合要求!n”);,例3.16在屏幕上显示菜单,分析:程序首先在屏幕上将功能显示出来,用户根据需要选择相应的功能,程序根据用户的选择执行相应的程序段。,对于这类程序,往往是用户输入一个英文字母,然后程序根据字母来断别程序该执行什么程序段,故一般用switch语句比较方便。,2源程序清单,switch(a)casei:printf(“调用输入模块!n”);break;caseo:printf(“调用输出模块!n”);break;casel:printf(“调用查找模块!n”);break;caseq:printf(“调用退出模块!n”);break;,/exam316.c#includemain()chara;printf(“请选择:”);printf(“输入i”);printf(“输出o”);printf(“找出最长的单词l”);printf(“退出q”);a=getchar();,执行选项时,要调用相应的模块(程序段)。由于现在还没有相应的程序,暂用一条打印语句代替。,以后会用相应程序代替,例3.17统计某班级中计算机课程中考试成绩高于80分的人数。假设学生人数为(结束程序,按Ctrl+Break组合键),/exam317.c#includemain()inti=0,fs,j=0;Loop:scanf(“%d”,本章小结,1、分支结构:改变程序的执行流程,或有选择地执行程序;,2、ifelse和switch是结构化语句,而goto语句不是;,3、块if语句可以取代所有的分支结构,而多重分支结构不可;,4、块if语句中的条件可以是复杂逻辑表达式,而多重分支中的条件只能是简单表达式;,5、块if与goto语句结合,可以构造任何复杂的循环,但用专门的循环语句更方便。,作业,编写程序,接受用户输入的整数,如果是奇数,则乘3加1后输出结果,是偶数,则除2后输出结果。已知2006年的12月1日是星期五,编写程序,接受用户输入的131间的整数,判断是星期几,打印出结果。将上题的结果按如下格式输出:,Calendar2006-12-SuMoTuWuThFrSa-31-,作业(续),接受用户输入的年份和月份,判断是否是闰年,输出该月的天数(用switch语句实现)。,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!