《C语言中《赋值运算》》由会员分享,可在线阅读,更多相关《C语言中《赋值运算》(10页珍藏版)》请在金锄头文库上搜索。
1、 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)。 复合赋值运算符的作用是先将复合运算符右边表达式的结果与 左边的变量进行算术运算,然后再将最终结果赋予左边的变量。所 以复
2、合运算要注意: 一、是复合运算符左边必须是变量; 二、是复合运算符右边的表达式计算完成后才参与复合赋值运算。复合运算符常用于某个变量自身的变化,尤其当左边的变量名很 长时,使用复合运算符书写更方便。 EgEg 1 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。自增
3、和自减运算符及其功能如下: + +:自增运算符。如 a+; +a;都等价于 a=a+1。 - -:自减运算符。如 a- -; - -a;都等价于 a=a-1。 自增运算符和自减运算符可以放到变量前面(前置方式)或者 后面(后置方式) ,这两种方式同样实现了变量的自增或自减运算。 但是当变量的自增运算或者自减运算同其它运算符配合构成一个表 达式时,前置运算时变量先做自增或自减运算,再将变化后的变量 值参加表达式中的其它运算。后置运算时变量在参加表达式中的其 它运算之后,再做自增或自减运算。EgEg 2 2:前置与后置运算符的区别:#include void main() int nNum1,nN
4、um2; 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 Pre 5 4 4 3 3 2 2 1 1 03.3 顺序程序设计举例顺序程序设计举例使用计算机解决问题,首先要求把问题描述清楚,需要作什么 工作,先作什么,再作什么,达
5、到什么条件后,就表示完成;然后, 再把这些步骤编程成计算程序,让计算机来实现。问题的解决步骤 叫作算法,算法这一词最早主要是指解决纯数学计算问题,现在可 以指解决有关信息处理一切问题的方法与步骤。 当然,对于计算机用户而言最关心的是程序的输入和输出,算 法是程序员要操心的。每一个固定的算法有满足两个要求:第一,有序性,算法是一组有序的操作步骤的组合,不同的执 行顺序会有不同的结果。第二,有穷性,一个算法只能有一个输入,一个输出,输入的 条件经过有穷的步骤的后,可以得到一个输出结果,不可能无穷无 尽的作个没完。依据算法,可用计算机语言编写相对应的程序,如果算法中的 每一步都是“直线”的执行,没有
6、分支,那么这样编写的程序就是 顺序结构的程序,顺序程序是最简单程序结构,也是一些程序的基 础。3.4 应用举例应用举例EgEg 3 3:已知三角形三边,求三角形面积。分析分析:这里已知三角形三边 a,b,c,使用了 求面积的海伦公式:)()(2 cSbSaSSAcbaSEgEg 4 4:两数求和程序:#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*(db
7、SdbA)*(dbSdbB)*(dbS dbC); printf(“三角形的面积是:%lfn”,dbArea); #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一共有四个参数,其中第一个字符串中含有格式说 明,第一个参数
8、以后的所有参数,都是参数列表。 %d表示输入时,取对应参数表中变量的值,它是格式说明符。4.1 分支语句分支语句分支结构程序是根据给定的条件来判断执行何种操作。C+语 言中提供了 if 语句来实现这个功能。 格式:格式: if(条件) 语句组 1; else 语句组 2; if 语句中的条件成立,执行语句组 1,否则执行语句组 2。 使用 把一些语句包括起来,这叫作复合语句复合语句。 在括号中,可定义变量写 C+语句,但它作为一个分支的整 体执行或不执行。 如果语句组中只有一个条语句也可以不用括号,不写成复合 语句,但为了程序清晰化,还是提倡使用复合语句。 EgEg 1 1:输入两个整数,判断
9、第一个整数是否可整除第二个整数。条件语句组 1语句组 2成立不成立#include void main() int nA = 0,nB = 0;printf(“请输入两个整数:n “ );scanf(“%d,%d“,if( nA % nB = 0 )printf(“%d 不可以整除%dn“,nA,nB);elseprintf(“%d 不可以整除%dn“,nA,nB); 分析分析:判断是否可整除,可以使用判断其相除的余数是否为零 作为条件,注意,这里=与=不同,=是表示判断两个数是否相等, 而=是一个赋值运算符,这是程序很容易写错的地方。if 语句也可以只有一个分支。语句也可以只有一个分支。E
10、gEg 2 2:输入两个整数,按由大到小排序输出。 这个问题的算法是: 输入两个整数 nA,nB,如果 nA void main() int nA,nB;printf(“请输入两个整数:n“);scanf(“%d,%d“,if(nA void main() double dbScore; scanf(“%lf“, if(dbScore void main() int nA = 3;int nB = 5;printf(“%d,%d,%d,%d,%dn“, nA nB,nA=nA,nA != nB); 运行结果:运行结果: 1,1,0,1,1多个关系表达式可以组合成逻辑表达式,逻辑运算符仅有三种个
11、:运算符运算符意意 义义用用 法法int nA,nB,nC,nMax;scanf(“%d,%d,%d“,if(nA nB ) nMax = nA; else nMax = nB; if( nMax void main() char cC; printf(“请输入一个字符: “); scanf(“%c“,if( cC =a cC = cC + nOffset;printf(“%cn“,cC); else printf(“不能处理n“); cC 是小字 母 开 始输入 cC计算 ASCII 偏移 量 cC 是大字母输出 nMaxY字符加上偏移量 计算 ASCII 偏移量 字符加上偏移量 输出 nMax打印 “不能 处理”NN结束Y分析:分析:ASCII 码表,字母的码值 排列是连续的,这为处理字符问 题提供了很好的便利,而且,字 符变量中其实保存的是字符的 ASCII 码,所以字符变量可以作 为整型变量处理。