




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计教学辅导(二)-第2章 数据类型和表达式主要内容: 一、数据类型 二、常量 三、变量 四、运算符 五、表达式 六、一些系统函数的使用一、数据类型1. C语言程序中使用的每个数据都要归属于一种数据类型如使用的人的年龄:int;姓名:字符串;体重:带小数的实数(单、双)。2. 数据类型有简单和复杂之分如描述人的单个属性的数据就是简单数据,属于简单数据类型,描述一个人的完整信息就需要把若个个简单数据组合起来,构成复杂(组合)数据,描述这种数据的类型属于复杂(组合)数据类型。3. 数据类型有系统定义和用户定义之分一般来说,简单类型有由系统定义好的,组合类型需要用户根据实际情况进行具体定义。例如整数型(int)、字符型(char)、实数型(float,double)等都是C语言系统已经定义的,用户可以直接使用;职工记录类型需要用户自己定义。4. 系统定义的数据类型分类 C语言数据类型:广义整数型、实数型、引申型、组合型、空类型 广义整数型:一般整数型、字符型、枚举型 一般整数型:标准整数型、短整数型、长整数型 标准整数型(int):每个数据占有4个字节的存储单元,即二进制的32位,可表示-231+231-1之间的带符号的十进制整数,或者表示0+232-1之间(0-4294967295)的无符号(正)的十进制正数。短整数型和长整数型可进行类似分析。 字符型(char):每个ASCII码字符数据占有1个字节,即二进制的8位,可表示ASCII代码表中的一个字符,每个字符对应的整数值在0+127之间。字符型还可以作为一个字节的整数看待,当规定为带符号字符型时,则表示-128+127之间的整数,当规定为无符号字符型时,则表示0255之间的整数。枚举型(enum):是用户自定义的一种简单的数据类型,该类型中的每个值需要在定义时具体罗列出来。例如:对三种颜色所定义的枚举类型:enum colorred, yellow, blue;其中color为该类型的标识符,后面花括号内的3个标识符red、yellow和blue为枚举值常量,分别对应红色、黄色和蓝色,对应的整数值分别为0、1和2。利用color类型标识符就可以定义一个变量,如“enum color x=blue;”语句就定义了x为color枚举类型的一个变量,并把一个枚举值blue赋给x,使x的值等于2。 实数类型:又分为单精度实数型(float)和双精度实数型(double)两种。单精度实数型(float):占用4个字节(即32位),其中用大约3个字节表示一个浮点数(定点数是一种特定表示)的尾数,用大约一个字节表示指数。如对于-0.18359105,则用3个字节存储尾数-0.18359,用一个字节存储指数5。双精度实数型(double):占用8个字节(即64位),其中用大约7个字节表示一个浮点数的尾数,用大约一个字节表示指数。如对于-0.18359105,则用7个字节存储尾数-0.18359,用一个字节存储指数5。两种实数类型的区别:由于双精度型数据占用的存储空间大于单精度型数据,所以双精度型能够表示更多的数字位数,通常单精度型只能表示7位有效数字,而双精度型能够表示16位有效数字。如3.2345671.2345的结果为12位有效数字,则必须用双精度型变量来存储。空类型(void):即无类型,通常用来定义函数的返回类型。当一个函数不需要返回任何值时,就把该函数定义为void类型。空类型也作为指针所指向的一种类型,待第5章介绍。 引申类型和组合类型:引申类型包括数组类型和指针类型,组合类型有结构类型(struct)和联合类型(union),在以后的相关章节中介绍。 一种数据类型对应一个类型标识符:若是系统定义的数据类型,则类型标识符就是一个保留字,若是用户定义的数据类型,则是用户对该数据类型所起的名字。 字符(char)、标准整型(int)、无符号标准整型(unsigned int)、单精度实数型(float)、双精度实数型(double)、空类型(void)等。使用一种数据类型就是使用它的类型标识符。二、常量C语言中的运算对象包括常量、变量、函数、表达式四种类别,而函数和表达式也是对常量和变量进行运算而得到的,所以说,最基本的运算对象是常量和变量。1 常量的表现形式常量又分为字面常量和标识符(符号)常量两种表现形式。字面常量的值就是字面本身,如25是一个字面整数常量,它的值就是25;标识符常量的值与字面本身不同,定义时需要为它赋值。如在C语言系统内定义有标识符常量NULL,它的值为0。2 字面常量字面常量又分为整数常量、实数常量和字符常量三种。 整数常量:有3种进制表示:十、八、十六进制十进制:第一个数字非0的正整数或负整数。如1、25、-100、3270八进制:第一个字符为0、第二个及以后为八进制数字0-7的整数。如023、074等,它们对应的十进制数分别为19和60。八进制数不带符号位,隐含为正数。十六进制:前两个字符为0x或0X,后为0-9, af或AF的整数,其中af或AF依次表示十进制数1015,如0x23、0Xa5等,它们对应的十进制整数分别为35和165。十六进制数不带符号位,隐含为正数。整数常量的类型:被系统认为是标准整型(int),若要后缀字母u则认为是无符号整型,若后缀字母l或L则认为是长整型。如25、25u、25L分别表示int、unsigned int、long int。 实数常量:只有十进制表示,又分为定点和浮点两种表示。定点表示:带小数点不带指数的常数表示。如12.0、-3.56、0.06等。浮点表示:既带尾数又带指数的常数表示,指数的底数10用字母e表示。如2.45e3、-30E-4、4.2e12等,它门在数学中称为科学记数法,分别对应为2.45103、-3.010-3和4.21012。规范化的浮点表示:若在尾数部分的小数点前只有一位不为0的数字,则为规范化的浮点表示。如3.05E-8、-6.3e4为规范的,而32.5e6为不规范的,若改写为3.25e7则变为规范的。实数常量的类型:实数又分为双精度型(double)和单精度型(float),默认为双精度型。若在其实数后面加上字符标记f或F则为单精度型。如2.54为双精度型,则2.54f则为单精度型。 字符常量:字符常量就是用单引号括起来的字符。字符有一般字符和转义字符之分,如a、5、+等属于一般字符,而n、0、075等属于转义字符,因为它们是以反斜线开始的。转义字符通常用来表示无法用字面表示的控制字符或特殊字符,如n表示换行符,对于的ASCII码为10,0表示ASCII码为0的字符。3 标识符常量用户可以通过3种方式定义标识符(符号)常量:(1)使用#define预处理定义命令 如: #define PI 3.14159 就把PI定义为标识符常量,该常量值为3.14159。 #define END -100 把END定义为标识符常量,其值为-100。 (2)使用const常量定义语句 如:const int M=10; /该语句定义M为一个标识符整型常量,其值为10。 const double PI=3.14159; /该语句定义PI为一个标识符双精度型常量, /其值为3.14159。 注意:使用const语句定义的标识符常量带有数据类型,比使用#define预处理命令要强,所以要尽量使用const语句定义常量,当然在有些地方只允许使用通过#define预处理命令定义的标识符常量,如数组的长度。 (3)在枚举类型中定义的每个枚举值都是标识符常量如:枚举类型定义:enum colorred, yellow, blue; 其中的枚举值red、yellow和blue都是枚举常量,又称标识符常量,其常量值分别为0、1和2。三、变量1 变量的概念在程序设计中,允许其值被改变的量叫做变量。如在一个程序中需要根据一个人的月收入来计算税金,每个人的月收入不同,因而其税金也不同,所以应当把月收入和税金分别设置为变量,当给月收入变量输入一个新值时,通过计算把对应的纳税额保存到税金变量中。在C语言中需要用一个标识符来表示变量,该变量应通过变量定义语句来定义,通过输入或赋值语句设置或改变它的值。2 变量定义语句 =,;在使用变量之前必须先进行定义。如要用变量r表示圆的半径,用s表示圆的面积,它们都应该是实数变量,假定采用双精度型,则对应的变量定义语句为double r,s; 若需要把一个整数变量i赋初值为0,给另一个整数变量p赋初值为1,则使用的变量定义语句为int i=0, p=1;下面在看一些变量定义和赋值的例子。int x, y, z; /定义x,y和z为整型变量x=5; y=8; /给x和y分别赋值为5和8z=x+y; /把x+y的值即13赋给整型变量zy=x+10; /把x+10的值15重新赋给y,当前y的值为153 在一个模块或复合语句内,变量定义语句在前访问该变量在后在程序中的一个摸块或复合语句内,所有变量定义语句必须在前面,后面是使用它们的表达式或语句,两者不能交叉。4 标识符常量定义语句const =, ; 实际上是在变量定义语句的前面加上const保留字,并必须给每个常量赋初值。如:const int M1=10, M2=50;就定义了M1和M2这两个常量,其值分别为10和50。5 使用变量和常量的程序举例 #include #define M -1 /符号常量中的字母通常采用大写 const int N=10; /把整型标识符常量N定义为10 void main() int x,y; printf(请输入一个整数:); /字符串中不含格式符,原样输出 scanf(%d,&x); /从键盘输入一个整数到x if(xN) y=M*x+1; /若x=N,计算y为(x+M)x-3 printf(x=%d, y=%dn,x,y);/串中含有原样输出和格式信息 程序运行后若从键盘上输入数值5,则得到的输出结果为: x=5, y=-4 若从键盘上输入的数值为20,则得到的输出结果为: x=20, y=377四、运算符1 运算符的概念就是对数据进行运算的符号。如要把两个数值数据加起来,就有加法运算符。这和数学上的运算符概念是相通的,但表示符号有的相同有的不同。2 运算对象运算对象就是参与运算的数据。例如3+5,3和5为运算对象,加号(+)为运算符。根据运算符所要求的运算对象的个数的不同,可以把运算符分类为单目、双目和三目运算符3种。一个运算对象叫单目,。如-5、x+6、a=(xy?x:y)。3 根据运算对象的类型分类算术运算符:+、-、*、/、%比较运算符:、=、!=逻辑运算符:&、|、! 赋值运算符:=、+=、-= 地址运算符:&、* 等等。4 运算符的优先级当一个算式中出现多个运算符时,谁先谁后,按什么次序进行,这就是运算符的优先级问题。运算符优先级高的先被计算,低的后被计算。C语言中的所有运算符,被划分为15个优先级,在教材第2章的表2-3中已明确列出,优先级编号越小表示优先级越高。如*、/运算符的优先级为3,而+、-运算符的优先级为4,所以加减运算的优先级低于乘除运算的优先级。5 运算符的结合性当同一优先级的运算符在一个算式中相邻出现时,是先算左还是先算右,这是由结合性所决定的。结合性分为从左向右和从右向左两种次序。如加、减法运算符是从左向右结合,赋值运算符是从右向左结合。如a+b-c、x+=y=6。6 常用运算符使用介绍l 双目算术运算符有+、-、*、/、%(取余)。如30/8=3,30%8=6,(double)30/8=3.75,-30/4=-7,-30%4=-2,4.5*2/10=0.9运算结果值的类型:同类型的结果同类型,不同取精度高者的类型。l 赋值运算符能够把一个值赋给一个变量或通过运算后赋给一个变量。赋值运算符分为一般赋值运算符和复合赋值运算符两类。如a=4;b=5; a+=3和a*=b-2相当于a=a+3和a=a*(b-2)。 /a=21l 增1(+)和减1(- -)运算符:单目运算符前增1:+i, 先增后求值,若i=5,计算结果和i值均为6。前减1:-i, 先减后求值,若i=5,计算结果和i值均为4。后增1:i+, 先求值后增,若i=5,计算结果为5,i值为6。后减1:i-, 先求值后减,若i=5,计算结果为5,i值为4。如x=2;y=3; z=x+*-y; z为4。若z=+x*y-; z为9l 求类型或数据长度运算符sizeof它是一个标识符形式的运算符。如sizeof(int)=4,sizeof(char)=1,sizeof(-30)=4,sizeof(2.5)=8l 强制类型转换运算符 ()如(float)3/2=1.5f,(int)34.8=34,(float)(3/2)=1.0fl 关系(比较)运算符共6个:, =, , 4为真,结果为1,30为真,x=4为假。关系表达式:由关系运算符连接而成的式子。如x+5=y-z。优先级:=、!=优先于、=、y,相反式x4、a3 & x8)与(x=8)等价。如(g=1 | g=2)与(g!=1 & g!=2)相反。l 条件运算符(?:) ? : 它是三目运算符,如:xy? z=x: z=y; z=(xy? x:y);l 逗号运算符 , , ;从左到右相继计算每个表达式的值,最后一个表达式的值就是整个逗号表达式的值。如a+,b+,c-; 若a=2,b=3,c=4,则运算结果为4,运算后a,b,c的值分别为3,4,3。l 圆括号运算符() 括号内运算优先进行,即先算括号内,后算括号外。如x/(y+2)。圆括号也作为函数调用运算符和求类型长度运算符。如f1(x),(int)-5.4=-5。五、表达式l 定义:由操作数和运算符进行有效连接而成的式子。单个操作数是最简单的表达式。如x、x+y、x5、a5 & b=10等都是有效的表达式。l 分类:数值表达式、关系表达式、逻辑表达式、指针(地址)表达式。如x*y-1、a!=5、x=3 | x=10、&x+2l 表达式运算按照每个运算符的优先级和结合性进行。一般来说,逻辑非、取负、增1、减1等运算优先于算术运算,算术运算优先于关系运算,而关系运算又优先于逻辑与、或的运算,优先级最低的是直接赋值和各种复合赋值运算。4*a+2/x-5 /*,/,+,-x0 & y=10 | 2*a,=,&,*,=60的值视y的值而定。六、一些系统函数的使用l 函数的概念能够实现独立功能的一个程序模块,它带有名称和参数,并通过它调用执行。如在一个程序中,可以把求n个常数的平均值编写为一个函数,假定函数名为Average,n个常数假定被保存在数组a中,则通过函数名Average和参数a的调用就可以直接得到a中n个常数的平均值。l 系统函数和用户函数对于一般用户在软件开发中都需要用到的函数,可以把它们编写出来后放到C语言系统软件中,提供给所有人使用。C语言系统当中的系统函数就是如此产生的,它包含有几百个函数之多,涉及到数据输入输出、字符处理、数学计算、日期和时间、动态存储分配等许多方面。当没有系统函数可供使用,用户还可以编写出自己的函数,供自己的程序调用,这种称为用户函数。l 常用的系统函数C语言的所有系统函数,可以通过相关的资料查阅得到,这里只介绍一些常用的系统函数,其中多数为数学函数。如教材第2章的表2-6所示。l 数学函数(math.h)绝对值abs(x)或fabs(x)、正弦sin(x)、余弦con(x)、正切tan(x)、平方根sqrt(x)、自然指数exp(x) ex e=2.718282、幂pow(x,y) xy、自然对数log(x) lnx、向下取整floor(x)、向上取整ceil(x)等。如abs(-12)=12、fabs(-3.26)=3.26、sqrt(36)=6.0、pow(2,5)=32.0等。floor(4.6)=4.0、ceil(4.6)=5.0、floor(-4.6)=-5.0、ceil(-4.6)=-4.0函数返回值类型:abs(x)为int,其余为double。使用的系统头文件:math.h #inc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国际商法国际贸易术语模拟试题
- 环保行业表格-
- 自然灾害频发背景下的防汛应急管理需求变化
- 生物技术成果转化合作协议
- 社会实践与实习机会的多元化发展策略
- 设备使用情况表格-设备维护保养
- 历史与文化背景下的跨文化交际题集
- 中医医院发展现状及面临的主要挑战
- 高职院校创新创业教育与专业课程融合分析
- 2025年艺术治疗师考试试题及答案详解
- 电缆径路图信号工程施工课件
- 浙江省杭州市2023-2024学年高一下学期6月期末考试语文试卷(含答案)
- 北京化工大学研究生课程-碳材料工艺学第一讲
- 大学语文试题及答案河北
- 高处安装维护拆除作业培训
- DB61∕T 1914-2024 煤矿安全风险分级管控和隐患排查治理 双重预防机制建设与运行规范
- 行政事业单位内部控制工作中存在的问题与遇到的困难
- 体检中心质量控制指南
- 人工智能在医疗器械中的应用-全面剖析
- 智慧农旅综合体项目可行性研究报告(参考范文)
- 四川2024年11月四川南充市人民政府办公室遴选(考调)工作人员3人国家公务员考试消息笔试历年典型考题(历年真题考点)解题思路附带答案详解
评论
0/150
提交评论