C语言中复合赋值运算,表达式等知识.doc_第1页
C语言中复合赋值运算,表达式等知识.doc_第2页
C语言中复合赋值运算,表达式等知识.doc_第3页
C语言中复合赋值运算,表达式等知识.doc_第4页
C语言中复合赋值运算,表达式等知识.doc_第5页
已阅读5页,还剩6页未读, 继续免费阅读

下载本文档

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

文档简介

3.复合赋值运算算术运算符“+ * / %”和赋值运算符“=”结合起来,形成复合赋值运算符。如下所示:+=:加赋值运算符。如a+=3+1,等价于 a=a+(3+1)。-=:减赋值运算符。如a-=3+1,等价于 a=a-(3+1)。*=:乘赋值运算符。如a*=3+1,等价于 a=a*(3+1)。/= :除赋值运算符。如a/=3+1,等价于 a=a/(3+1)。%= :取余赋值运算符。如a%=3+1, 等价于 a=a%(3+1)。 复合赋值运算符的作用是先将复合运算符右边表达式的结果与左边的变量进行算术运算,然后再将最终结果赋予左边的变量。所以复合运算要注意:一、是复合运算符左边必须是变量;二、是复合运算符右边的表达式计算完成后才参与复合赋值运算。 复合运算符常用于某个变量自身的变化,尤其当左边的变量名很长时,使用复合运算符书写更方便。三,复合赋值运算的优先级符合C语言运算符的优先级表,结合方向为从右到左。四,采用复合赋值运算可提高程序的效率。如 到底Total=Total+3;与Total+=3;有没有区别?答案是有的,对于 A=A+1,表达式A被计算了两次,对于复合运算符A+=1,表达 式A仅计算了一次。一般的来说,这种区别对于程序的运行没有 多大影响,但是当表达式作为函数的返回值时,函数就被调用了两 次,而且如果使用普通的赋值运算符,也会加大程序的开销,使效率降低。Eg 1:赋值运算符的演示:#include void main()int nA=10;int nB=10;printf(%dt,nA+=nA-=nA*nA);printf(%d ,nB+=nB-=nB*=nB);运行结果:-180 03.2自增自减运算自增运算符和自减运算符 自增和自减运算符是C+语言所特有的,主要用于给一个变量加1或减1。自增和自减运算符及其功能如下:+ +:自增运算符。如a+; +a;都等价于a=a+1。- -:自减运算符。如a- -; - -a;都等价于a=a-1。 自增运算符和自减运算符可以放到变量前面(前置方式)或者后面(后置方式),这两种方式同样实现了变量的自增或自减运算。但是当变量的自增运算或者自减运算同其它运算符配合构成一个表达式时,前置运算时变量先做自增或自减运算,再将变化后的变量值参加表达式中的其它运算。后置运算时变量在参加表达式中的其它运算之后,再做自增或自减运算。Eg 2:前置与后置运算符的区别:#include void main()int nNum1,nNum2;nNum1=nNum2 = 5;printf(nPost Pre);printf(n%d %d,nNum1-,-nNum2);printf(n%d %d,nNum1-,-nNum2);printf(n%d %d,nNum1-,-nNum2);printf(n%d %d,nNum1-,-nNum2);printf(n%d %dn,nNum1-,-nNum2);运行结果:Post Pre5 44 33 22 11 03.3顺序程序设计举例使用计算机解决问题,首先要求把问题描述清楚,需要作什么工作,先作什么,再作什么,达到什么条件后,就表示完成;然后,再把这些步骤编程成计算程序,让计算机来实现。问题的解决步骤叫作算法,算法这一词最早主要是指解决纯数学计算问题,现在可以指解决有关信息处理一切问题的方法与步骤。当然,对于计算机用户而言最关心的是程序的输入和输出,算法是程序员要操心的。每一个固定的算法有满足两个要求:第一,有序性,算法是一组有序的操作步骤的组合,不同的执行顺序会有不同的结果。第二,有穷性,一个算法只能有一个输入,一个输出,输入的条件经过有穷的步骤的后,可以得到一个输出结果,不可能无穷无尽的作个没完。依据算法,可用计算机语言编写相对应的程序,如果算法中的每一步都是“直线”的执行,没有分支,那么这样编写的程序就是顺序结构的程序,顺序程序是最简单程序结构,也是一些程序的基础。3.4应用举例Eg 3:已知三角形三边,求三角形面积。#include #include void main()double dbA = 3.0;double dbB = 4.0;double dbC = 5.0;double dbS = (dbA + dbB + dbC ) / 2;double dbArea = sqrt(dbS*(dbSdbA)*(dbSdbB)*(dbS dbC);printf(“三角形的面积是:%lfn”,dbArea);分析:这里已知三角形三边a,b,c,使用了 求面积的海伦公式:Eg 4:两数求和程序:#include void main() int nNum1,nNum2,nSum; nNum1=10; nNum2=24; nSum= nNum1 + nNum2 printf(”sum: %d + %d = %dn,nNum1,nNum2,nSum);运行结果:Sum: 10 + 24 = 34 分析:第4句定义了nNum1,nNum2,nSum是三个整型变量,int是整型标识符;第8句printf一共有四个参数,其中第一个字符串中含有格式说明,第一个参数以后的所有参数,都是参数列表。%d表示输入时,取对应参数表中变量的值,它是格式说明符。4.1分支语句分支结构程序是根据给定的条件来判断执行何种操作。C+语言中提供了if语句来实现这个功能。条件语句组1语句组2成立不成立格式:if(条件)语句组1;else语句组 2;u if语句中的条件成立,执行语句组1,否则执行语句组2。u 使用 把一些语句包括起来,这叫作复合语句。u 在括号中,可定义变量写C+语句,但它作为一个分支的整体执行或不执行。u 如果语句组中只有一个条语句也可以不用括号,不写成复合语句,但为了程序清晰化,还是提倡使用复合语句。Eg 1:输入两个整数,判断第一个整数是否可整除第二个整数。#include void main() int nA = 0,nB = 0; printf(请输入两个整数:n ); scanf(%d,%d,&nA,&nB); if( nA % nB = 0 ) printf(%d 不可以整除%dn,nA,nB); else printf(%d 不可以整除%dn,nA,nB); 分析:判断是否可整除,可以使用判断其相除的余数是否为零作为条件,注意,这里=与=不同,=是表示判断两个数是否相等,而=是一个赋值运算符,这是程序很容易写错的地方。if语句也可以只有一个分支。Eg 2:输入两个整数,按由大到小排序输出。这个问题的算法是:nA nB交换nA,nB结束输出nA,nB输入nA,nB结束NY输入两个整数nA,nB,如果 nA nB, 则交换nA,nB,再输出nA,nB#include void main() int nA,nB; printf(请输入两个整数:n); scanf(%d,%d,&nA,&nB); if(nA nB ) int nT = nA; nA = nB; nB = nT; printf(%d,%d,nA,nB);分析:当nAnB条件不成立时,那么程序流程就不执行交换两个变量的操作。直接执行printf语句。反映在流程图上,就是直接画一条流程线。Eg3: 输入一个成绩,然后根据分数段,输出其相应的等级:100,90 优80,89 良70,79 中60,69 极格0,59 不级格#include void main()double dbScore;scanf(%lf,&dbScore);if(dbScore 60 )printf(不级格!n);else if(dbScore 70 )printf(合格!n);else if(dbScore 80 )printf(中!n);else if(dbScore 90 )printf(良!n);elseprintf(优!n);printf(中!n);else if(dbScore 90 )printf(良!n);elseprintf(优!n);开 始输出”不及格”d60输出”合格”d70输出”中”d80输出”良”d90输出”优”结 束YYYYNNNN分析 :本例中,由多个连续判断组成,因此可以采用if/else if级联的语句形式。if(.)else if(.) else if(.)else 4.2条件表达式和逻辑表达式if语句条件里面填写的表达式,是条件表达式,而多个条件表达式,又可以组合成逻辑表达式。C+语言提供了以下关系运算符:小于大于=大于或等于=等于!=不等于关系运算符是执行一种形式的运算,这个运算的结果是一个逻辑值,逻辑值只有真和假两种情况,C+用0表示假,用1(或其它非0的整数)表示真。Eg 3:关系运算:#include void main() int nA = 3; int nB = 5; printf(%d,%d,%d,%d,%dn, nAnB, nA nB, nA=nA, nA != nB);运行结果:1,1,0,1,1多个关系表达式可以组合成逻辑表达式,逻辑运算符仅有三种个:运算符意 义用 法&与表示两个条件要同时成立|或表示两个条件只需要有一个成立!非表示一个条件不成立时例如: nA =3,nB = 9,nC = 10,nD = 20,那么:1) 表示nX 既大于nA 又小于nB ,那么逻辑表达式可写成:(nX nA & nX nB)注意:C+语言中,不支持 nA nX nA 和 nX nA & nX nC & nX ,nBnMax = nA开始输入nA,nB,nC结束NYnMax = nBnMaxnCnMax = nC输出nMaxNY#include void main() printf(请输入三个整数 : ); int nA,nB,nC,nMax; scanf(%d,%d,%d,&nA,&nB,&nC); if(nA nB ) nMax = nA; else nMax = nB; if( nMax nC ) nMax = nC; printf(最大的数是:%dn,nMax);Eg 5:从键盘输入一个字母,如果是大写字母,就用小写字母输出,如果是小字母就用大写输入,如果不是字母,就提示”不能处理!”。#include void main()char cC;printf(请输入一个字符: );scanf(%c,&cC); if( cC =a & cC =A & cC =Z) int nOffs

温馨提示

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

评论

0/150

提交评论