




已阅读5页,还剩120页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计与实践,目录第2章数据类型、运算符与表达式2.1概述2.2基本概念和预备知识2.3整型(int)2.4实型(float和double)2.5字符类型(char)2.6字符串2.7数据类型转换2.8几种特殊算术表达式,2.9关系运算符和关系表达式2.10逻辑运算符和逻辑表达式2.11条件表达式2.12本章小结,第2章数据类型、运算符与表达式2.1概述C语言的数据结构是通过数据类型来表现的,数据类型直接对应着数据的存储形态,因此,在C程序设计中对于用到的所有数据都必须指定其数据类型。本章主要介绍C语言中最常用的基本数据类型,各类型中的常量与变量,以及算术、赋值、逗号等运算符及其相应的表达式。掌握C语言数据类型,熟悉定义整型、实型、字符型变量,以及对其赋值的方法。掌握C语言算术运算符、赋值运算符、逗号运算符以及这些运算符的表达式。要注意运算符的优先级与结合性,特别注意自增、自减运算符的使用。2.1.1程序语言中数据的作用一个程序应包括以下两方面内容:,(1)对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(datastructure)。(2)对操作的描述。即操作步骤,也就是算法(algorithm)。数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。著名计算机科学家沃思(NikiklausWirth)提出一个公式:程序数据结构算法。实际上,一个程序的开发除了以上两个主要要素之外,还应当包括采用结构化程序设计方法进行程序设计,即确定数据结构、算法、编码、在计算机上调试程序、整理并写出文档资料。并且用某一种计算机语言表示对于该语言程序开发的工具环境等。以上几个方面是一个程序设计人员所应具备的,知识。在设计一个程序时要综合运用这几方面的知识。2.1.2数据类型及其作用数据是程序加工、处理的对象,也是加工的结果,是程序设计中所要涉及和描述的主要内容。程序所能够处理的基本数据对象被划分成一些集合。属于同一集合的各数据对象称为数据类型。每一数据类型都具有同样的性质,例如对它们能够做同样的操作,它们都采用同样的编码方式,占用同样大小的存储空间等等。计算机硬件把被处理的数据分成一些类型,例如整数、浮点数等。CPU对不同的数据类型提供了不同的操作指令,程序语言中把数据划分成不同类型与此有密切关系。在程序语言中,数据类型的意义还不仅于此。,所有程序语言都是用数据类型来描述程序中的数据结构、数据表示范围、数据在内存中的存储分配,以及对于数据允许的操作等。实际上,数据类型是计算机领域中一个非常重要的概念,可以说是计算机科学的核心概念之一。2.1.3C语言中的数据类型算法处理的对象是数据,而数据是以某种特定的形式存在的(例如整数、实数、字符等形式)。所谓数据结构指的是数据的组织形式。例如,数组就是一种数据结构。处理同一类问题,如果数据结构不同,算法也会不同,数据结构直接对算法有直接影响。例如,对10个整数排序和对由10个整数构成的数组排序的算法是不同的。因此,在考虑算法时,必须先考虑到数据结构。实际上,应当综合考虑数据结构和算法,选择最佳的数据结构和算法。,C语言的数据结构是以数据类型形式出现的。C的数据类型如图21所示。在本章中主要介绍基本数据类型中最常用的一些类型。图21C语言数据类型,2.2基本概念和预备知识2.2.1标识符1.标识符的作用在程序中使用的常量名、变量名、函数名、标号等统称为标识符。除保留字和库函数的函数名由系统定义外,其余都由用户自定义。C语言的保留字是语言本身保留下来,有特殊用途的一些单词,例如:if、for、int、float、long等。2.C程序中标识符的命名规则C语言规定,标识符只能是字母(AZ,az)、数字(09)、下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。以下的各标识符是合法的:,a,x,_3x,BOOK_1,sum5以下的各标识符是非法的:3s(以数字开头)s*T(出现非法字符*)3x(以减号开头)bowy1(出现非法字符减号)在使用标识符时还需要注意以下几点:(1)标准C不限制标识符的长度,但它受各种版本的C语言编译系统限制,同时也受到具体机器的限制。例如在某版本C系统中规定标识符前八位有效,当两个标识符前八位相同时,则被认为是同一个标识符。,(2)在标识符中,大小写是有区别的。例如BOOK和book是两个不同的标识符。(3)标识符虽然可由程序员随意定义但是在命名时要尽量贴近应用场合,不要太随意。3.标识符分类:(1)关键字:C语言规定了一批标识符,他们在C语言中代表着固定的含义,不能另做它用。比如:autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatorgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile,(2)预定义标识符:C语言语法允许用户把这类标识符另做它用,但是这些标识符将失去系统规定的原意。比如:printfdefine(3)用户标识符:由用户根据需要定义的标识符称为用户标识符。2.2.2常量常量为可以直接在程序中使用的数据。有数值型常数,如:3、100、3.14;字符常量,如:A、a、#、;字符串常量,如:hello。常量可以直接应用于表达式或函数调用中。例如:i10;a1.4b*0.5;kmax(i,20);printf(”hello”);,2.2.3符号常量在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。符号常量与变量不同,它的值在其作用范围内不能改变,也不能再被赋值。符号常量在使用之前必须先定义,其一般形式为:#define标识符常量其中#define也是一条预处理命令(预处理命令都以”#”开头),称为宏定义命令(在后面预处理程序中将进一步介绍),其功能是把该标识符定义为其后的常量值。一经定义,以后在程序中所有出现该标识符的地方均代之以该常量值。例2.1符号常量的使用。,#include#definePRICE234500/定义价格常量voidmain()intnumber,total,discount;number150;totalnumber*PRICE;/引用PRICE计算总量/*引用PRICE计算折扣量*/,discountnumber*PRICE*0.15;printf(”total%dn”,total);printf(”discount%dn”,discount);程序运行结果:图22例2.1的运行结果一般习惯,符号常量名用大写,变量名、函数名等用小写,以示区别。使用符号常量的好处是:,(1)使用符号常量使程序中的常量含义清楚,例如PRICE比234500含义清楚;有时在一个程序中,相同的常量可能表示不同的含义,如:整数100,可能代表学生数,也可能代表学生成绩,还可能代表图书价格等,在复杂的程序中经常会出现这种情况,而通过使用符号常量,就可以很好地提高了程序的可读性;(2)在需要修改符号常量时,只需要修改定义即可,例如修改234500时,程序中所有PRICE会随着变化,即“一改全改”。2.2.4变量1.什么是变量简单说来,在程序运行中,其值可以改变的量称之为变量。每个变量都包含变量的名称、变量的值(当前值)、变量的类型和变量的地址等属性。,2.变量的命名规则变量名是标识符很重要的一种应用。它的命名规则遵从标识符的命名规则,但是,要注意,C语言的保留字和库函数名字,不能作为变量名来使用。下边几个变量名字是非法的:M.D.JohmMYM123含有非法字符int、float与关键字重名sin、cos与函数名重名#55以#开头bd出现非法字符变量的命名应注意的事项:,(1)习惯上变量名采用小写字母表示;(2)由于C语言规定大小写是有区别的,因此sun和SUN是两个不同的变量名;(3)采用“见名知义”的变量名,以增加程序的可读性。例如:name表示姓名,day表示日期。3.变量的定义C语言系统要求,在其环境里运行的每个变量都必须预先定义,也就是说,首先需要声明一个变量的存在,才能够使用它。要定义一个变量需要提供两方面的信息:变量的名字和类型,其目的是由变量的类型决定变量的存储结构,以便使C语言的编译程序为所定义的变量分配存储空间。定义格式:,类型说明符变量1,变量2,;其中,类型说明符必须是C语言中的一个有效的数据类型,如整型类型说明符int、字符类型说明符char等。例如:inti,j,k;/说明i,j,k为整型变量charcc;/说明cc为字符变量floatx,y;/说明x,y为浮点型变量变量的定义应注意的事项:(1)凡未被事先定义的,都不能作为变量名使用,这就提高了程序的正确性。如声明部分有“intstudent;”在语句体中却写成“statent70”,则程序编译时会报错,提示标识符statent没有说明。,(2)每一个变量被指定为一确定类型,在编译时将为其分配相应的存储单元。(3)程序运行时,系统根据变量类型检查该变量的运算是否合法。例如整型变量a和b,可以进行求余运算:表达式a%b,当a,b都为整型数据时才能正常运行,否则会给出有关“出错信息”。(4)在C语言程序中,允许在定义变量的同时,为该变量赋一个初始值,也称为变量的初始化。例如:inta3;floatf3.56;charca;也可以使一部分被定义的变量赋初值。例如:,inta,b,c5;/仅对于变量c赋了初值。如果对几个变量赋予初值3,不能写成:intabc3;应写成:inta3,b3,c3;变量获取值的几种方式变量可以通过多种方式获得值,例如想要使整型变量i得到数值10,可用如下方法:变量的初始化,如:inti10;通过输入函数,使变量获得输入的值,如:,scanf(”%d”,/定义整型变量iintm,n,i1,i2,i3;/定义整型变量m,n,i1,i2,i3inti100,j500;/定义整型变量i、j并分别赋初值100、500,2.整型变量的引用例如:i15;/给变量i赋以整数15i;/变量i值增1sumsumi;/变量sum的值与变量i的值相加以后的结果,送入变量sum中。3.int型变量保存数据的范围int型变量保存数据的范围与编译系统为int型变量分配的字节大小直接相关。在TurboC2.0开发环境中int型数据被分配2个字节,可以表示从32768到32767范围内的整数值。,在VC6.0开发环境中int型数据被分配了4个字节,可以表示从2147483648到2147483647范围内的整数值。例2.3显示int型变量所占的字节数。#includevoidmain()printf(”thebytesofthevariablesare:n”);printf(”int:%dbytesn”,sizeof(int);程序运行结果为:,图23例2.3的运行结果这里使用的sizeof()不是函数,是运算符。sizeof(x)作用是计算x在内存中所占字节数,x可以是常量、变量、类型标识符等。4.int型数据的溢出在C运行环境中,一个整型变量只能容纳一定范围内的数,如果超出范围就发生“溢出”,但运行时不报错。例如:在VC环境中,默认的一个整型变量为四个字节,即一个整型变量只能容纳21474836482147483647(,2312311)范围内的数,无法表示大于2147483647或小于2147483648的数,遇此情况就发生“溢出”,但运行时不报错。例2.4VC环境下,整型数据的“溢出”#includevoidmain()inta,b;a2147483647;,ba1;printf(”BFQna%d,a1%dn”,a,b);a2147483648;ba1;printf(”BFQna%d,a1%dnn”,a,b);程序运行结果为:图24例2.4的运行结果,2.3.3运算符和表达式对于整型数据可以使用的算术运算符有:(负号)、(加号)、(减号)、*(乘号)、/(除号)、%(取余)。注意,在程序中已经定义了的两个整数,相除的结果仍为整数型。例如:7/3的结果为2,8%3结果为2,8%3结果为2,8%3结果为2,8%3结果为2。对于整型数据的其他运算符,如:关系运算符等,将在以后的有关章节中介绍。2.3.4输入整型数据的输入主要采用格式输入函数scanf()。例如:,inta,b,c;scanf(”%d%d%d”,/定义整型变量a、b、c、d、ea30;b2;c10;d15;/a、b、c、d分别赋初值cac;dbd;ea*b;/把ac,bd,a*b的值分别赋给变量c,d,eprintf(”ac%d,bd%d,a*b%dn”,c,d,e);/输出变量c、d和e的值程序运行结果:,图25例2.5的运行结果,2.4实型(float和double)实数型数据,简称为实型,分为单精度实型(float)、双精度实型(double)和长双精度型(longdouble)三种,本章主要介绍float和double,longdouble将在第十章介绍。2.4.1常量一、实型常量的表示方法实数又称浮点数。实数有两种表示形式:(1)十进制小数形式。它由数字和小数点组成。例如:.123、123.、123.0、0.0都是十进制小数形式。(2)指数形式。如123e3或123E3都代表123103。字母e或E之前必须要有数字,且字母e或E后面的指数必须为整数,字母e或E的前后及数字之间不,得有空格(实型变量也遵守这个规则)二、实型常量的类型在许多C编译系统中,不分单、双精度实型常量都作为双精度型实数来处理,这样可以保证较高的精度。也可以在实数的后面加字符f或F,如1.65f、654.87F,使编译系统按单精度型处理实数。2.4.2变量1.实型变量的定义实型变量定义有两种形式,分别表示单精度实型和双精度类型,它们的一般形式为:float变量名列表;,double变量名列表;例如:floatfx,fy,fz;/定义单精度实型变量fx,fy,fzdoubledx,dy,dz;/定义双精度实型变量dx,dy,dzfloatx3.6,y4.8;/定义单精度变量x、y并分别赋初值3.6、4.82.变量的引用例如:f15.0;/给变量f赋以实数15.0sumsumf;/变量sum的值与变量f的值相加以后的结果,送入变量sum中。fabs(ab)、aa1;ba;相当于aa1;ba;ba;相当于ba;aa1;ba;相当于aa1;ba;说明:(1)使用和表达式可以使整个程序简化,但其只能用于变量,不能用于常量和表达式。(2)i和i在表达式中多次出现时,在表达式中每出现一次,则相当于多增加一条自增或自减的语句。(3)尽量不要在输出函数的实参表中使用和赋值表达式,在不同系统版本之间会有一些区别。例如下列程序段:,inti1;printf(”%d,%d,%dn”,i,i,ii);的执行结果与输出列表的计算顺序密切相关,与编译程序直接相关,本书程序调试采用VC6.0。“例如:i2;ai;结果:a2;i3;因为相当于:i2;ai;ii1;i2;ai;结果:a3;i3;因为相当于:i2;ii1;ai;”和”思考:main(),inti,j,m,n;i8;j10;mi;nj;printf(“%d,%d,%d,%d”,i,j,m,n);”2.8.3逗号运算符逗号运算符又称顺序运算符。在C语言程序中逗号“,”也是一种运算符。主要用于将若干表达式“串联”起来,表示一个顺序的操作(计算),一般情况下,使用逗号表达式的目的只是想分别得到各个表达式的值,而并非一定需要得到和使用整个逗号表达式的值。,逗号运算符的使用形式:表达式1,表达式2,.表达式n逗号表达式的求解过程:自左向右,求解表达式1,求解表达式2,求解表达式n。整个逗号表达式的值是表达式n的值。例2.13逗号运算符的使用#includevoidmain()inta6,b3,c8,y;y(ab,bc);,printf(”y%dn”,y);运行结果:图215例2.13的运行结果本例中,整个逗号表达式的值也就是表达式2的值,程序将整个逗号表达式的值11赋于y。使用逗号表达式还需要注意以下三点:(1)程序中使用逗号表达式,通常是要分别求逗号表达式内各表达式的值,并不一定只是为了计算逗号表达式的值。例如:,y(xx3,y2);(2)逗号表达式一般形式中的表达式1和表达式2也可以又是逗号表达式。例如:表达式1,(表达式2,表达式3)形成了嵌套情形。因此可以把逗号表达式扩展为以下形式:表达式1,表达式2,表达式n整个逗号表达式的值等于表达式n的值。(3)并不是在所有出现逗号的地方都组成逗号表达式,很多情况下,逗号仅用作分隔符,函数参数表中逗号只是用作各变量之间的间隔符。例如inta,b,c;中,如声明变量时的逗号,作用只是分隔符。例2.14声明变量时,逗号只是分隔符,#includevoidmain()inta6,b3,c8,x,y,z;y(xab,(za*c,bx);printf(”y%d,x%d,z%dn”,y,x,z);,图216例2.14的运行结果,2.9关系运算符和关系表达式关系运算符共有六种,分别是:(大于)、(大于或等于)(等于)、!(不等于)关系运算符使用的优先次序:(1)前4种关系运算符的优先级别高于后两种。(2)关系运算符的优先级低于算术运算符,但高于逻辑运算符。(3)关系运算符的优先级高于赋值运算符。例如:cab等效于c(ab),abc等效于(ab)cabc等效于a(bc)关系表达式用关系运算符将两个表达式(可以是算术、关系、逻辑、赋值、字符表达式)连接起来的式子,称关系表达式。例如:ab,abbc,(a3)(b5),ab)(bc)。关系表达式的值是一个逻辑值,即“真”或“假”。以“0”代表“假”,以非“0”的数值表示“真”。例如判断字符c的属性可以进行如下判断:,ab)|(nab);”是把左边ab的结果赋给变量m,把右边ab的结果赋给变量n,最后把(mab)|(nab)的结果赋给变量x。计算过程如下:先计算左边ab成立,即结果为1,变量m1;既然|左边已取值真,于是就不再去计算|右边,而直接把逻辑值1赋给变量x。所以,变量n仍保持初值3。重要建议:如果不是非常有把握,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版推土机租赁与工程进度保证协议
- 2025年大宗货物运输集装箱清洗与消毒服务合同
- 2025版网约车司机信用保证合同实施细则
- 2025版绿色环保瓦工班组工程承包协议
- 2025年度水暖工程设计与施工一体化服务合同范本
- 2025版冷链送餐配送合同书
- 2025年工业互联网在新能源行业安全生产中的应用报告
- 2025房地产项目财务顾问与项目后期运营协议
- 2025版教育培训商标使用权转让协议
- 文物数字化展示与传播策略在文化遗产数字化展示中的虚拟现实技术应用报告
- 微生物发酵中药研究进展
- 《矿业权评估指南》
- 机动车维修竣工出厂合格证样式
- 广东省地质灾害危险性评估报告
- 整套教学课件《现代心理与教育统计学》研究生
- 手机拍照技巧大全课件
- RBA(原EICC)ERT应急准备与响应培训课件
- 工业建筑钢筋工程监理实施细则
- 河西走廊课件
- 2023版北京协和医院重症医学科诊疗常规
- 人工膝关节置换术护理查房
评论
0/150
提交评论