04C语言程序设计项目四_第1页
04C语言程序设计项目四_第2页
04C语言程序设计项目四_第3页
04C语言程序设计项目四_第4页
04C语言程序设计项目四_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、项目四 选择程序设计 学习目标认识选择结构掌握关系运算符及表达式掌握逻辑运算符及表达式掌握if语句及使用方法掌握switch语句及使用方法项目任务任务一 一元二次方程计算器 任务二 任意三个数排序任务三 学生成绩评级任务四 四则运算计算器任务一 一元二次方程计算器任务描述 在C语言命令字符环境下模拟实现一元二次方程计算器。设计的一款在线一元二次方程计算器,使用它只需要输入方程的系数,系统就能够通过解题得到方程的两个根。 任务一 一元二次方程计算器任务分析 设方程二次系数、一次系数、常数系数分别为a,b,c,方程的两个根分别为x1,x2。根据一元二次方程求根公式来求它的根,首先求出dlta=b2

2、-4ac,然后根据dlta的值来求x1和x2:如果dlta=0,则x1=(-b+)/(2a),x2=(-b-)/(2a);否则,方程的根为两个虚数,这两个虚数实部相同为xr=(-b)/(2a),虚部分别为xi1=()/(2a)、xi2=-()/(2a)。这段叙述用C语言表示为:if (dlta=0)x1=(-b+sqrt(dlta)/(2*a);x2=(-b-sqrt(dlta)/(2*a);elsexr=(-b)/(2*a);xi1=sqrt(dlta)/(2*a);xi2=-sqrt(dlta)/(2*a);任务一 一元二次方程计算器任务实施1.程序源代码/*P4_Task1.c*/#in

3、clude #include int main(int argc, char *argv)float a,b,c,dlta,x1,x2,xr,xi1,xi2;printf(Enter A quadratic equation coefficients a,b,cn);scanf(%f,%f,%f,&a,&b,&c);dlta=b*b-4*a*c;任务一 一元二次方程计算器任务实施if (dlta=0)x1=(-b+sqrt(dlta)/(2*a);x2=(-b-sqrt(dlta)/(2*a);elsexr=(-b)/(2*a);xi1=sqrt(-dlta)/(2*a);xi2=-sqrt(

4、-dlta)/(2*a);printf(Equation:%fx2+%fx+%f=0n,a,b,c);printf(Result:n);任务一 一元二次方程计算器任务实施if (dlta=0)printf(x1=%fn,x1);printf(x2=%fn,x2);elseprintf(x1=%f+%fin,xr,xi1);printf(x2=%f+%fin,xr,xi2);getch();return 0;2.程序运行结果模拟一元二次方程计算器运行结果如图所示。任务一 一元二次方程计算器相关知识一、选择结构 实际生活中,经常遇到要依据当时的情况来决定下一步的行为动作。例如,现在必须出门了,如果

5、在下雨,则要带雨伞出门;如果没有下雨,则不带雨伞出门。在进行程序设计的时候也会经常遇到类似的问题。如在打怪升级类游戏中,怪兽遗落的宝物,游戏角色如果按了拾取按键,则该宝物被游戏角色拾取拥有,否则该宝物不会被游戏角色拾取拥有。程序设计语言提供了根据条件来实现程序执行顺序的语句。能够根据条件改变程序执行的结构称为选择结构或分支结构。选择结构示意如图所示。选择结构往往需要一个关系表达式或者逻辑表达式作为判决的条件。根据其值是真还是假来决定执行相应的语句。 任务一 一元二次方程计算器相关知识二、关系运算符与关系表达式1关系运算符在程序中经常需要比较两个量的大小关系,以决定程序下一步的动作。比较两个量的

6、运算符称为关系运算符。在语言中有以下关系运算符,如表4-1所示。关系运算符含义 小于大于=大于或等于=等于!=不等于任务一 一元二次方程计算器相关知识二、关系运算符与关系表达式1关系运算符在程序中经常需要比较两个量的大小关系,以决定程序下一步的动作。比较两个量的运算符称为关系运算符。在语言中有以下关系运算符,如表4-1所示。关系运算符含义 小于大于=大于或等于=等于!=不等于关系运算符都是双目运算符,其结合性均为左结合。关系运算符的优先级低于算术运算符,高于赋值运算符。 在六个关系运算符中,,=的优先级相同,高于=和!=,=和!=的优先级相同。 任务一 一元二次方程计算器相关知识2关系表达式关

7、系表达式的一般形式为: 表达式 关系运算符 表达式例如:a+bc-dx3/2a+1(bc)a!=(c=d)关系表达式的值是“真”和“假”,用“1”和“0”表示。例如:50的值为“真”,即为1。(a=3)(b=5)由于35不成立,故其值为假,即为0。任务一 一元二次方程计算器相关知识例4.1main() char c=k; int i=1,j=2,k=3; float x=3e+5,y=0.85; printf(%d,%dn,a+5=k+1); printf(%d,%dn,1j5,x-5.25b & cd 等价于 (ab)&(cd)!b=c|da 等价于 (!b)=c)|(dc&x+yc)&(x

8、+y)b) printf(max=%dn,a); else printf(max=%dn,b);程序运行要求输入两个整数,输出其中的大数。任务一 一元二次方程计算器相关知识2if形式if形式为: if(表达式) 语句其语义是:如果表达式的值为真,则执行其后的语句, 否则不执行该语句。流程图表示如图。任务一 一元二次方程计算器相关知识if语句可看作是if-else结构中语句2为空的特殊情况。即:if(表达式) 语句1; else ;例4.2比较两个数的大小,输出大数。main() int a,b,max; printf(n input two numbers: ); scanf(%d%d,&a,

9、&b); max=a; if (maxb) max=b; printf(max=%d,max);程序中,要求输入两个数a、b。把a先赋予变量max,再用if语句判别max和b的大小,如max小于b,则把b赋予max。因此max中总是大数,最后输出max的值。任务一 一元二次方程计算器相关知识3if-else-if形式前二种形式的if语句一般适用于两个分支的情况。 当有多个分支选择时,可采用if-else-if语句,其一般形式为:if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; else if(表达式m) 语句m; else 语句n;其语义是

10、:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。 if-else-if流程图表示如图。任务一 一元二次方程计算器相关知识if-else-if结构用用if-else表示如下:if(表达式样1)语句1;elseif (表达式2)语句2;elseif(表达式m)语句m;else语句n;任务一 一元二次方程计算器相关知识例4.3判断字符类别#includestdio.hmain() char c; printf(input a character: ); c=getchar(); if(c

11、=0&c=A&c=a&cb)c=a-b;printf(“c:%fn”,c);elsec=b-a;printf(“c:%fn”,c);任务二 任意三个数排序任务描述三个数排序是选择结构经典例程,要求输入三个数,按大小输出这三个数。任务分析解决本问题方法较多,作为初学者我们先用比较法来解决此问题。比较法的基本思路用数学符号语句表达如下:设三个数分别为a,b,c,存放从大到小顺序三个数变量为B,M,S;如果a=b是 判断b= c是B=a,M=b,S=c 否判断a=c是B=a,M=c,S=b 否B=c,M=a,S=b否 判断b=c是判断a= c是B=b,M=a,S=c 否B=b,M=c,S=a 否B=

12、c,M=b,S=a任务二 任意三个数排序用流程图表示如图4-7所示任务二 任意三个数排序任务实施1.程序源代码/*P4_Task2.c*/#include int main(int argc, char *argv)float a,b,c,B,M,S;printf(Enter three number a,b,cn);scanf(%f,%f,%f,&a,&b,&c);任务二 任意三个数排序任务实施if (a=b)if (b=c)B=a;M=b;S=c;elseif(a=c)B=a;M=c;S=b;elseB=c;M=a;S=b;任务二 任意三个数排序任务实施elseif(b=c)if(b=c)

13、B=b;M=a;S=c;elseB=b;M=c;S=a;elseB=c;M=b;S=a;任务二 任意三个数排序任务实施printf(Result of Sort:%.2f%.2f%.2fn,B,M,S);getch();return 0;任务二 任意三个数排序任务实施2.程序运行结果 三个数排序程序运行结果如图所示。任务三 学生成绩评级任务描述 素质教育要求对学生学习评价采用分级评定,一般考试成绩为具体分数,按分数进行分级的方法如下:=90:A;=75:B;=60:C;60:D。要求输入一个学生成绩,输出对应的级次。任务三 学生成绩评级任务分析流程图如图所示。 任务三 学生成绩评级任务实施1.

14、程序源代码/*P4_Task3.c*/#include int main(int argc, char *argv)float g;char level;printf(Enter score:n);scanf(%f,&g);if (g=90)level=A;else if (g=75)level=B;else if (g=60)level=C;elselevel=D;printf(The Level:%cn,level);getch();return 0;任务三 学生成绩评级任务实施2.程序运行结果学生成绩评级运行结果如图所示。任务三 学生成绩评级相关知识一、if语句的嵌套if语句中的执行语句

15、为if语句,就构成了if 语句嵌套。如图所示。任务三 学生成绩评级相关知识在嵌套内的if语句可能又是if-else型的,这将会出现多个if和多个else重叠的况,这时要特别注意if和else的配对问题。如: if(表达式1) if(表达式2) 语句1; else语句2;语言规定,else 总是与它前面最近的if配对,因此对上述例子应按前一种情况理解。应该理解为:if(表达式1)if(表达式2)语句1;else语句2;任务三 学生成绩评级相关知识例4.4输出两个数的大小关系main() int a,b; printf(please input A,B: ); scanf(%d%d,&a,&b);

16、 if(a!=b) if(ab) printf(ABn); else printf(AB、Ab) printf(ABn); else printf(Ab) max=a; else max=b;用条件表达式写为 max=(ab)?a:b;执行该语句的语义是:如ab为真,则把a赋予max,否则把b 赋予max。使用条件表达式时,还应注意以下几点:任务三 学生成绩评级相关知识条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。因此 max=(ab)?a:b可以去掉括号而写为 max=ab?a:b条件运算符?和:是一对运算符,不能分开单独使用。条件运算符的结合方向是自右至左。例如:ab?a

17、:cd?c:d应理解为ab?a:(cd?c:d)这也就是条件表达式嵌套的情形,即其中的表达式3又是一个条件表达式。 任务三 学生成绩评级相关知识例4.6使用条件表达式判别成绩级别#include int main(int argc, char *argv)float g;printf(Enter score:n);scanf(%f,&g);printf(The Level:%cn,g=90? A:(g=75? B:(g=60?C:D);return 0;任务三 四则运算计算器 任务描述设计一个四则运算计算器,用户输入一个运算式,计算器运算出结果。任务分析流程图如图所示。 任务三 四则运算计算器

18、 任务实施1.程序源代码/*P4_Task3.c*/main() float a,b; char c; printf(input expression: a+(-,*,/)b n); scanf(%f%c%f,&a,&c,&b); switch(c) case +: printf(Result:%fn,a+b);break; case -: printf(Result:%fn,a-b);break; case *: printf(Result:%fn,a*b);break; case /: printf(Result:%fn,a/b);break; default: printf(input

19、errorn); getch();任务三 四则运算计算器 任务实施2.程序运行结果三角形面积计算器运行结果如图所示。任务三 四则运算计算器 相关知识一、switch语句语言提供了另一种用于多分支选择的switch语句, 其一般形式为: switch(表达式) case常量表达式1: 语句1; case常量表达式2: 语句2; case常量表达式n: 语句n; default : 语句n+1; 其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常

20、量表达式均不相同时,则执行default后的语句。任务三 四则运算计算器 相关知识例4.9switch语句使用main() int a; printf(input integer number: ); scanf(%d,&a); switch (a) case 1:printf(Mondayn);break; case 2:printf(Tuesdayn); break; case 3:printf(Wednesdayn);break; case 4:printf(Thursdayn);break; case 5:printf(Fridayn);break; case 6:printf(Sat

21、urdayn);break; case 7:printf(Sundayn);break; default:printf(errorn); 任务三 四则运算计算器 相关知识本程序是要求输入一个1-7的数字,输出与之对应的星期英文单词。注意:使用switch语句时应注意以下几点:在case后的各常量表达式的值不能相同,否则会出现错误。在case后,允许有多个语句,可以不用括起来。各case和default子句的先后顺序可以变动,而不会影响程序执行结果。default子句可以省略不用。教学检测三个数排序判断是否闰年 作业完成项目4练习与习题。 谢谢!9、静夜四无邻,荒居旧业贫。2022/9/9202

22、2/9/9Friday, September 9, 202210、雨中黄叶树,灯下白头人。2022/9/92022/9/92022/9/99/9/2022 2:09:41 PM11、以我独沈久,愧君相见频。2022/9/92022/9/92022/9/9Sep-2209-Sep-2212、故人江海别,几度隔山川。2022/9/92022/9/92022/9/9Friday, September 9, 202213、乍见翻疑梦,相悲各问年。2022/9/92022/9/92022/9/92022/9/99/9/202214、他乡生白发,旧国见青山。09 九月 20222022/9/92022/9

23、/92022/9/915、比不了得就不比,得不到的就不要。九月 222022/9/92022/9/92022/9/99/9/202216、行动出成果,工作出财富。2022/9/92022/9/909 September 202217、做前,能够环视四周;做时,你只能或者最好沿着以脚为起点的射线向前。2022/9/92022/9/92022/9/92022/9/99、没有失败,只有暂时停止成功!。2022/9/92022/9/9Friday, September 9, 202210、很多事情努力了未必有结果,但是不努力却什么改变也没有。2022/9/92022/9/92022/9/99/9/20

24、22 2:09:41 PM11、成功就是日复一日那一点点小小努力的积累。2022/9/92022/9/92022/9/9Sep-2209-Sep-2212、世间成事,不求其绝对圆满,留一份不足,可得无限完美。2022/9/92022/9/92022/9/9Friday, September 9, 202213、不知香积寺,数里入云峰。2022/9/92022/9/92022/9/92022/9/99/9/202214、意志坚强的人能把世界放在手中像泥块一样任意揉捏。09 九月 20222022/9/92022/9/92022/9/915、楚塞三湘接,荆门九派通。九月 222022/9/9202

25、2/9/92022/9/99/9/202216、少年十五二十时,步行夺得胡马骑。2022/9/92022/9/909 September 202217、空山新雨后,天气晚来秋。2022/9/92022/9/92022/9/92022/9/99、杨柳散和风,青山澹吾虑。2022/9/92022/9/9Friday, September 9, 202210、阅读一切好书如同和过去最杰出的人谈话。2022/9/92022/9/92022/9/99/9/2022 2:09:42 PM11、越是没有本领的就越加自命不凡。2022/9/92022/9/92022/9/9Sep-2209-Sep-2212、越是无能的人,越喜欢挑剔别人的错儿。2022/9/92022/9/92022/9/9Friday, Septembe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论