您好,欢迎访问三七文档
第三章C语言基础本章学习目标:掌握C语言的数据分类及基本类型数据的表示方法掌握变量的定义及使用掌握C语言数据的输入输出函数的使用掌握C语言基本的算术运算规则及运算优先级掌握最简单的文件数据的读写操作掌握C语言标准函数的使用方法3.1C语言程序3.1.1程序三件事:输入数据、处理数据、输出结果从一般意义上说,一个计算机程序通常需要接收从计算机外部输入的数据,然后对数据进行必要的加工处理,并将处理的结果以某种形式输出出来,有的计算机程序不需要输入数据,只产生并输出计算机处理的结果。使用计算机解决问题就是要将需要解决的问题转化成一个数据处理的问题,然后设计一个解决这种数据处理问题的算法,根据算法编写出计算机程序,然后再计算机上运行这个程序以便解决所需要解决的问题。图3-1给出了运用计算机程序的求解问题的基本方式。输入数据:把外部的数据借助于输入设备输入到计算机的内存。如键盘、鼠标、扫描仪等设备都是输入设备,因此如果要将数据从输入设备输入到计算机内存,必须清楚的知道是从什么设备输入,因为有多种设备都可以实现数据输入。有一种设备叫做标准输入设备,所谓标准输入设备指的是在进行输入时不需要特别指明的设备,即缺省认定的输入设备,在C语言中,标准输入设备是键盘。C语言的数据输入是利用C语言提供的标准函数实现的,这些函数不需要指出从什么地方输入,特指从键盘输入数据,3-7节介绍数据输入标准函数。处理数据:指程序对计算机内存中的数据进行必要的加工处理,得到数据处理所需的结果。常见的处理形式如计算、数据变换等,C语言中不光可以进行算术运算,还可以进行逻辑运算,与其他程序设计语言相比,C语言提供了更加丰富的运算,以适应不同的数据处理需要,能够进行更加丰富的运算显然显然可以给我们书写程序带来方便,但也为我们学习掌握带来了一定的困难,比如我们日常使用的加减乘除四则运算,运算的优先顺序只有两种,即先乘除后加减,在程序设计语言中运算的优先顺序称为运算优先级,而C语言提供了超过10种不同的运算优先顺序,在一个表达式中如果出现多种不同的优先级时,常常是容易出现混淆,关于运算的优先级,将在引入新的运算的时候加以介绍,3-4节介绍C语言的基本运问题设计算法编写程序运行程序问题的解图3-1运用计算机程序求解问题的方式算及其运算优先级。输出数据:将计算机内部的数据借助于输出设备输出到某个特定的输出设备中,程序的目的是处理数据,如果处理的结果只是存储在计算机内部而不一某种形式提供给人,那么数据处理就没有什么必要,除非我们不需要这些处理结果,我们最常见的需要时将结果显示出来或者将结果打印出来等等,在C语言中缺省的输出设备是显示器,即如果不加特别说明的话,输出数据是只将数据显示出来,实现数据输出在C语言中式通过C语言提供的标准函数实现的,3-6节介绍输出标准函数。3.2程序处理的数据3.2.1数据的含义如前所述计算机程序的基本任务就是处理数据,无论是数值还是文字、图像、图形、声音、视频等信息,如果要在计算机中处理的话,就必须将它们转换成所谓的数字信息,因为计算机中只能存储数字,甚至连计算机程序都是由数字组成的,所以在使用计算机程序解决问题的时候,首先需要把需要处理的信息数字化,即使用数码表示需要处理的信息,如果我们要处理图像信息,可以把一副图像可以看做是由m行n列的点组成的,每一个点是一种颜色,每一种颜色可以使用三个数据(R、G、B)来表示,R表示红色的比例、G表示绿色的比例、B表示蓝色的比例,这样就可以用3nm个数据表示一副图像了。再比如我们需要处理文字信息,比如英文,文字是由字母及一些标点符号组成的,我们可以将每一个符号用一个数字来表示,例如在ASCII编码标准中,用65表示字母“A”,用66表示字母“B”等等,只要把我们所使用的每个符号都进行编码(数字化),我们就可以在计算机中处理文字信息了,总之,不论什么信息,如果要使用计算机程序来处理的话,就必须进行数字化,即将它们转换成数字表示的形式,才能够在计算机中处理。如果我们使用C语言书写的程序处理数据,由于任何信息在计算机中都是以数据的形式存在的,表示数据的形式可能就多种多样,于是就出现了这样一些基本问题,在C语言可以使用那些种类的数据?每一种类型的数据的书写形式是怎样的?数据在计算机中存储在什么地方?数据如何进行加工处理?如何将数据输入到内存或者如何输出数据呢?本章的其余部分将详细讨论这些问题。3.2.2数据的种类C语言是一种计算机语言,是用来书写计算机程序的语言,而计算机程序是处理数据的,在大多数计算机语言中,数据是分类的,C语言的数据种类可以分为三类:基本数据类型、复杂数据类型和空类型三大类数据。基本数据类型的数据是指数据不能再进一步分解的数据,如172、36.5、’A’等都属于基本类型的数据,这些数据都不能再分解成其他的数据形式了,一个复杂数据类型的数据是由若干个其他类型的数据组成的,空类型是C语言的一种特别的数据类型,在函数和指针的章节中将讨论它的使用。C语言的各种数据类型如图3-2所示。1.整数类型数据整数类型数据是指没有小数点的数据,有小数点的就不是整数,这与我们日常使用习惯是不同的,12和12.0在C语言中是两个不同类型的数,基本整数数据类型的类型名是int,在定义变量的时候需要使用数据类型标识符,在C语言中,整数分成若干类,每种类型分别可以表示不同的数据范围,表3-1表示了整数的类别及对应的数值范围,需要说明的是,不同版本的C语言同一数据类型表示的数值范围可能是不同的,本书是以TURBO2.0为标准。表3-1整数数据的类型及数值表示范围类型数据类型名二进制位数数值范围基本整数[signed]int16-32768~32767即)12(~21515无符号整数unsignedint160~65535即)12(~016短整数[signed]short[int]16-32768~32767即)12(~21515数据类型基本数据类型复杂数据类型空类型整数实数字符枚举指针数组结构体共用体图3-2C语言数据类型无符号短整数[unsigned]short[int]160~65535即)12(~016长整数long[int]32)12(~23131无符号长整数unsignedlong[int]32)12(~032需要指出的是不同的数据种类是为了适应不同的数据处理的需要,但每种类型的数据都有数值表示范围,在本书中我们绝大多数情况都使用基本整数类型的整数(int类型)。2.实数类型数据实数就是带小数点的数,而且书写程序时实数必须有小数点,TURBOC中,实数由三类:单精度实数、双精度实数、长双精度实数。表3-2实数数据的种类及其数值表示范围类型数据类型名二进制位数有效数字数值范围单精度实数float326~73838104.3104.3x双精度实数double6415~16308308107.1107.1x长双精度实数longdouble12818~1949324932102.1102.1x3.字符类型数据字符类型数据主要是为了满足文字处理的需要而设计的数据类型,因为文字(西文)是有符号组成的,字符数据类型的类型名是char,在内存中,字符数据是以ASCII编码的形式存储的,即使用1个字节存储一个字符,由于使用编码表示字符,所以这种类型的数据也可以当做一个单字节的整数使用。4.枚举类型数据枚举数据类型是一种自定义数据类型,它不是C语言提供的标准数据类型,使用这种数据类型需要在程序中先定义这种数据类型之后,才可以使用这种数据类型,关于枚举数据类型在相关章节中介绍。5.指针类型数据指针数据类型是C语言中最有特点的数据类型,整数类型的数据是不带小数点的数,实数类型的数据是带小数点的数,字符类型的数据是ASCII字符集的符号,指针类型的数据就是内存地址,所以指针数据类型实际上就是“地址数据类型”,因为指针是个更加形象的说法,所以普遍使用的名称是指针数据类型,第8张介绍指针。如图3-2所示,C语言将数据分成了若干类,一个基本的问题是为什么要对数据进行分类?比如为什么要把实数与整数区分成两类,我们平时使用时不加以区分的,在C语言中就必须区分,这是为什么?eds符号部分指数部分基数部分图3-4实数的浮点存储形式我们以整数和实数为例来说明在C语言中区分整数类型和实数类型的必要性,数据时存储在计算机的内存中的,计算机的内存是由一系列小的存储单元组成,一个存储单元能够存储若干位二进制数,在目前流行的个人计算机中,一个存储单元通常存储8位二进制数,在C语言中,整数是使用补码形式的二进制存储的,即在内存中存储的是该整数对应的补码形式,如果用一个8位的二进制如果用来存储一个有符号的整数的话,那么8位二进制所能存储的最大正整数是127,最小的负数是-128,为了能处理更大范围的数据,人们把几个连续的存储单元“拼接”成一个更大的存储单元,用来存储更大范围内的整数,比如基本的整数类型的数据是由2个字节的存储单元“拼接”成的,也就是说存储一个整数需要两个字节的存储单元,例如整数522的二进制形式是1000001010,那么在内存中存储的数据就是16位二进制数,如图3-3所示。对于实数的存储,则采用与整数存储完全不同的存储形式,实数是采用浮点存储形式存储数据的,基本的实数采用32位浮点格式存数,其存储格式如图3-4所示,数据由三部分组成,符号部分、指数部分和基数部分,这种表示方法的最大的优点是可以大大地扩大数值的表示范围,其表示的数值大小是eds2,只不过这里的数据都是二进制形式。由此可见整数的存储形式与实数的存储形式完全不同,所以将它们作为不同的数据类型是必要的,因此在多数计算机语言中,数据总是分类的,除此之外数据分类之后还能对程序设计带来好处。需要特别注意的是人和类型的数据在计算机内部存储只能使用有限位二进制来存储,这意味着在C语言(其他计算机语言也是如此)中,任何基本类型的数据,数据都存在着一个有限的表示范围,超出这个范围的数据就不能处理或者处理结果与预期的不一致,比如在TURBO2.0中使用16位二进制表示一个基本的整数,那么整数的表示范围就是:-32768~32767,超过这个范围内的数据就不能使用基本的整数类型的数据存储了。00001010000000100000001000001010图3-3两个字节拼接的二进制数3.2.3(常量)数据的表示在许多程序设计的书中,是这样定义常量的,说常量是在程序运行过程中其值不能改变的两,这话非常正确,但对于初学者是很难理解的,我们给一种更为简单易懂的说法,常量就是在书写程序的时候使用的常数。既然数据是分类的,接下来的问题自然是对于每种类型的数据,其书写格式是什么,对于不同数据类型的数据,C语言有着不同的书写规则,本章介绍整数、实数、字符和字符串类型数据的书写规则,其他类型的数据在相关的章节中介绍。1.整数的表示在C语言中,整数一定没有小数点,有小数点的一定不是整数,我们在日常中,12和12.0似乎没有什么不同,但是在C语言中,这是两个不同类型的数,12是整数而12.0是实数,整数可以用三种方式来表示,即在书写程序的时候,可以使用三种方式书写,这三种表示形式是十进制形式、八进制形式和十六进制形式,一般情况下我们都使用十进制表达形式,因为这与我们的日常使用习惯相同,但在一些特别的数据处理的时候,八进制和十六进制则是更好的数据表达形式,比如进行位操作的时候。基本的整数是由16位二进制存储的,所以它的数据表示范围是:-32768~32767,即最小的整数是-32768,而最大的整数是32767。(1)十进制形式,十进制形式是我们最熟悉的表达形式,十进制数的书写规则是由正负号开头,后跟一个自然数的形式,如果是正数,正号可以省略。例如:-213、0、415、76、+83都是合法的整数,而123.0、-23.、210、、0123等都是非法的十进制整数表达形式,这里0123是一个合法整数,但不是一个合法的十进制整数形式,它是一个合法的八进制形式
本文标题:第三章C语言基础
链接地址:https://www.777doc.com/doc-2212114 .html