C语言概述与数据类型.DOC

上传人:天*** 文档编号:1995131 上传时间:2019-03-26 格式:DOC 页数:20 大小:632.50KB
下载 相关 举报
C语言概述与数据类型.DOC_第1页
第1页 / 共20页
C语言概述与数据类型.DOC_第2页
第2页 / 共20页
C语言概述与数据类型.DOC_第3页
第3页 / 共20页
C语言概述与数据类型.DOC_第4页
第4页 / 共20页
C语言概述与数据类型.DOC_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、第 1章C 语言概述与数据类型什么是程序?要使计算机能完成人们预定的工作,就必须把要完成工作的具体步骤编写成计算机能执行的一条条指令,计算机执行这些指令序列后,就能完成指定的功能,这样的指令序列就是程序。简单地说,程序是能完成一定功能的指令序列。要想学会编写程序,首先要学习提供指令的程序设计语言;其次,就好像认识许多字不一定能写出好文章一样,仅仅学习了程序设计语言还不能编写出好的程序,还要学习更多和程序设计有关的知识和技巧。程序的功能一般是指其处理数据的能力,所以一个程序包括以下两个方面内容:(1)对数据的描述。在程序中要指定处理数据的类型和存储形式,即数据结构(data structure)

2、 。(2)对操作的描述。即操作步骤,也就是算法(algorithm) 。数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。作为程序设计人员,必须认真考虑和设计数据结构和操作步骤(即算法) 。因此,著名计算机科学家沃思(Nikiklaus Wirth)提出一个公式:程序=数据结构+算法当然这些要素都离不开一个与计算机交互的平台程序设计语言和环境。因此,可以这样表示程序:程序 =算法+数据结构+程序设计语言和环境算法是程序的灵魂,是解决问题所需要采用的合适方法,决定程序“做什么”和“怎么做” ;数据结构是加工对象的组织方式;程序设计语言是程序设计的工具和环境。大家更熟悉的一个词可

3、能是“软件” ,软件是具有一定综合功能的程序、数据及相关文档的集合。只有打好程序设计的基础,并掌握一定的软件开发技术后,才有可能去开发具有实用性的软件。1.1 引言1.1.1 程序设计语言及其分类1程序设计语言及其功能“程序设计语言是一种指挥计算机的工具?一种程序员之间交流的方式?一种表述高高级语言程序设计(C 语言描述) (第 2 版)2层设计的媒介?一种算法的记述方式?一种表述观念间关系的途径?一种试验工具?还是一种控制计算机化的设备的途径?实际上,一种通用程序设计语言必须集上述所有这些东西 于 一 身 , 这 样 才 能 为 用 户 更 好 地 服 务 。 ”这 是 Stroustrup

4、1994 对 程 序 设 计 语 言 的 论述 。语言是一种交流工具,发明程序设计语言的目的就是为了使计算机更容易使用。程序设计语言是计算机软件中非常独特的一部分,属于系统软件,但又和应用软件息息相关。其功能是使人类能够用某些命令、指令让计算机为人类进行数值、逻辑运算。2. 程序设计语言可以按对硬件依赖的程度分类人们把程序设计语言按其对计算机硬件依赖的程度分为低级语言和高级语言。低级语言包括机器语言和汇编语言。机器语言就是一台机器本身的语言,使这台机器可以直接响应的指令的记述形式,是唯一可以被计算机直接执行的语言。面向机器程序语言的指令由许多的 0 和 1 组成,一条计算机指令指示计算机一次完

5、成一个最基本的操作。由这种语言编写的程序不但冗长,而且可读性差、移植性差、容易出错、晦涩难懂,是一般人类所无法接受的。但这样的程序执行效率高,节省内存,运行速度快,通常用于直接控制计算机的硬件。为了克服机器语言的缺点,产生了汇编语言。汇编语言是机器语言的一种变形,是将机器指令助记成为可读易懂的符号,但仍只能完成计算机层次的操作;用汇编语言编写的程序要在计算机上执行,先要将用汇编语言编写的源程序转换成机器语言程序,称完成这个转换功能的程序为“汇编程序” 。低级语言的缺点是,指令功能简单,即使完成一个算术表达式的运算也需编写大段程序,而且需要对硬件进行了解,完成的程序不具可移植性。低级语言的优点是

6、,执行速度快,可直接控制硬件,适用于实时性要求较高的自动控制系统。 为了克服以上两种语言的缺陷,产生了许多高级语言。高级语言的共同特点是,完全不依赖于硬件,接近于自然语言(当然是英语) 。高级语言的基本构成是语句,语句的功能要比机器语言指令的功能强大得多,另外还提供了丰富的函数或类库。3程序设计语言还可以按其采用的范型分类1)面向过程的语言 面向过程的语言虽可独立于计算机编写程序,但用这类语言编写程序时,程序不仅要说明做什么,更重要的是非常详细地告诉计算机如何做,程序需要详细描述解题的过程和细节。 2)面向问题的语言 不必关心问题的求解算法和求解的过程,只需指出问题是做什么以及数据的输入和输出

7、形式,就能得到所需结果。面向问题语言又称为非过程化语言或陈述性语言,如报表语言、SQL( Structured Query Language)语言等。SQL 语言是数据库查询和操纵语言,能直接使用数据库管理系统。由于使用面向问题语言解题只要告诉计算机做什么,不必告诉计算机如何做。3)面向对象的语言 为克服面向过程语言过分强调求解过程的细节,程序不易复用的缺点,产生了面向对第 1 章 C 语言概述与数据类型 3象程序设计方法和面向对象语言。面向对象语言引入了对象、消息、类、继承、封装、抽象、多态性等机制和概念。用面向对象语言进行程序设计时,以问题域中的对象为基础,将具有类似性质的对象抽象成类,并

8、利用继承机制,仅对差异进行程序设计,可以提高软件开发效率。4其他分类方式按应用领域分类有人工智能程序设计语言(如 lisp) 、逻辑推理程序设计语言(如Prolog) 、系统程序设计语言(如 C 语言) 。命令式程序设计语言,由于其适用性强、应用范围广、语句简捷、灵活而得到广泛的使用,如 Pascal、Basic 、Fortran、C 都属于这类语言。程序设计初学者一般首先学习的就是命令式程序设计语言。5. 关于 C 语言语言是在 20 世纪 70 年代初问世的,1978 年由美国电话电报公司(AT以上例子是一个可以编译运行的最简单的 C 语言程序,仅包括一个主函数,其功能是把字符串“Hell

9、o!”送到显示器并显示。printf 函数调用语句的功能就是显示(或称为输第 1 章 C 语言概述与数据类型 5出) 。C 语言的函数由三部分组成:(1)使用输出库函数时要用到头文件 stdio.h,源文件开头应有以下预编译命令:#include (2)函数首部:由函数名main 和一对括号() 构成。(3)函数体:由一对 和其中的一条或多条语句构成。2语句程序(或函数)的基本组成是语句。语句一般有输入、输出、赋值或控制等功能,是程 序 设 计 语 言 提 供 的 , 是 最 基 本 处 理 数 据 的 功 能 。 通 过 对 语 句 的 组 织 , 完 成 不 同 数 据 处 理功 能 的

10、函 数 。 因 此 语 句 是 程 序 设 计 语 言 的 基 础 。 如 “printf()”; 就 是 输 出 功 能 的 函 数 调 用 语句 。3书写格式C 语言函数体中的每一个语句都是以“;”分号为结束符的。它们的书写非常自由,可以在一行的任意位置开始写程序语句,一个语句可写成多行,一行可以写多个语句。从便于阅读理解和维护的角度出发,在书写程序时应遵循:每个语句占一行。4注释注释是供编程人员阅读的,与程序的运行没有任何关系。注释的格式为“/ * */”。注释语句可以出现在程序的任意位置,在 C+语言环境下也可以用“/”注释格式,只能出现在语句的行尾或独立为一行。例如:#include

11、 main()printf (“Hello!“); /*输出 */或/*输出 */ printf (“Hello!“);或printf (“Hello!“); /输出1.2 C 语言基本数据类型前面已经讨论程序的主要功能就是处理数据,C 语言能够处理哪些类型的数据?计算机是如何表示和存储数据呢?下面进行介绍。高级语言程序设计(C 语言描述) (第 2 版)61.2.1 计算机中数据存储基础1存储空间的单位计算机存储数据的电器元件多数是二态的,因此计算机的指令和数据都是以二进制进行存储的。一个电器元件的存储量定义为位(b) ,是存储的最小单位。1b 能表示个状态,可以表示数值 0 和 1;2b

12、能表示个状态,可以表示数值0(00) ,1(01) ,2(10) ,3(11)计算机存储的基本单位是字节(B), 1B=8b,能表示 28=256 个状态,可以表示数值0,1,2,255。00000000 表示,00000001 表示 1,00000010 表示 2,11111111 表示 255。2二进制转十进制十进制是满十进一,所以 1236=1000+200+30+6=110310 2+3101+6100同样的道理,二进制是满二进一,所以二进制转化为十进制过程如下:二进制 00010012 3+209,二进制 000110102 4+23+21263十进制转二进制十进制数 1236101

13、236,12310123, 121012,11001,从后向前余数就是这个十进制数 1236。同样的道理,十进制转化为二进制的过程如下:262130,13261,6230,3211,1201,从后向前余数就是 26 的二进制数表示 11010。数据都是以二进制形式存储在计算机中的,关于计算机中数据的存储这里就介绍这么多,更多的知识在计算机导论课程中介绍。1.2.2 数据类型首先,C 程序设计语言可以存储和处理的数据类型如图 1-2 所示。第 1 章 C 语言概述与数据类型 7图 1-2 数据类型表1.2.3 数据类型的作用通过数据类型的定义,决定了该类型数据的存储空间的大小和存储方式,进而决定

14、了该类数据的取值范围和精度;另外数据类型还决定了数据运算(操作)的规则,这一点在1.2.6 节介绍运算符时会详细说明。1数据存储举例(1)unsigned short 类型数据占 2 字节,16 位全部存储数值,如:1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1表示 2152 032769。【问题思考】思考 unsigned short 类型的数据最小值、最大值各是多少?(2)short 类型数据占 2 字节,最高位存储符号,0 表示正数,1 表示负数;其余 15位存储数值,如:0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1表示 2142 016385。1 1

15、1 1 1 1 1 1 1 1 1 1 0 1 1 0表示10 的补码。数值是以补码表示的: 正数的补码和原码相同。 负数的补码:将该数的绝对值的二进制形式按位取反再加 1。例如,求10 的补码:10 的原码:高级语言程序设计(C 语言描述) (第 2 版)80 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0按位取反:1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1再加 1,得10 的补码:1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0由此可知,左面的第一位是表示符号的。【问题思考】思考 short 类型的数据最小值、最大值各是多少?(3)float

16、类型数据占 4 字节(32 位)内存空间,按指数形式存储。实数 3.14159 在内存中的存放形式如下:+ 3.14159 1符号位 小数部分 指数 最高位存储符号; 小数部分占的位数愈多,数的有效数字愈多,精度愈高; 指数部分占的位数愈多,则能表示的数值范围愈大。2. 数据的取值范围和精度整型数据在取值范围内都是精确存储,不同整数类型的数据取值范围如表 1-1 所示。表 1-1 整数表名 称 数据类型描述符 字 节 数 取 值 范 围int 2(C 编译系统下)4(Visual C+编译系统下) 32 768+32 7672 147 483 6482 147 483 647短 short s

17、hort int 2 32 768+32 767有符号整数长 long long int 4 2 147 483 6482 147 483 647基本型 unsignedunsigned int 2(C 编译系统下)4(Visual C+编译系统下) 065 53504 294 967 295短 unsigned short 2 065 535无符号整数长 unsigned long 4 04 294 967 295实型数据由于小数的存储空间有限,不能精确存储,不同类型的数据取值范围和精度(有效数字)如表 1-2 所示。表 1-2 实数表名 称 类型描述符 字节数 取值范围 有效数字(十进制的

18、位)单精度实型 float 4 (103710 38) 67 位双精度实型 double 8 (1030710 308 ) 1516 位长双精度 long double 16 (10493110 4932) 1819 位例如,在计算机中123456789123456789.0 存储为 123456789123456784.0第 1 章 C 语言概述与数据类型 93.123456789123456789 存储为 3.12345678912345681这就是表 1-2 中所描述的有效位。注意:当数据超出范围(称为“数据溢出”)时,其他高级程序设计语言输出的结果以 *代表,提示程序设计人员改写程序中

19、的数据 类型。 C 语言的输出方式,不容易发现这类错误,因为 它 输 出 方 式 是 忽 略 超 过 存 储 空 间 的 进 位 的 数 据 结 果 ,例 如 :执 行 “printf(“%d”,32767+1);”,输出为32768。显然输出的结果与真实结果完全背离,因此在 编程时一定要 认真分析实际问题中数据可能的范围,并依此来选择数据 类型。3数据类型与运算关于运算的细节在 1.2.6 节表达式中详细讲解,这里仅就数据运算与数据类型密切关系进行介绍。(1)C 语言限定求余运算只对整数进行, C 语言对整数的求余运行符为 “%”。(2)C 语言规定同类型数据运算结果类型不变,如整数与整数运

20、算的结果一定是整 数,舍去小数。所以,4/5 的运算结果为 0,7/2 的运算结果为 3。(3)数据运算与数据类型相关的实例还有很多,在后面的学习过程中请读者自己总结。1.2.4 数据表示常量数据有两种基本表示形式,在程序中以常量和变量出现。常量是在程序运行过程中不可改变的量,其类型根据其书写形式和范围决定。1整型常量整型常量由数字和常量后缀(L 或 l 表示长整型数、U 或 u 表示无符号数)构成,C语言的整型常量有八进制、十六进制和十进制三种:十进制整数(基本数字 09):110 456 139L 32769U 233445(为长整 型)等。八进制整数(以 0 打头,基本数字 07):03

21、7 010L 026 0776 等。十六进制整数(以 0X 打头,基本数字 09,而 10 至 15 记为 A 至 F):0X331 0X0 0X3AC0 0XAF 等。2实型常量(常量后缀 F 或 f 表示浮点数)实型常量也称为实数或浮点数。在 C 语言中规定,实数只采用十进制,实型常数不分单、双精度,都按双精度 double 型处理。实型常量由数字、小数点和常量后缀(F 或 f 表示浮点数)构成。它有两种表示形式:十进制小数形式和指数形式。(1)十进制小数形式:由数码 09 和小数点组成(后缀为 f 或 F 表示该数为浮点数),如 0.0、25.0、5.789、0.13、456.789、2

22、34F、67f 等均为合法的实数。特别地,123.0 可以表示为 123.、0.123 可以表示为.123。高级语言程序设计(C 语言描述) (第 2 版)10(2)指数形式:由尾数(a)和阶码(E n 或 en)组成。数学表达式 a10n 的 C 语言表达式为 a E n(a 为十进制数, n 为十进制整数) 。其中,尾数 a 为十进制数;e 或 E 为指数标志;n 为阶数,只能为整数,可以带符号。例如:2.1E5 ( 等于 2.1*105)、 3.7E2(等于 3.7*102)、1E5( 等于 105)、0.5E7 (等于 0.5*107)、2.8E2 (等于 2.8*102)。以下不是合

23、法的实数:345(无小数点或浮点数后缀) 。E7(无尾数) 。53.E3(负号位置不对) 。7E(无阶码) 。注意:(1)数学意义上的常量在程序设计语言中不一定是常量,如 1/2、e(自然数)等。特别是 23%,在程序设计语言中既不是常量,也不是后面将介 绍的表达式。(2)实型常量为双精度型,有效位 为 1516 位,超出部分 进 行四舍五入。3字符常数1)一般字符常数字符常数就是单个字符,字符可以是键盘上的任意一个可显示的字符,程序中字符常量写在一对单引号内(单引号称为定界符) 。例如, *、A、7 、& 等。2)特殊字符特殊字符包括不可显示字符和在 C 语言中具有特殊意义的字符(如为字符常

24、量的定界符) 。为了表示这些特殊字符,C 语言提供了转义字符来表示他们。转义字符包括反斜线、被转义的字符和一对单引号。例如,n将 n 转义为不可显示的回车换行字符。将定界符转义为普通的单引号字符。它们被当作一个单字符,也是字符常数。常用转义字符如表 1-3 所示。表 1-3 转义字符表符号序列 名 称 符号序列 名 称n 回车换行 单引号t 水平制表 双引号b 退格 反斜线r 回车不换行 ddd 八进制 ASCII 码值(0377)f 换页 xdd 十六进制 ASCII 码值(0F9)3)以 ASCII 码值显示字符除了表中提供的特殊字符,其他不可显示字符可以用相应的八进制或十六进制 ASCII码值表示,表示方式如表 1-3 中的后两项,同样需要单引号作为定界符。例如,t也可以表示为11(Tab 键的八进制 ASCII 为 11)。每个转义字符均被看做一个单字符常量,当然一般字符常数也可以这样表示,只是可读性差。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 1

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。