版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章数据运算与输入输出
本章主要内容:运算符和表示式概述算术运算符和算术表示式赋值运算符和赋值表示式 关系运算符和关系表示式逻辑运算符和逻辑表示式条件运算符和条件表示式逗号运算符和逗号表示式数据类型转换数据输入、输出3.1运算符和表示式概述运算(即操作)是对数据加工,被运算对象——数据称为运算量或操作数。一个表示式包含一个或多个操作,操作对象称为操作数,而操作本身是经过运算符(也称操作符)表示。表示式:用来计算值式子.一个表示式由运算符和运算对象组成.C语言运算符按其功效分类:算术运算符、关系运算符、逻辑运算符、逗号运算符、位运算符、赋值运算符等。运算对象:常量,变量,函数,表示式.C语言提供有丰富运算符,组成各种表示式,主要有:算术表示式、赋值表示式、关系表示式、逻辑表示式、条件表示式、逗号表示式。
3.2算术运算符和算术表示式3.2.1算术运算符1.基本算术运算符:+-*/%(求余)说明:(1)/(除运算):若参加运算对象为两个整数,结果仍为整数.(向下取整,不进行四舍五入).若其中之一为负数,则结果视机器系统而定,但多数采取“向零取整”.(2)%(求余运算):要求参加运算数据均为整数.2.自增自减运算符:使变量值增加一个单位或降低一个单位。算符:++自加--自减使用方法:
++i;--i;前置运算:在使用i之前,先使i值加1或减1.i++;i--;后置运算:先使用i值,再使i值加1或减1.例:inti=2,j;j=++i;j=i++;注::(1)++,--运算符只能用于变量,不能用于表示式.
例:++55++(a+b)++均为错误表示式.(2)++和--结合方向是自右至左,其优先级高于加、减、乘、除,与负号属同一优先级。例:intj=5,k;k=-j++;(3)前置和后置要使用正确。假如仅是为了对变量值进行加1或减1,那么语句i++;与++i;效果一样,语句i--;与—i;效果一样。当自加和自减运算出现在表示式中时,前置和后置运算效果不一样;【例3.1】自增、自减运算符前置、后置形式差异程序示例。#include<stdio.h>intmain(void){intk,x,y;k=10;x=k++;y=++k;printf("k=%d,x=%d,y=%d\n",k,x,y);k=10;x=--k;y=k--;printf("k=%d,x=%d,y=%d\n",k,x,y);return0;}3.算术运算符优先级与结合性(1)二目运算符:乘(*)、除(/)、求余(%)优先级相同,高于加(+)、减(-);结合方向为“自左至右”,即先左后右。(2)一目算符:负(-)、自增(++)、自减(--)优先级相同,高于二目运算符加(+)、减(-)、乘(*)、除(/)、求余(%);结合方向为“自右至左”,即先右后左。3.2.2算术表示式
用算术运算符和括号将运算对象(常量、变量和函数等)连接起来、符合C语言语法规则式子,称为算术表示式。如:
3+a*b/2-1.5+'a'【例3.2】程序示例。#include<stdio.h>intmain(void){inta=3,b=8,c=2,d;d=a+b*-c;printf("d=%d\n",d);return0;}3.3赋值运算符和赋值表示式赋值运算符:=
使用格式:变量名=表示式
如:a=3,r=x%y
注:赋值运算符左边只能是变量名或变量地址,右边能够是变量名、常量、函数、可求值表示式。例:inta=3a=a+32.赋值运算符优先级及结合方向赋值运算符(包含下面将要讲复合赋值运算符)优先级低于算术算符优先级,结合方向是右结合,即从右至左进行运算。3.赋值表示式
(1)由赋值运算符将一个变量和一个表示式连接起来式子称为赋值表示式。它普通形式为:<变量><赋值运算符><表示式>(2)在赋值表示式普通形式中,表示式仍能够是一个赋值表示式
。赋值表示式值是被赋值后变量值。例:inta,b,c;a=(b=3)a=b=c=8a=5+(c=6)a=(b=10)/(c=2)4.复合赋值运算符:+=-=/=*=%=a+=3a=a+3a-=10a=a-10a*=y+6a=a*(y+6)a/=b+5a=a/(b+5)a%=b-6a=a%(b-6)例:(1)求以下表示式中a值
a=b=c=5a=(b=4)+(c=6)a=(b=10)/(c=2)(2)若a=12,求
a-=a*aa+=aa+=a-=a*aa+=a-=a*=a注:赋值运算符优先级低于算术算符优先级.3.4关系运算符和关系表示式
3.4.1关系运算符1.关系运算符、优先次序及结合方向
关系运算符:<(小于)<=(小于等于)
>(大于)>=(大于等于)==(等于)!=(不等于)优先次序:①<,<=,>,>=优先级相同②==,!=优先级相同,且低于前四个算符③关系算符优先级低于算术算符,高于赋值算符优先级.④结合方向为自左至右,即同级关系运算自左至右算。2.关系表示式:用关系运算符将两个C语言正当表示式连接起来式子.例:a>b,a+b>b+c,(a=3)>(b=5)‘a’<‘b’,(a>b)>(b<c)3.关系表示式值:当关系表示式成立时,即为真时关系表示式值为1,不然其值为0.即1代表真,0代表假.例:inta=3,b=2,c=1;例:inta=3,b=2,c=1,d,f;a>3值:d=a>bd值:a>b值:f=a>b>cf值:(a>b)==c值:a==b<c值:0110103.1逻辑运算符和逻辑表示式1.逻辑运算符及其优先次序逻辑算符:&&逻辑与||逻辑或!非运算规则:设有a,baba&&ba||b!a真真假假真真假假真假假假真真真假假假真真逻辑算符优先次序及结合方向
:①!(非)→&&(与)→||(或)②逻辑运算符中“&&”和“||”低于关系运算符,“!”高于算术运算符。③&&、||结合方向为自左至右,即同级逻辑运算自左至右算,!(非)结合方向为自右至左。例:inta=2,b=2,x=4,y=5;(a>b)&&(x>y)a>b&&x>y(a==b)||(x==y)a==b||x==y(!a)||(a>b)!a||a>b2.逻辑表示式逻辑表示式:由逻辑运算符连接起来C正当式子。逻辑表示式值:是一个逻辑量“真”或“假”。C语言编译系统在给出逻辑运算结果时,以数值1代表“真”,以0代表“假”,但在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”。即非0即“真”。例:inta=2,b=3;a&&b!a5>3&&8<4-!0‘a’&&’b’aba&&ba||b!a注:在逻辑表示式求解中,并不是全部逻辑运算符都被执行:例:inta=1,b=1,c=1;求:
(1)a&&b&&c(2)--a&&--b&&--c(3)++a||++b||++c(4)--a||--b||--c非0非000非0非000100011100011对逻辑运算符说明(逻辑运算中“短路”现象):⑴&&、||其运算对象可为基本型和指针型,操作数值为0是假,非0是真,它们两个运算对象不一定是同类型。⑵运算次序:&&、||运算次序严格按从左至右,两个操作数位置不可交换。⑶&&、||运算特点:与(&&)运算若左操作数为0,则不计算右操作数;或(||)运算若左边操作数不为0,则不计算右边操作数。例:若x=y=z=-1,则以下表示式运算结果及x,y,z值分别是什么?①++x&&++y&&++z②++x&&++y||++z③++x||++y&&++z④++x||++y||++z
作业:1.若x=y=z=0,则以下各式运算后x,y,z值及表示式值。①++x&&++y&&++z②++x&&++y||++z③++x||++y&&++z④++x||++y||++z2.若x=2,y=1,z=0,则表示式x||!y&&++z值;
若x=0,y=0,z=0,则表示式x||!y&&++z值;3.6条件运算符和条件表示式格式:表示式1?表示式2:表示式3说明:①条件运算符运算次序:先求解表示式1,若为非0(真),则求解表示式2,此时表示式2值就作为整个表示式值,不再求解表示式3值;若表示式1值为0(假),则求解表示式3值,表示式3值作为整个表示式值,不再求解表示式2值.
例:inta=1,b=1;a=(a>b?++a:++b);②条件表示式能够嵌套,即一个条件表示式又能够与另一个条件表示式组成一个新表示式。如:
max=a>b?a:c>d?c:d
条件运算符结合方向为“自右至左”,但运算次序自左至右。③条件运算符优先级高于赋值运算符,但低于关系算符、逻辑算符和算术算符优先级。例:输入一个字符,判断它是否大写,假如是将它转换成小写字母,假如不是不转换,然后输出最终得到字符。
c=(c>='A'&&c<='Z')?(c+32):c;3.7逗号运算符和逗号表示式在C语言中逗号在以下几个情形下出现:(1)逗号作分隔符,如用于说明语句中变量标示符之间.intj,k;(2)作为运算符,组成逗号表示式,其普通形式:
表示式1,表示式2,表示式3说明:①逗号表示式求解次序:按自左至右次序求表示式值,整个表示式值为最右边表示式值.如:k=10,f=50.1f=50.1,k=10
②逗号表示式中表示式能够是算术表示式,也能够是赋值表示式,如(a=3),a*4(x=8*2,x*4),x*2
③逗号运算符优先级最低,低于其它全部运算符.例:求以下表示式值:x=(a=3,6*a)x=a=3,6*a例:变量均为int型,值不等于7表示式为()(A)x=y=6,x+y,x+1(B)x=y=6,x+y,y+1(C)x=6,x+1,y=6,x+y(D)y=6,y+1,x=y,x+1例:main(){inta,b,c,d=5;a=(c=3,c*d);printf(“a=%d\tc*d=%d\n”,a,c*d);b=c=3,c*d;printf(“a=%d\tb=c=3,c*d=%d\n”,b,(b=c=3,c*d));}3.9数据类型转换
不一样类型数据进行混合运算时要考虑以下问题:运算符优先级。运算符结合方向。数据类型转换。3.9.1自动转换规则
不一样数据类型数据在赋值时类型转换规则是“就左不就右”,即将赋值运算符右边表示式数据转换成左边变量数据类型,然后进行赋值。比如:
inta:floatb;b=2/3;a=5.0/2.0;(2)在同一表示式中各数据类型不一样,编译程序会自动进行以下方式,将不一样数据类型转变成同一类型后再进行运算。转换规则如图3-3所表示:例:inti;floatf;doubled;longe;10+’a’+i*f-d/e①int②double③double④double⑤double在进行运算时,若一个算符两侧数据类型不一样,则需要进行转换为同一类型,转换规则:将两个不一样操作对象转换为占空间较大那种类型,以保不失精度.3.9.2强制转换
格式:(类型名)(表示式)注:(1)作用:将表示式强制转换为指定类型;(2)表示式:能够是单个变量或可求值表示式.例:inta=2;floatx,y=1.5;(double)a(int)(y+x)(int)y+xa=(int)y(float)(5%3)a%(int)ya%y3.10数据输入、输出C输入输出:C本身不提供输入输出语句,(在C中输入输出是由函数来实现.在C标准函数库中提供了一些输入输出函数如printf()scanf()等,它们不是C语句.)这么C在编译阶段不包括硬件,能够使编译简单,在连接阶段它们与源程序目标文件相连接,生成一个可执行目标程序,在执行阶段调用已被连接函数库中输入输出函数.在使用C语言函数时,要用预编译命令“#include”将相关“头文件”包含到用户源文件中.头文件:包含调用函数相关信息库函数名,标准输入输出函数相关信息在“stdio.h”中,若程序中调用输入输出函数应将:#include“stdio.h”或#include<stdio.h>放在程序开始.3.10.1字符数据输入输出1.字符输出函数putchar()
格式:putchar(c)
其中:c能够是字符型变量或整型变量或字符常量,
功效:向标准输出设备(通常是显示器或打印机)输出一个字符.例#include“stdio.h”main(){chara,b,c;a=‘B’;b=‘O’;c=‘Y’;putchar(a);putchar(b);putchar(c);putchar(‘\n’);putchar(‘A’);putchar(‘\101’);putchar(65);}2.字符输入函数getchar()格式:getchar()功效:从标准输入设备(通常是键盘)输入一个字符.例:#include“stdio.h”main(){charc;inta;c=getchar();putchar(c);a=getchar();putchar(a);}注:getchar()只能接收一个字符,该字符能够赋给字符变量或整型变量,也能够不赋给任何变量,作为表示式一部分.如putchar(getchar())3.10.2格式输出函数printf()
1.printf()函数最简单使用方法普通形式为:printf(要输出字符串常量);【例3.6】printf函数应用#include<stdio.h>intmain(void){printf("Thescoreofmyclassesare:\n");printf("No.\tName\tScore\n");printf("1\tLiPing\t495\n");printf("2\tLiuHua\t465\n");return0;}2.格式化输出数据
格式:printf(格式控制,输出表列)
例:printf(“max=%d”,c)功效:按照“格式控制字符串”中指定格式,将输出表列中诸项输出到标准输出文件中(通常指显示器)。其中:1)格式控制是双引号括起来字符串,包含两种信息:①由“%”和格式字符组成,如%d,%f,%c等,将输出数据转换成指定格式输出;②普通字符,需要原样输出字符.2)输出表列:要输出数据,能够是变量名,函数名,表示式例:inta=2,b=3;printf(“%d%d”,a,b);printf(“a=%db=%d”,a,b);格式字符:⑴d格式符:用来输出十进制整数.
d%d:按整型数据实际长度输出%md:按指定长度输出整型数据%ld:输出长整型数据⑵o格式符:以八进制形式输出整数o%o:按整型数据八进制实际长度输出%mo:按指定长度输出整型数据八进制形式%lo:输出长整型数据八进制形式x%x:按整型数据十六进制实际长度输出%mx:按指定长度输出整型数据十六进制形式%lx:输出长整型数据十六进制形式⑶x格式符:以十六进制形式输出整数⑷u格式符:以无符号形式输出十进制整数⑸c格式符:用来输出一个字符c%c:输出一个字符%mc:按指定宽度输出一个字符⑹s格式符:用来输出一个字符串s%ms%-ms%m.ns%-m.ns⑺f式符:以小数形式输出一个实数f%f:不指定宽度输出一个实数,整数部分原样输出,并输出6位小数%-m.nf:按指定宽度输出数据占m列,其中n位小数.假如数值长度小于m,则右端补空格.%m.nf:按指定宽度输出数据占m列,其中n位小数.假如数值长度小于m,则左端补空格.3.10.3格式输入函数scanf()1.scanf():从终端输入若干个数据.
格式:scanf(格式控制,地址表列)功效:从标准输入设备(通常是键盘)上,按照指定格式为指定输入项输入数据。其中:⑴格式控制字符串包含两种信息:①格式控制符:%d,%c,%f②普通字符:需要原样输入.⑵地址表列:由若干个变量地址组成.例:main(){inta,b,c;scanf(“%d%d%d”,&a,&b,&c);printf(“%d,%d,%d”,a,b,c);}2.格式说明符
%d:输入十进制整数
%o:输入八进制整数
%x:输入十六进制整数
%f:输入实数
%c:输入字符
%s:输入字符串3.scanf()使用方法⑴连续输入多个数据时,数据间用空格或回车键或Tab键分开;
例:inta,b;scanf(“%d%d”,&a,&b);⑵格式符前可加数字,指定输入数据所占位数.
例:inta,b;scnaf(“%2d%d”,&a,&b);
若输入:123456,a和b值分别是什么?
若输入:123456,a和b值分别是什么?例:main(){inta,b,c,d;scanf(“%2d%d”,&a,&b);printf(“%d\t%d\n”,a,b);scanf(“%2d%4d”,&c,&d);printf(“%d\t%d\n”,c,d);}⑶假如在%后有一个“*”,表示跳过它对应列数.例:scanf(“%2d%*3d%2d”,&a,&b);
若输入:1223467,a,b值分别是什么?⑷假如转换控制字符串中有普通字符,则输入数据时,要在与此相对应部分,输入与此相同字符例:scanf(“a=%db=%d”,&a,&b);
输入:a=123b=34scanf(“%d,%d”,&a,&b);
输入:23,784.使用scanf函数应该注意事项(1)在格式控制中,格式说明类型与输入项类型,应该是一一对应。(2)在scanf函数中格式字符前能够用一个整数指定输入数据所占宽度,但不能够对实型数指定小数位宽度。以下面scanf函数使用就是错误:scanf("%7.2f",&a);(3)在格式控制串中,格式说明个数应该与输入项个数相同。若格式说明个数少于输入项个数时,scanf函数结束输入,多出数据项并没从终端接收新数;若格式说明个数多于输入项个数时,scanf函数一样也结束输入。(4)当输入数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 民族音乐融入高校公共音乐教学的实施路径
- 电容器基础知识
- pwm电力电子课程设计
- 电气机械及器材相关行业投资方案
- 微元课程设计
- 区域性养老服务中心项目可行性研究报告
- 我们的粮食主题课程设计
- 全球化的中国品牌战略
- 【8道期末】安徽省池州市贵池区2023-2024学年八年级上学期期末道德与法治试题(含解析)
- 政府培训课程设计
- 2024年浙江杭州西湖云创集团有限公司招聘笔试参考题库附带答案详解
- (2024年)农作物病虫害绿色防控技术课件
- 2024锂电池的电极制备与组装方法
- 减速机维修培训课件
- 羽毛球社团工作总结
- 高三英语一轮复习七选五命题分析课件
- 安徽省合肥市庐阳区2023-2024学年三年级上学期期末数学试卷
- 以问题为导向的教学设计与实践
- 2024年大学试题(经济学)-流通经济学笔试历年真题荟萃含答案
- 氧气吸入法健康宣教
- 江苏省南京市建邺区重点中学2023-2024学年七年级上学期期末数学试题(含答案)
评论
0/150
提交评论