您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 04C语言程序设计项目四
高等职业院校教材C语言程序设计主编:王斌项目四选择程序设计学习目标认识选择结构掌握关系运算符及表达式掌握逻辑运算符及表达式掌握if语句及使用方法掌握switch语句及使用方法主编:王斌C语言程序设计项目任务任务一一元二次方程计算器任务二任意三个数排序任务三学生成绩评级任务四四则运算计算器主编:王斌C语言程序设计任务一一元二次方程计算器任务描述在C语言命令字符环境下模拟实现一元二次方程计算器。设计的一款在线一元二次方程计算器,使用它只需要输入方程的系数,系统就能够通过解题得到方程的两个根。主编:王斌C语言程序设计任务一一元二次方程计算器任务分析设方程二次系数、一次系数、常数系数分别为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);}else{xr=(-b)/(2*a);xi1=sqrt(dlta)/(2*a);xi2=-sqrt(dlta)/(2*a);}主编:王斌C语言程序设计任务一一元二次方程计算器任务实施1.程序源代码/*P4_Task1.c*/#includestdio.h#includemath.hintmain(intargc,char*argv[]){floata,b,c,dlta,x1,x2,xr,xi1,xi2;printf(EnterAquadraticequationcoefficientsa,b,c\n);scanf(%f,%f,%f,&a,&b,&c);dlta=b*b-4*a*c;主编:王斌C语言程序设计任务一一元二次方程计算器任务实施if(dlta=0){x1=(-b+sqrt(dlta))/(2*a);x2=(-b-sqrt(dlta))/(2*a);}else{xr=(-b)/(2*a);xi1=sqrt(-dlta)/(2*a);xi2=-sqrt(-dlta)/(2*a);}printf(Equation:%fx^2+%fx+%f=0\n,a,b,c);printf(Result:\n);主编:王斌C语言程序设计任务一一元二次方程计算器任务实施if(dlta=0){printf(x1=%f\n,x1);printf(x2=%f\n,x2);}else{printf(x1=%f+%fi\n,xr,xi1);printf(x2=%f+%fi\n,xr,xi2);}getch();return0;}2.程序运行结果模拟一元二次方程计算器运行结果如图所示。主编:王斌C语言程序设计任务一一元二次方程计算器相关知识一、选择结构实际生活中,经常遇到要依据当时的情况来决定下一步的行为动作。例如,现在必须出门了,如果在下雨,则要带雨伞出门;如果没有下雨,则不带雨伞出门。在进行程序设计的时候也会经常遇到类似的问题。如在打怪升级类游戏中,怪兽遗落的宝物,游戏角色如果按了拾取按键,则该宝物被游戏角色拾取拥有,否则该宝物不会被游戏角色拾取拥有。程序设计语言提供了根据条件来实现程序执行顺序的语句。能够根据条件改变程序执行的结构称为选择结构或分支结构。选择结构示意如图所示。选择结构往往需要一个关系表达式或者逻辑表达式作为判决的条件。根据其值是真还是假来决定执行相应的语句。主编:王斌C语言程序设计任务一一元二次方程计算器相关知识二、关系运算符与关系表达式1.关系运算符在程序中经常需要比较两个量的大小关系,以决定程序下一步的动作。比较两个量的运算符称为关系运算符。在C语言中有以下关系运算符,如表4-1所示。关系运算符含义小于=小于或等于大于=大于或等于==等于!=不等于主编:王斌C语言程序设计任务一一元二次方程计算器相关知识二、关系运算符与关系表达式1.关系运算符在程序中经常需要比较两个量的大小关系,以决定程序下一步的动作。比较两个量的运算符称为关系运算符。在C语言中有以下关系运算符,如表4-1所示。关系运算符含义小于=小于或等于大于=大于或等于==等于!=不等于关系运算符都是双目运算符,其结合性均为左结合。关系运算符的优先级低于算术运算符,高于赋值运算符。在六个关系运算符中,,=,,=的优先级相同,高于==和!=,==和!=的优先级相同。主编:王斌C语言程序设计任务一一元二次方程计算器相关知识2.关系表达式关系表达式的一般形式为:表达式关系运算符表达式例如:a+bc-dx3/2'a'+1c-i-5*j==k+1以上都是合法的关系表达式。在关系表达式表示形式中表达式可以是关系表达式。当表达式是关系表达式时,就出现嵌套的情况。例如:a(bc)a!=(c==d)关系表达式的值是“真”和“假”,用“1”和“0”表示。例如:50的值为“真”,即为1。(a=3)(b=5)由于35不成立,故其值为假,即为0。主编:王斌C语言程序设计任务一一元二次方程计算器相关知识例4.1main(){charc='k';inti=1,j=2,k=3;floatx=3e+5,y=0.85;printf(%d,%d\n,'a'+5c,-i-2*j=k+1);printf(%d,%d\n,1j5,x-5.25=x+y);printf(%d,%d\n,i+j+k==-2*j,k==j==i+5);主编:王斌C语言程序设计任务一一元二次方程计算器相关知识三、逻辑运算符和逻辑表达式1.逻辑运算符逻辑运算符用于连接一个或多个条件,判断这些条件是否成立。C语言中提供了三种逻辑运算符,如表4-2所示。逻辑运算符含义&&与运算||或运算!非运算主编:王斌C语言程序设计任务一一元二次方程计算器相关知识与运算符“&&”和或运算符“||”均为双目运算符。具有左结合性。非运算符“!”为单目运算符,具有右结合性。逻辑运算符和其他运算符优先级的关系可表示如下:即:!(非)→&&(与)→||(或)!(非)算术运算符关系运算符&&和||赋值运算符“&&”和“||”低于关系运算符,“!”高于算术运算符。按照运算符的优先顺序可以得出:ab&&cd等价于(ab)&&(cd)!b==c||da等价于((!b)==c)||(da)a+bc&&x+yb等价于((a+b)c)&&((x+y)b)!(非)算术运算符关系运算符&&和||赋值运算符主编:王斌C语言程序设计任务一一元二次方程计算器相关知识2.逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来的有意义的式子称为逻辑表达式。逻辑表达式的值是一个逻辑值,即“true”或“flase”。C语言中,以数字1表示“真”,以数字0表示“假”,但在判断一个量是否为“真”时,以非0表示“真”,以0表示“假”。可以将逻辑表达式的运算结果(0或1)赋给整型变量或字符型变量。主编:王斌C语言程序设计任务一一元二次方程计算器相关知识四、if语句if语句可以构成选择结构。它根据给定的条件进行判断,以决定执行某个选择程序段。C语言中if语句有三种形式。1.if-else形式if-else形式是if语句的基本形式,其他两种形式的if语句都可以看作是它的变形。if-else形式为:if(表达式)语句1;else语句2;其语义是:如果表达式的值为真,则执行语句1,否则执行语句2,流程图表示如图所示。主编:王斌C语言程序设计任务一一元二次方程计算器相关知识例4.1比较两个数的大小,输出大数。main(){inta,b;printf(inputtwonumbers:);scanf(%d%d,&a,&b);if(ab)printf(max=%d\n,a);elseprintf(max=%d\n,b);}程序运行要求输入两个整数,输出其中的大数。主编:王斌C语言程序设计任务一一元二次方程计算器相关知识2.if形式if形式为:if(表达式)语句其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该语句。流程图表示如图。主编:王斌C语言程序设计任务一一元二次方程计算器相关知识if语句可看作是if-else结构中语句2为空的特殊情况。即:if(表达式)语句1;else;例4.2比较两个数的大小,输出大数。main(){inta,b,max;printf(\ninputtwonumbers:);scanf(%d%d,&a,&b);max=a;if(maxb)max=b;printf(max=%d,max);}程序中,要求输入两个数a、b。把a先赋予变量max,再用if语句判别max和b的大小,如max小于b,则把b赋予max。因此max中总是大数,最后输出max的值。主编:王斌C语言程序设计任务一一元二次方程计算器相关知识3.if-else-if形式前二种形式的if语句一般适用于两个分支的情况。当有多个分支选择时,可采用if-else-if语句,其一般形式为:if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;…elseif(表达式m)语句m;else语句n;其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。if-else-if流程图表示如图。主编:王斌C语言程序设计任务一一元二次方程计算器相关知识if-else-if结构用用if-else表示如下:if(表达式样1)语句1;else{if(表达式2)语句2;else{if(表达式m)语句m;else{语句n;}}}主编:王斌C语言程序设计任务一一元二次方程计算器相关知识例4.3判断字符类别#includestdio.hmain(){charc;printf(inputacharacter:);c=getchar();if(c32)printf(Thisisacontrolcharacter\n);elseif(c='0'&&c='9')printf(Thisisadigit\n);elseif(c='A'&&c='Z')printf(Thisisacapitalletter\n);elseif(c='a'&&c='z')printf(Thisisasmallletter\n);elseprintf(Thisisanothercharacter\n);}程序用于判别键盘输入字符的类别。判别字符类别可以根据输入字符的ASCII码来判断。由ASCII码表可知ASCII值小于32的为控制字符;在“0”和“9”之间的为数字;在“A”和“Z”之间为大写字母;在“a”和“z”之间为小写字母;其余则为其它字符。这是一个多分支选择的问题,适合用if-else-if语句编程,通过判断输入字符ASCII码所在的范围,分别给出不同的输出。例如输入为“g”,输出显示它为小写字符。主编:王斌C语言程序设计任务一一元二次方程计算器相关知识4.if语句使用三种形式的if语句中,在if关键字之后均为表达式。该表达式通常是逻辑表达式或者关系表达式,但也可以是其它表达式,如赋值表达式等,甚至也可以是一个变量。例如:if(a=5)语句;if(b)语句;都是允许的。这里如果表达式的值为非0,则机器会认为它是逻辑值为“真”,如果表达式的值为0,则逻辑值为“假”。主编:王斌C语言程序设计任务一一元二次方程计算器相关知识注意,程序段:if(a=b)printf(%d,a);elseprintf(a=0);该程序段并不是表示当a=b时输出a,否则输出“a=0”,这样理解是错误的,C语言中表示是否相等是“==
本文标题:04C语言程序设计项目四
链接地址:https://www.777doc.com/doc-742364 .html