《04C语言程序设计项目四2745.pptx》由会员分享,可在线阅读,更多相关《04C语言程序设计项目四2745.pptx(51页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、高等职业院校教材C语言程序设计主编:王斌项目四项目四 选择程序设计选择程序设计 p学习目标认识选择结构掌握关系运算符及表达式掌握逻辑运算符及表达式掌握if语句及使用方法掌握switch语句及使用方法主编:王斌C语言程序设计项目任务任务一 一元二次方程计算器 任务二 任意三个数排序任意三个数排序任务三 学生成绩评级任务四 四则运算计算器主编:王斌C语言程序设计任务一 一元二次方程计算器任务描述任务描述 在C语言命令字符环境下模拟实现一元二次方程计算器。设计的一款在线一元二次方程计算器,使用它只需要输入方程的系数,系统就能够通过解题得到方程的两个根。主编:王斌C语言程序设计任务一 一元二次方程计算
2、器任务分析任务分析 设方程二次系数、一次系数、常数系数分别为a,b,c,方程的两个根分别为x1,x2。根据一元二次方程求根公式来求它的根,首先求出dlta=b2-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=s
3、qrt(dlta)/(2*a);xi2=-sqrt(dlta)/(2*a);主编:王斌C语言程序设计任务一 一元二次方程计算器任务实施任务实施1.程序源代码/*P4_Task1.c*/#include#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;主编:王斌C语言程序设计任务一 一元二次方程计算器任务实施任务实施i
4、f(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);printf(Equation:%fx2+%fx+%f=0n,a,b,c);printf(Result:n);主编:王斌C语言程序设计任务一 一元二次方程计算器任务实施任务实施if(dlta=0)printf(x1=%fn,x1);printf(x2=%fn,x2);elseprintf(x1=%f+%fin,xr,xi1);printf(x2=%f+%fi
5、n,xr,xi2);getch();return 0;2.程序运行结果模拟一元二次方程计算器运行结果如图所示。主编:王斌C语言程序设计任务一 一元二次方程计算器相关知识相关知识一、选择结构 实际生活中,经常遇到要依据当时的情况来决定下一步的行为动作。例如,现在必须出门了,如果在下雨,则要带雨伞出门;如果没有下雨,则不带雨伞出门。在进行程序设计的时候也会经常遇到类似的问题。如在打怪升级类游戏中,怪兽遗落的宝物,游戏角色如果按了拾取按键,则该宝物被游戏角色拾取拥有,否则该宝物不会被游戏角色拾取拥有。程序设计语言提供了根据条件来实现程序执行顺序的语句。能够根据条件改变程序执行的结构称为选择结构或分支
6、结构。选择结构示意如图所示。选择结构往往需要一个关系表达式或者逻辑表达式作为判决的条件。根据其值是真还是假来决定执行相应的语句。主编:王斌C语言程序设计任务一 一元二次方程计算器相关知识相关知识二、关系运算符与关系表达式二、关系运算符与关系表达式1关系运算符在程序中经常需要比较两个量的大小关系,以决定程序下一步的动作。比较两个量的运算符称为关系运算符。在语言中有以下关系运算符,如表4-1所示。关系运算符含义 小于大于=大于或等于=等于!=不等于主编:王斌C语言程序设计任务一 一元二次方程计算器相关知识相关知识二、关系运算符与关系表达式二、关系运算符与关系表达式1关系运算符在程序中经常需要比较两
7、个量的大小关系,以决定程序下一步的动作。比较两个量的运算符称为关系运算符。在语言中有以下关系运算符,如表4-1所示。关系运算符含义 小于大于=大于或等于=等于!=不等于关系运算符都是双目运算符,其结合性均为左结合。关系运算符的优先级低于算术运算符,高于赋值运算符。在六个关系运算符中,,=的优先级相同,高于=和!=,=和!=的优先级相同。主编:王斌C语言程序设计任务一 一元二次方程计算器相关知识相关知识2关系表达式关系表达式的一般形式为:表达式 关系运算符 表达式例如:a+bc-dx3/2a+1(bc)a!=(c=d)关系表达式的值是“真”和“假”,用“1”和“0”表示。例如:50的值为“真”,
8、即为1。(a=3)(b=5)由于35不成立,故其值为假,即为0。主编:王斌C语言程序设计任务一 一元二次方程计算器相关知识相关知识例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+y)b)printf(max=%dn,a);else printf(max=%dn,b);程序运行要求输入两个整数,输出其中的大数。主编:王斌C语言程序设计任务一
9、一元二次方程计算器相关知识相关知识2if形式if形式为:if(表达式)语句其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该语句。流程图表示如图。主编:王斌C语言程序设计任务一 一元二次方程计算器相关知识相关知识if语句可看作是if-else结构中语句2为空的特殊情况。即:if(表达式)语句1;else;例4.2比较两个数的大小,输出大数。main()int a,b,max;printf(n input two numbers:);scanf(%d%d,&a,&b);max=a;if(maxb)max=b;printf(max=%d,max);程序中,要求输入两个数a、b。把a先赋予
10、变量max,再用if语句判别max和b的大小,如max小于b,则把b赋予max。因此max中总是大数,最后输出max的值。主编:王斌C语言程序设计任务一 一元二次方程计算器相关知识相关知识3if-else-if形式前二种形式的if语句一般适用于两个分支的情况。当有多个分支选择时,可采用if-else-if语句,其一般形式为:if(表达式1)语句1;else if(表达式2)语句2;else if(表达式3)语句3;else if(表达式m)语句m;else 语句n;其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。如果所有的表达式均为假
11、,则执行语句n。然后继续执行后续程序。if-else-if流程图表示如图。主编:王斌C语言程序设计任务一 一元二次方程计算器相关知识相关知识if-else-if结构用用if-else表示如下:if(表达式样1)语句1;elseif(表达式2)语句2;elseif(表达式m)语句m;else语句n;主编:王斌C语言程序设计任务一 一元二次方程计算器相关知识相关知识例4.3判断字符类别#includestdio.hmain()char c;printf(input a character:);c=getchar();if(c=0&c=A&c=a&cb)c=a-b;printf(“c:%fn”,c)
12、;elsec=b-a;printf(“c:%fn”,c);主编:王斌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=c,M=b,S=a主编:王斌C语言
13、程序设计任务二 任意三个数排序用流程图表示如图用流程图表示如图4-7所示所示主编:王斌C语言程序设计任务二 任意三个数排序任务实施任务实施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);主编:王斌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;
14、主编:王斌C语言程序设计任务二 任意三个数排序任务实施任务实施elseif(b=c)if(b=c)B=b;M=a;S=c;elseB=b;M=c;S=a;elseB=c;M=b;S=a;主编:王斌C语言程序设计任务二 任意三个数排序任务实施任务实施printf(Result of Sort:%.2f%.2f%.2fn,B,M,S);getch();return 0;主编:王斌C语言程序设计任务二 任意三个数排序任务实施任务实施2.程序运行结果 三个数排序程序运行结果如图所示。主编:王斌C语言程序设计任务三 学生成绩评级任务描述任务描述 素质教育要求对学生学习评价采用分级评定,一般考试成绩为具体
15、分数,按分数进行分级的方法如下:=90:A;=75:B;=60:C;60:D。要求输入一个学生成绩,输出对应的级次。主编:王斌C语言程序设计任务三 学生成绩评级任务分析任务分析流程图如图所示。主编:王斌C语言程序设计任务三 学生成绩评级任务实施任务实施1.程序源代码/*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;else
16、level=D;printf(The Level:%cn,level);getch();return 0;主编:王斌C语言程序设计任务三 学生成绩评级任务实施任务实施2.程序运行结果学生成绩评级运行结果如图所示。主编:王斌C语言程序设计任务三 学生成绩评级相关知识相关知识一、if语句的嵌套if语句中的执行语句为if语句,就构成了if 语句嵌套。如图所示。主编:王斌C语言程序设计任务三 学生成绩评级相关知识相关知识在嵌套内的if语句可能又是if-else型的,这将会出现多个if和多个else重叠的况,这时要特别注意if和else的配对问题。如:if(表达式1)if(表达式2)语句1;else语句
17、2;语言规定,else 总是与它前面最近的if配对,因此对上述例子应按前一种情况理解。应该理解为:if(表达式1)if(表达式2)语句1;else语句2;主编:王斌C语言程序设计任务三 学生成绩评级相关知识相关知识例4.4输出两个数的大小关系main()int a,b;printf(please input A,B:);scanf(%d%d,&a,&b);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;执行该语句的语义是:如
18、ab为真,则把a赋予max,否则把b 赋予max。使用条件表达式时,还应注意以下几点:主编:王斌C语言程序设计任务三 学生成绩评级相关知识相关知识条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。因此 max=(ab)?a:b可以去掉括号而写为 max=ab?a:b条件运算符?和:是一对运算符,不能分开单独使用。条件运算符的结合方向是自右至左。例如:ab?a:cd?c:d应理解为ab?a:(cd?c:d)这也就是条件表达式嵌套的情形,即其中的表达式3又是一个条件表达式。主编:王斌C语言程序设计任务三 学生成绩评级相关知识相关知识例4.6使用条件表达式判别成绩级别#include
19、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;主编:王斌C语言程序设计任务三 四则运算计算器 任务描述任务描述设计一个四则运算计算器,用户输入一个运算式,计算器运算出结果。任务分析任务分析流程图如图所示。主编:王斌C语言程序设计任务三 四则运算计算器 任务实施任务实施1.程序源代码/*P4_Task3.c*/main()float a,b;char c;printf(input expre
20、ssion: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 errorn);getch();主编:王斌C语言程序设计任务三 四则运算计算器 任务实施任务实施2.程序运行结果三角形面积计算器运行结果如图所示。主编:王斌C语言程序设计任务
21、三 四则运算计算器 相关知识相关知识一、一、switch语句语句语言提供了另一种用于多分支选择的switch语句,其一般形式为:switch(表达式)case常量表达式1:语句1;case常量表达式2:语句2;case常量表达式n:语句n;default :语句n+1;其语义是:计算表达式的值。并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。主编:王斌C语言程序设计任务三 四则运算计算器 相关知识相关知识例4.9swi
22、tch语句使用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(Saturdayn);break;case 7:printf(Sundayn);break;default:printf(errorn);主编:王斌C语言程序设计任务三 四则运算计算器 相关知识相关知识本程序是要求输入一个1-7的数字,输出与之对应的星期英文单词。注意:使用switch语句时应注意以下几点:在case后的各常量表达式的值不能相同,否则会出现错误。在case后,允许有多个语句,可以不用括起来。各case和default子句的先后顺序可以变动,而不会影响程序执行结果。default子句可以省略不用。主编:王斌C语言程序设计教学检测三个数排序判断是否闰年 主编:王斌C语言程序设计作业完成项目4练习与习题。主编:王斌C语言程序设计