c语言-第3章顺序结构程序设计资料.ppt_第1页
c语言-第3章顺序结构程序设计资料.ppt_第2页
c语言-第3章顺序结构程序设计资料.ppt_第3页
c语言-第3章顺序结构程序设计资料.ppt_第4页
c语言-第3章顺序结构程序设计资料.ppt_第5页
免费预览已结束,剩余41页可下载查看

下载本文档

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

文档简介

第三章,顺序结构程序设计,2,程序是对数据进行各种操作,其中运算操作是最基本的操作之一。,在C语言程序中,使用表达式描述各种运算。,表达式是由参与运算的数据和表示运算的符号,按照一定的规则组成的式子。,描述运算的符号称为运算符,由一个或两个特定符号表示。,引言,3,语言具有丰富的运算符,可分为多种类型,包括:,(1)算术运算符(+-*/%)(2)关系运算符(=|)(5)赋值运算符(=+=-=*=/=%=等)(6)条件运算符(?:)(7)逗号运算符(,),引言,4,(8)指针运算符(*和)(9)求字节数运算符(sizeof)(10)强制类型转换运算符((类型))(11)分量运算符(-)(12)下标运算符()(13)其他(如函数调用运算符(),引言,5,主要内容,3.1算术运算和算术表达式3.2赋值运算和赋值表达式3.3自增自减运算3.4优先级和类型转换3.5使用数学库函数3.6顺序结构程序设计,6,3.1算术运算和算术表达式,3.1.1整数算术运算3.1.2实数算术运算3.1.3混合算术运算3.1.4算术表达式3.1.5算术表达式的计算规则,7,表3-1算术运算符,注意,加号(+)除了可以表示两个数相加外,还表示正号,例如,+5;减号(-)除了可以表示两个数相减外,还表示负号,例如-12。,C语言中使用的特殊符号,星号(*)表示乘号,斜杠(/)表示除号,百分号(%)表示求余数。,另外,8,3.1.1整数算术运算,如果参与运算的操作数都是整数,运算的结果一定是整数。,例如,3+5,5-7,4*3,6/4,7%4,3/5,3%5,%运算符只能用于整数运算。,思考:1+1/2的运算结果是多少?,注意,9,3.1.2实数算术运算,例如,3.4+5.7,5.1-7.3,4.7*3.2,6.5/4.6,思考:1.0+1.0/2.0的运算结果是多少?,C语言规定,如果参与运算的操作数都是实数,运算的结果一定是实数。,注意,实数不能使用运算符%。,10,如果参与运算的操作数一个是整数,另一个是实数,运算的结果一定是实数。,3.1.3混合算术运算,例如,3+5.7,5.1-7,4.7*3,6/4.6,C语言规定,注意,混合运算情况下也不能使用运算符%。,11,3.1.4算术表达式,由参与算术运算的操作数(可以是常量、变量、函数等)、算术运算符和圆括号组成的符合C语言语法规则的式子。,概念,注意,C语言中的算数表达式书写形式和代数中的算术表达式类似,但C语言中的算术表达式必须写成一行的形式。例如,代数中的,在C语言中必须写成3/5的形式。,举例,是常数,不可以写成符号,(x1+x2+x3+x4)/5,b*b-4*a*c,(a+b)/(c-d),3.1415926*r*r,a/x+b*y,12,3.1.5算术表达式的计算规则,如果没有括号,算术表达式按照运算符的优先规则从左到右计算。如果有括号,括号中的表达式优先级别是最高的,要先计算括号中的表达式。,高级:*/%低级:+-,8-13/5+4*8-7+6%3,优先规则,举例1,8-2+32-7+2,33,举例2,(8-13)/5+4)*8-(7+6%3),13,3.2赋值运算和赋值表达式,3.2.1赋值运算符3.2.2赋值运算的类型转换问题3.2.3复合的赋值运算符3.2.4赋值表达式,C语言将赋值操作作为一种运算。,14,3.2.1赋值运算符,一般表达形式,其中,表达式可以是常量、变量、函数等。,例如:,赋值运算过程,a=3,b=sum/30,先计算赋值运算符(=)右边的表达式的值,然后将计算结果赋给赋值运算符(=)左边的变量。,例如,sum=3000时,执行b=sum/30,先计算sum/30的值,结果为100,然后将100赋值给变量b,结果是变量b的值为100。,赋值运算符,=,变量=表达式,15,3.2.2赋值运算的类型转换问题,我们经常会遇到赋值运算符两侧的数据类型不一致的情况,这时在执行赋值运算时就要进行类型转换。,转换时,以赋值运算符左侧的变量的类型为准进行。,例如:有定义inta;floatx;,执行a=45.78时,a的取值是45。,执行x=623时,x的取值是623.000000。,类型转换准则,16,C语言允许将形式为:变量=变量算术运算符表达式的表达式简洁地写成:变量算术运算符=表达式,3.2.3复合的赋值运算符,17,例如:,要求掌握的复合赋值运算符:,*,,a+=1,x-=y+1,a*=b,x/=n+1,x%=10,a=a+1,x=x-(y+1),a=a*b,x=x/(n+1),x=x%10,以下程序的输出结果是_。voidmain()inta=3;printf(%dn,(a+=a-=a*a);A)-6B)12C)0D)-12,D,18,3.2.4赋值表达式,由赋值运算符将一个变量和一个表达式连接起来的式子。,例如:“x5+6*a”是一个赋值表达式。如果a=10,则C语言规定,表达式5+6*a的值为65,变量x赋值后的值为65,表达式x5+6*a的值也为65。,例如:x=(y=15),其中赋值运算符右侧的表达式,可以是算术表达式,也可以是一个赋值表达式。,赋值运算符按照“自右而左”的结合顺序,因此,x=(y=15)和x=y=15等价。,赋值表达式,赋值表达式的值,被赋变量的值,注意,19,例1,floata;intb;a=1.2;b=a*3;,?b,b=3,例2,a+=3;x*=y+8;,a=a+3;x=x*(y+8);,例3,a=b=5;a=7+(b=8);,?a,b,a=5;b=5a=15;b=8,自右而左的结合性,例4,a=10;a+=a*=a;,?a,a=200,例5,y=23;printf(%d,x=y);,?x输出,x=2323,在一个语句中可以完成赋值和输出两种操作功能,20,3.3自增自减运算,自增、自减运算符,作用:自增运算符()使单个变量的值增1;自减运算符()使单个变量的值减1。,i=i+1,i=i-1,格式:前置:+i,-i(在使用i之前,使i的值加(减)1)后置:i+,i-(在使用i之后,使i的值加(减)1),几点说明,(1)自增自减运算符只对单个变量进行操作,称为单目运算符或一元运算符。不能用于常量和表达式。例如,5+、-(a+b)等都是非法的。(2)常用于循环语句中使循环控制变量自动加或减1,也用于指针变量,使指针指向上一个或下一个地址。(3)对于+n和n+,单独使用时意义相同,都是使变量n的值加1。(4)如果用在赋值语句中,意义有所不同。,intn=4,x,y;x=+n;/y=n+;,?x,y,x=5/y=4,21,例3.1,#includestdio.hintmain()intn,x,y;n=4;x=+n;printf(n=%dtx=%dn,n,x);n=4;y=n+;printf(n=%dty=%dn,n,y);return0;,运行结果:,n=5x=5n=5y=4,自增运算符的前置、后置对比。,22,例3.2,#includestdio.hintmain()intn,x,y;n=4;x=-n;printf(n=%dtx=%dn,n,x);n=4;y=n-;printf(n=%dty=%dn,n,y);return0;,运行结果:,n=3x=3n=3y=4,自减运算符的前置与后置对比。,23,#includestdio.hintmain()intn;n=4;printf(%dt,n);printf(%dt,+n);printf(%dnn,n);n=4;printf(%dt,n);printf(%dt,n+);printf(%dnn,n);n=4;printf(%dt,n);printf(%dt,-n);printf(%dnn,n);n=4;printf(%dt,n);printf(%dt,n-);printf(%dnn,n);return0;,运行结果:,455445433443,例3.3,自增自减运算符在输出语句中。,24,3.4优先级和类型转换,3.4.1优先级3.4.2类型转换3.4.2.1自动类型转换3.4.2.2强制类型转换,25,3.4.1优先级,优先级,结合性,如果一个表达式中有多个运算符,那么用来规定运算先后顺序的规则称为优先级法则。,当表达式中参与运算的多个运算符具有相同优先级时,用来规定运算的先后顺序。,已经介绍运算符的优先级和结合性,26,3.4.2类型转换,3.4.2.1自动类型转换,不同类型数据参与运算时,将一种类型的数据转换为另一种兼容的类型。,doublex;,x=45;/x取值为45.0,整型数据45自动转换为double类型数据。,inta;a=123.756;/a取值123,小数部分被截去。,类型转换,类型转换分类,自动转换(隐式转换):转换隐藏在操作中强制转换(显示转换):使用强制转换运算符,自动转换举例,2+4.5/整型数据2转换为double类型数2.0,再与4.5进行加法运算,是自动转换过程。,先转换、后运算,实型整型:采取截去小数部分的策略,而不是四舍五入。,27,转换规则,1、纵向向上的箭头表示不同类型的转换方向(由低类型转化为高类型),不表示转换所经的步骤。2、横向向左的箭头表示必须的转换。,自动类型转换规则,28,3.4.2.2强制类型转换,一般形式,(要转换成的数据类型)(被转换的表达式)注:当被转换的表达式是一个简单表达式时,外面的一对圆括号可以缺省。,举例,floatx,y;x=2.3;y=4.5;(int)(x+y)(int)x+y,说明,强制转换得到的是所需类型的中间变量,原变量或表达式的类型不变。,/6(int),/6.5(double),29,#includestdio.hintmain()intx,y;floatave;x=12;y=25;ave=(x+y)/2;printf(ave=%fn,ave);return0;,运行结果:,ave=18.000000,其中表达式(x+y)/2按照整数除法的规则进行,结果截去了小数部分的值。,例3.4,自动转换效果举例。,30,在程序中加入强制类型转换运算符,#includestdio.hintmain()intx,y;floatave;x=12;y=25;ave=(float)(x+y)/2;printf(ave=%fn,ave);return0;,运行结果:,ave=18.500000,其中表达式(float)(x+y)/2将(x+y)强制转换为float类型,再按照混合除法运算的规则进行,结果保留了小数部分的值。,例3.5,使用强制类型转换示例。,31,思考:以下程序的运行结果。,#includestdio.hintmain()doublesum;sum=1+1/2+1/3+1/4+1/5;printf(sum=%fn,sum);return0;,运行结果:,sum=1.000000,32,运用强制类型转换,程序改为:,#includestdio.hintmain()doublesum;sum=1+1/(double)2+1/(double)3+1/(double)4+1/(double)5;printf(sum=%fn,sum);return0;,运行结果:,sum=2.283333,33,3.5使用数学库函数,ANCIC规定,所有函数在使用之前都必须被声明。,该函数已编写好并已编译。在链接时,与用户写的程序连接在一起形成可执行的程序。,库函数,标准C函数按照不同的类别,将声明信息放在不同的头文件中,例如:标准输入输出函数printf()、scanf()等,其声明信息放在头文件“stdio.h”中,需要时使用如下文件包含命令:#includestdio.h用来完成一些常用数学计算的标准数学函数,如sqrt()、sin()等,其声明信息放在头文件“math.h”中,需要时使用如下文件包含命令:#includemath.h,34,调用函数通常是按如下顺序书写的:函数名(参数或用逗号分隔的参数列表),例如,计算x的平方根:sqrt(x),计算ex的函数:exp(x),计算xy的函数:pow(x,y),计算|x|的函数:fabs(x),计算弧度值x的三角函数:sin(x)、cos(x)、tan(x)等,35,举例,注意,1、使用数学表达式时一定要符合C语言表达式的书写规范。2、数学库函数中没有提供余切函数,可以利用正弦函数和余弦函数进行计算。假设要计算的角度x是以角度为单位的,还需要将它转换为弧度。x的余切计算公式:sin(x*3.14/180)/cos(x*3.14/180)或者利用正切函数1/tan(x*3.14/180),(x+2)*exp(2*x),(-b+sqrt(b*b-4*a*c)/(2*a),money*pow(1+rate),year),36,3.6顺序结构程序设计,3.6.1C语句概述3.6.2简单语句3.6.3顺序结构程序设计,37,C语句,控制语句,函数调用语句,由一次函数调用加一个分号构成一个语句。,表达式语句,空语句,?,1、出现在函数体的执行部分。2、作用是向计算机系统发出操作指令。,复合语句,if()elsefor()while()dowhile()continuebreakswitchgotoreturn,if(xy)z=x;elsez=y;,printf(“Hello!”);,由表达式加一个分号构成一个语句。,a=3;,;,由将一些语句括起来。,t=a;a=b;b=t;,?,3.6.1C语句概述,简单语句,38,3.6.2简单语句,简单语句主要包括表达式语句、函数调用语句等。,表达式语句,表达式;,例如,n+;x1=(-b+sqrt(b*b-4*a*c)/(2*a);x2=(-b-sqrt(b*b-4*a*c)/(2*a);z=x+a%3*(int)(x+y)%2/4;w=(float)(a+b)/2+(int)x%(int)y;p=money*pow(1+rate),year);,39,函数调用语句,函数调用;,例如,printf(Hello!);printf(sum=%fn,sum);scanf(%d%d,两者结合构成的赋值语句,ch1=getchar();,40,3.6.3顺序结构程序设计,通常程序编写的步骤是:,分析实际问题写出算法、画出流程图根据流程图写出相应的C语句程序变量声明输入已知变量值计算或处理操作输出结果,在顺序结构程序中,各语句(或命令)是按照位置的先后次序,顺序执行的,且每条语句都会被执行到。,41,编写程序,实现两个变量值的交换功能。,例3.1,借助于第三变量,#includestdio.hintmain()floata,b,t;printf(请输入a,b的初始值:);scanf(%f%f,运行情况:,请输入a,b的初始值:1025交换之前a,b的值a=10.000000b=25.000000交换之后a,b的值a=25.000000b=10.000000,42,编写程序,实现从键盘输入三角形的三边长,求三角形面积的功能。,例3.2,#

温馨提示

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

评论

0/150

提交评论