南昌工程学院C语言程序设计基础课件第3讲运算符和表达式.ppt

上传人:本田雅阁 文档编号:2132786 上传时间:2019-02-20 格式:PPT 页数:30 大小:473.51KB
返回 下载 相关 举报
南昌工程学院C语言程序设计基础课件第3讲运算符和表达式.ppt_第1页
第1页 / 共30页
南昌工程学院C语言程序设计基础课件第3讲运算符和表达式.ppt_第2页
第2页 / 共30页
南昌工程学院C语言程序设计基础课件第3讲运算符和表达式.ppt_第3页
第3页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《南昌工程学院C语言程序设计基础课件第3讲运算符和表达式.ppt》由会员分享,可在线阅读,更多相关《南昌工程学院C语言程序设计基础课件第3讲运算符和表达式.ppt(30页珍藏版)》请在三一文库上搜索。

1、运算符与表达式,讲课顺序: 1 运算符 2 运算符的优先级 3 表达式,2.6.1算术运算符和算术表达式 1算术运算符 +(加法)、(减法)、*(乘法)、/(除法)、%(取余) 注意: (1)a,b两个整数相除,商为整数,小数部分被舍弃。 例如,10/3=3 7/2=3(没有四舍五入) (2) a,b中至少有一个是实型的,则结果为实型。 例如,10.0/3=3.333333。,取余运算 a%b (b不为0),(1) a,b必须是整型数据,否则出错。,例: 6 % 2,5 % 2,,输出结果为:0 1,(2)若a或b有负数,则对a与b的绝对值取余,余数符号与a的符号相同 例: -7%5 余数为

2、-2 7%-5 余数为 2,考虑:输入一个三位数,输出个位、十位和百位上的数字 例如,输入:135,输出:5 3 1,考虑:将两个两位数的正整数a,b合并成一个整数放在c中。合并的方式是:将a数的十位和个位依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。,运算符的优先级和结合性,* / % + ,低,高,从左向右,2.算术表达式,用算术运算符和括号将常量、变量及函数连起来的式子。,例1 代数式 3x2+x-2,在计算机中,不能直接对代数式进行运算,而要将它转化成相应的算术表达式。,相应的算术表达式为:3*pow(x,2)+x-2 pow(x,2)是求幂的函数,例2 代

3、数式,相应的算术表达式为:a/2-(6*y)/(5*x),2.6.2 赋值运算符及赋值表达式,1.赋值运算符:=,2.赋值表达式:变量=表达式,(1)计算= 右侧表达式的值 (2)将表达式的值赋给左侧的变量 (3)将变量的值作为赋值表达式的值,3.赋值表达式加分号变成赋值语句,例:n=5; n=n+1;,4.赋值运算符的优先级和结合性 优先级较低,从右向左,例:p=q=r=9;,p=q=(r=9),表达式的值为:9,例:n=5 或 sum = a+b,注意: 赋值号的左边不能是常量或表达式。 如5=b,a+b=c,是非法的。,考虑:交换两个变量的值,如果a=5,b=7,将程序处理后a=7,b=

4、5,将程序代码补充: int a,b,t; scanf(“%d%d”,2.6.9逗号运算符和逗号表达式,先计算表达式1,再计算表达式2, 最后计算表达式n的值,逗号表达式 的值为表达式n 的值。,1.逗号运算符:,2.逗号表达式:表达式1,表达式2 ,.,表达式n,例:x=(3+5,4+6),赋值表达式的值为10,例:x=3+5, x+6,逗号表达式的值为14,3.逗号运算符的优先级最低,从左向右,2.6.3 自增(+)、自减(- -)运算符,作用:使 变量 的值增1或减1。运算符:+,- -,形式:+n,- -n, n+, n- -,区别: +n、- -n,先加(减)1,再对n运算 n+、n

5、- -,先对n运算,再将n加1(减)1,则y=7,n=6 先把n的值给表达式y,n再自减1,例 有int n=7,y;,y=+n;,则y=8,n=8,n先自加1再把结果给表达式y,y=n+;,则y=7,n=8,先把n的值给表达式y,n再自加1,y=- -n;,则y=6,n=6,n先自减1再把结果给表达式y,y=n- -;,main() int i, j; i=5; j=5; printf(“%dn”, +i); printf(“%dn”, j+); printf(“%dn”, j); ,结果:6 5 6,说明: 自增、自减运算常用于循环语句(第4章)以及指针变量(第7章)中。它使循环控制变量加

6、(或减)1,或使指针指向下(或上)一个地址。 (2)自增、自减运算符不能用于常量和表达式。 例如,5+、-(a+b)等都是非法的。,2.6.2 - 4.复合运算符,常用复合运算符主要5种:,+= -= *= /= %=,在赋值运算符前加上某些特定的运算符,例:,i+=j+8,i=i+(j+8),x*=j+4,x=x*(j+4),x/=j+4,x=x/(j+4),x-=j+4,x=x-(j+4),x%=j+4,x=x%(j+4),注意:复合运算符相当于赋值号后有一括号,实际上是自右至左进行运算的。,例1 如有int a=9, 计算a+=a+a和a*=2*a值。,例2 如有int a=9, 计算a

7、+=a-=a+a和a+=a*=2*a,a+=a+a,a=a+(a+a),a=9+18,a=27,a*=2*a,a=a*(2*a),a=9*18,a=162,a-=a+a,a=a-(a+a),a=9-18,a=-9,a+=-9,a=a+(-9),a=-18,2.6.10 sizeof( )运算符,用来求变量或字符串所占的字节数。 如int a,b;则sizeof(b)=? 如float a;则sizeof(a)=? sizeof(int)=4(2), sizeof(char)=1, sizeof(double)=8,sizeof(“hello”)=?,2.6.5 关系运算符与关系表达式,比较两个

8、量之间的关系: = = = !=,xy x=y x!=y,比较的结果,8 9 9 8,真 假,1 0,int x=2,y=6; x=(y3) y=(xy),x=1 y=0,例 1 以下程序的结果是,#include main() int x, y,z; x=4+59; printf(“%d,%d,%d”,x,y,z); ,1,1,0,关系运算符优先级低于算术运算符, = = != =,低,高,关系表达式,3x5 x=1时 x=4时,x在3和5之间时,表达式值为1,其他为0,(3x) 5 恒为 1,计算机执行,(3x) 5,(31) 5,0 5,1,(3x) 5,(34) 5,1 5,1,适用于

9、2个量的比较,3个量如何进行比较?,2.6.6 逻辑运算符与逻辑表达式,3x5,x3 并且 x5,3x & x5,2.6.6 逻辑运算符与逻辑表达式,!(非) &(与) |(或),1.运算符:,X Y X & Y X| Y ! X !Y 真 真 1 1 0 0 真 假 0 1 0 1 假 真 0 1 1 0 假 假 0 0 1 1,2.运算法则如下(T为1, F为0),真值表,1 1 1 0 0 1 0 0,非0 非0 非0 0 0 非0 0 0,!2=?,=1,例 已知a=3,b=4,c=5,求以下表达式的值。 1.a+bc&(b=c) 2.a|b+c&b-c 3.!(ab)&!c,4.算术

10、、关系、逻辑运符的优先级,=,+,&,+,-,&,|,( ),!,!,&,( ),逻辑表达式(表达式的值是1和0),用逻辑运算符连接关系表达式的式子称逻辑表达式。,例 用逻辑表达式表达下述数学式,(1) 080 (3)10x 30, 50 x 90,相应的逻辑关系表达:,(1) 0x & x10,(2) x180 (或 !(x=60 & x=80),(3) (x=10 & x=50& x=90),例1 用关系逻辑表式x8且x28,x8&x28,例2 表示字符y是否是大写字母字符,y=A&y=Z,例4 判别某年y是否闰年,闰年的条年为 (1)能被4整除,但不能被100整除 (2)能被4整除,且又

11、能被400整除,(y%4=0&y%100!=0)|(y%4=0&y%400=0 ),例3 判别一个数x既是5的倍数又是9倍数,x%5=0&x%9=0,(y%4=0&y%100!=0)|(y%400=0 ),2.6.7 条件运算符,格式: 表达式1 ?表达式2 :表达式3,1.表达式1的值为真,则条件表达式的值为表达式2的值 2.表达式1的值为假,则条件表达式的值为表达式3的值 3.条件运算符的结合方向为“自右至左” 4.条件运符优先于赋值运算符,低于关系运算符,例:y=69?2*6:18 则y=,P68 从键盘输入整数a与b,如果a2+b2大于100,则输出百位以上的数字,否则输出a与b之和。

12、,#include main() int a,b; printf(“please input a and b”); scanf(“%d%d”, ,2.8 C程序的类型转换,表达式中出现不同类型的数据时,系统将不同类型数据转换成同一种类型,才能进行运算。,1 自动转换,表达式的类型以最高类型为准。,两个float类型运算,先转换成double类型。,例:int a; char y; float b; z=a+y+b的类型为?,(double)a 将变量a的值转换成double型,等价于(double)(a) (int)(x+y) 将x+y的结果转换成int型 (float)5/2 5转换成实型,

13、再除以2(=2.500000),等价于(float)(5)/2 (float)(5/2) 将5整除2的结果转换成实型(2.000000),2.强制类型转换,格式: (类型名)(表达式),习题1:设x=2.5,a=10,y=4.7,求表达式x+a%3*(int)(x+y)%2/4的值,求 (float)(a+b)/2+(int)x%(int)y的值,习题2:设a=2,b=3,x=3.5,y=2.5,考虑:对变量h中的值保留2位小数,并对第三位进行四舍五入,例如h=3.1415926,处理后h=3.14;若h=2.345,处理后h=2.35。,例2.5 鸡兔同笼,已知鸡兔总头数为h(Heads),

14、总腿数为f(Feet),问鸡兔各有多少只?,1 算法分析:,(1)数学模型 设鸡为x只,兔为y只,由题意有: x+y=h (1) 2*x+4*y=f (2),(2)求解方程,找出x,y的具体求解公式:,2.10 顺序结构程序设计举例子,y=(f-2h)/2,X=(4h-f)/2,注意:计算机不会自己建数学模型,也不会自己解方程!,2 数据结构,总头数h、总腿数f为整型常量;鸡x、兔y为整型变量,#include main() int f,h,x,y; printf(“Input the number of H and F:”); scanf(“%d,%d”, ,3 源程序代码,输入总头数总腿数,输出结果,输出总头数总腿数,提示输入数据的内容,变量定义,计算(变量使用),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1