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

上传人:sccc 文档编号:5090327 上传时间:2023-06-03 格式:PPT 页数:30 大小:473.51KB
返回 下载 相关 举报
南昌工程学院C语言程序设计基础课件第3讲运算符和表达式.ppt_第1页
第1页 / 共30页
南昌工程学院C语言程序设计基础课件第3讲运算符和表达式.ppt_第2页
第2页 / 共30页
南昌工程学院C语言程序设计基础课件第3讲运算符和表达式.ppt_第3页
第3页 / 共30页
南昌工程学院C语言程序设计基础课件第3讲运算符和表达式.ppt_第4页
第4页 / 共30页
南昌工程学院C语言程序设计基础课件第3讲运算符和表达式.ppt_第5页
第5页 / 共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 7%-5 余数为 2,考虑:

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

3、(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=5,将程序代码补充:int a,b,t;scanf(“%d%d

4、”,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-,先对n运算,再将n加1(减)1,则y=7,n=6 先把n的值给表达式y,n再自减1,例 有int

5、 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章)中。它使循环控制变量加(或减)1,或使指针指向下(或上)一个地址。(2)自增、自减运算符不能用于常量和表达式。例如,5+、-(a+b)等都是非法的。,2.6.

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+=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,

7、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 关系运算符与关系表达式,比较两个量之间的关系:=!=,xy x=y x!=y,比较的结果,8 99 8,真假,10,int x=2,y=6;x=(y3)y=(xy),x=1y=0,例 1 以下程序的结

8、果是,#includemain()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,适用于2个量的比较,3个量如何进行比较?,2.6.6 逻辑运算符与逻辑表达式,3x5,x3 并且 x5,3x&x5,2.6.6 逻辑运算符与逻辑表达式,!(非)&(与)|(或),1.运算符:,X Y X&Y X|Y!X!Y 真 真

9、1 1 0 0真 假 0 1 0 1 假 真 0 1 1 0假 假 0 0 1 1,2.运算法则如下(T为1,F为0),真值表,1 11 00 10 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.算术、关系、逻辑运符的优先级,=,+,&,+,-,&,|,(),!,!,&,(),逻辑表达式(表达式的值是1和0),用逻辑运算符连接关系表达式的式子称逻辑表达式。,例 用逻辑表达式表达下述数学式,(1)080(3)10 x 30,50 x 90,相应的逻辑关系表达:,

10、(1)0 x&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整除,且又能被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的值为真,则条件表达式的

11、值为表达式2的值2.表达式1的值为假,则条件表达式的值为表达式3的值3.条件运算符的结合方向为“自右至左”4.条件运符优先于赋值运算符,低于关系运算符,例:y=69?2*6:18 则y=,P68 从键盘输入整数a与b,如果a2+b2大于100,则输出百位以上的数字,否则输出a与b之和。,#includemain()int a,b;printf(“please input a and b”);scanf(“%d%d”,2.8 C程序的类型转换,表达式中出现不同类型的数据时,系统将不同类型数据转换成同一种类型,才能进行运算。,1 自动转换,表达式的类型以最高类型为准。,两个float类型运算,先转

12、换成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转换成实型,再除以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的

13、值,习题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),总腿数为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备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号