收藏 分享(赏)

计算机二级C语言精编教程.pdf

上传人:HR专家 文档编号:6226232 上传时间:2019-04-03 格式:PDF 页数:33 大小:309.47KB
下载 相关 举报
计算机二级C语言精编教程.pdf_第1页
第1页 / 共33页
计算机二级C语言精编教程.pdf_第2页
第2页 / 共33页
计算机二级C语言精编教程.pdf_第3页
第3页 / 共33页
计算机二级C语言精编教程.pdf_第4页
第4页 / 共33页
计算机二级C语言精编教程.pdf_第5页
第5页 / 共33页
点击查看更多>>
资源描述

1、计算机等考二级C语言精编教程 第 1章 程序设计基本概念 1.1 程序和程序设计 1.1.1 C程序 计算机现已广泛应用于社会生活的各个领域,成为大众化的现代工具。但是,不熟悉计算机的人仍然把它想象得十分神秘。其实,计算机不过是一种具有内部存储能力、由程序自动控制的电子设备。人们将需要计算机做的工作写成一定形式的指令,并把它们存储在计算机内部的存储器中,当人们给出命令之后,它就按指令顺序自动进行操作。人们把这种可以连续执行的一条条指令的集合称为“程序”。可以说,程序就是人与机器“对话”的语言,也就是我们常说的“程序设计语言”。 目前,在社会上使用的程序设计语言有上百种,它们中的大多数被称为计算

2、机的“高级语言”,如Visual Basic、C+、Java以及本书将要介绍的C语言等。这些语言都是用接近人们习惯的自然语言和数学语言作为表达形式,使人们学习和操作起来感到十分方便。 但是,对于计算机本身来说,它并不能直接识别由高级语言编写的程序。它只能接受和处理由O和1的代码构成的二进制指令或数据。由于这种形式的指令是面向机器的,因此也被称为“机器语言”。 我们把由高级语言编写的程序称为“源程序”,把由二进制代码表示的程序称为“目标程序”。为了把源程序转换成机器能接受的目标程序,软件工作者编制了一系列软件,通过这些软件可以把用户按规定语法写出的语句一一翻译成二进制的机器指令。这种具有翻译功能

3、的软件称为“编译程序”,每种高级语言都有与它对应的编译程序。例如,C语言编译程序就是这样的一种软件,其功能如图 1.1所示。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 我们所写的每条C语句,经过编译(Compile)最终都将转换成二进制的机器指令。由 C语言构成的指令序列称为C源程序;按C语言的语法编写C程序的过程,称为C语言的代码编写。 C源程序经过C编译程序编译之后生成一个后级为.OBJ的二进制文件(称为目标文件),然后由称为“连接程序”(Link)的软件,把此 .OBJ文件与C语言提供的各种库函数连接起来生成一个后缀为.EXE的可执行文件。在操作系统环境下,只需点

4、击或输入此文件的名字(而不必输入后缀.EXE),该可执行文件就可运行。 1.1.2 程序设计 简单的程序设计一般包含以下几个部分。 1.确定数据结构。根据任务书提出的要求、指定的输入数据和输出结果,确定存放数据的数据结构。 2.确定算法。针对存放数据的数据结构来确定解决问题、完成任务的步骤。有关算法的概念将在下一节中介绍。 3.编码。根据确定的数据结构和算法,使用选定的计算机语言编写程序代码,输入到计算机并保存在磁盘上,简称编程。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 4.在计算机上调试程序。消除由于疏忽而引起的语法错误或逻辑错误;用各种可能的输入数据对程序进行测试

5、,使之对各种合理的数据都能得到正确的结果,对不合理的数据能进行适当的处理。 5.整理并写出文档资料。 1.2 算法 学习计算机程序设计语言的目的,是要用语言作为工具,设计出可供计算机运行的程序。 在拿到一个需要求解的问题之后,怎样才能编写出程序呢?除了选定合理的数据结构外,一般来说,十分关键的一步是设计算法,有了一个好的算法,就可以用任何一种计算机高级语言把算法转换为程序(编写程序)。 算法是指为解决某个特定问题而采取的确定且有限的步骤。一个算法应当具有以下五个特性: 1.有穷性。一个算法包含的操作步骤应该是有限的。也就是说,在执行若干个操作步骤之后,算法将结束,而且每一步都在合理的时间内完成

6、。 2.确定性。算法中每一条指令必须有确切的含义,不能有二义性,对于相同的输入必能得出相同的执行结果。 3.可行性。算法中指定的操作,都可以通过已经验证过可以实现的基本运算执行有限次后实现。 4.有零个或多个输入。在计算机上实现的算法是用来处理数据对象的,在大多数情况下这些数据对象需要通过输入来得到。 5.有一个或多个输出。算法的目的是为了求“解”,这些“解”只有通过输出才能得到。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 算法可以用各种描述方法来进行描述,最常用的是伪代码和流程图。 伪代码是一种近似于高级语言但又不受语法约束的一种语言描述方式。这在英语国家中使用起来更

7、为方便。 流程图也是描述算法的很好的工具,一 般 的流 程图 由 图 1.2中所示的几种基本图形组成。 由这些基本图形中的框和流程线组成的流程图来表示算法,形象直观,简单方便。但是,这种流程图对于流程线的走向没有任何限制,可以任意转向,在描述复杂的算法时所占篇幅较多,费时费力且不易阅读。 随着结构化程序设计方法的出现,1973年美国学者I.Nassi和B.Shneiderman提出了一种新的流程图形式,这种流程图表余去掉了流程线,算法的每一步都用一个矩形框来描述,把一个个矩形框按执行的次序连接起来就是一个完整的算法。这种流程图界两位学者名字的第一个英文字母命名,称为N-S流程图。在下一节中将结

8、合结构化程序设计中的三种基本结构来介绍这种流程图的基本结构。 1.3 结构化程序设计和模块化结构 1.3.1 结构化程序 结构化程序由三种基本结构组成。 1.顺序结构。在本书第3章中将要介绍的如赋值语句、输入、输出语句都可构成顺序结构。当执行由这些语句构成的程序时,将按这些语句在程序中的先后顺序逐条执行,没有分PDF 文件使用 “pdfFactory Pro“ 试用版本创建 支,没有转移。顺序结构可用图1.3所示的流程图表示,其中(a)是一般的流程图,(b)是N-S流程图。 2.选择结构。在本书第4章中将要介绍的if语句、switch语句都可构成选择结构。当执行到这些语句时,将根据不同的条件去

9、执行不同分支中的语句。选择结构可用图1.4所示的流程图表示,其中(a)是一般的流程图,(b)是N-S流程图。 3.循环结构。在本书第5章中将介绍不同形式的循环结构。它们将根据各自的条件,使同一组语句重复执行多次或一次也不执行。循环结构的流程图如图1.5和图1.6所示,每个图中(a)是一般的流程图,(b)是N-S流程图。图1.5是当型循环流程图。当型循环的特点是:当指定的条件满足(成立)时,就执行循环体,否则就不执行。图 1.6是直到型循环流程图。直到型循环的特点是:执行循环体直到指定的条件满足(成立)时就不再执行循环体。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 已经证

10、明,由三种基本结构组成的算法可以解决J任何复杂的问题。由三种基本结构所构成的算法称为结构化算法;由三种基本结构所构成的程序称为结构化程序。 例1.1 先后输人若干个整数,要求打印出其中最大的数,当输入的数小于0时结束。用N-S流程图表示算法。 解题的思路是:先输人一个数,在没有其他数参加比较之前,它显然是当前最大的数,把它放到变量ma:中。让max始终存放当前已比较过的数中的最大值。然后输入第二个数,并与max比较,如果第二个数大于max,则用第二个数取代max中原来的值。如此先后输PDF 文件使用 “pdfFactory Pro“ 试用版本创建 人和比较,每次比较后都将值大者放在max中,直

11、到输入的数小于0时结束。最后max中的值就是所有输入数中的最大值。 根据此思路,画出N-S流程图(见图1.7)。变量x用来控制循环次数,当x0时,执行循环体;在循环体内进行两个数的比较和输入x值。从图1.7可见,在循环体的矩形框内包含一个选择结构。 1.3.2 模块化结构 当计算机在处理较复杂的任务时,所编写的程序经常由上万条语句组成,需要由许多人来共同完成。这时常常把这个复杂的任务分解为若干个子任务,每个子任务又分成很多个小子任务,每个小子任务只完成一项简单的功能。在程序设计时,用一个个小模块来实现这些功能,每个程序设计人员分别完成一个或多个小模块。我们称这样的程序设计方法为“模块化”的方法

12、,由一个个功能模块构成的程序结构为模块化结构。 由于把一个大程序分解成若干相对独立的子程序,每个子程序的代码一般不超过一页纸,因此对程序设计人员来说,编写程序代码变得不再困难。这时只需对程序之间的数据传递做出统一规范,同一软件可由一组人员同时进行编写,分别进行调试,这就大大提高了程序编制的效率。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 软件编制人员在进行程序设计的时候,首先应当集中考虑主程序中的算法,写出主程序后再动手逐步完成子程序的调用。对于这些子程序也可用调试主程序的同样方法逐步完成其下一层子程序的调用。这就是自顶向下、逐步细化、模块化的程序设计方法。 C语言是一

13、种结构化程序设计语言。它提供了兰种基本结构的语句;提供了定义“函数”的功能,在C语言中没有子程序的概念,它提供的函数可以完成子程序的所有功能;C语言允许对函数单独进行编译,从而可以实现模块化。另外,C语言还提供了丰富的数据类型。这些都为结构化程序设计提供了有力的工具。 习题 1.1 在VC6.0环境中用RUN命令运行一个C程序时,这时所运行的程序的后缀是_。 1.2 C语言源程序文件名的后缀是 1 ;经过编译后,生成文件的后缀是 2 ;经过连接后,生成文件的后缀是 3 。 1.3 结构化程序由 1 、 2 、 3 三种基本结构组成。 第2章 C程序设计的初步知识 C语言语法简洁、紧凑,使用方便

14、、灵活,具有丰富的预定义运算符和数据类型,自定义数据类型也十分灵活。C程序的模块化主要通过函数实现。由于C语言既有高级语言的功能,又有低级语言的一些功能,因此既可以用它来编写系统软件,也可以用来编写应用软件。 2.1 简单C语言程序的构成和格式 为了了解C语言程序的构成和编写格式,下面先看一个简单的C程序例子。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 例2.1 求矩形的面积。 程序如下: #include main() double a, b, area; a = 1.2; /*将矩形的两条边长分别赋给a和b*/ b = 3.6; area = a * b; /*计算

15、矩形的面积并存储到变址area中*/ printf(“a = %f, b = %f, area = %fn“,a,b,area); /*输出矩形的两条边长和面积*/ 执行以上程序后的输出结果如下: a = 1.200000,b = 3.600000,area = 4.320000 以上程序中,main是主函数名,C语言规定必须用main作为主函数名。其后的一对回括号中间可以是空的,但这一对圆括号不能省略。程序中的main()是主函数的起始行,也是C程序执行的起始行。每一个可执行的C程序都必须有一个且只能有一个主函数。一个C程序中可以包含任意多个不同名的函数,但只能有一个主函数。一个C程序总是从

16、主函数开始执行。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 在函数的起始行后面用一对花括号“”括起来的部分为函数体。函数体内通常有定义(说明)部分和执行语句部分。以上程序中的“double a, b, area;”为程序的定义部分;从“a = 1.2;”到“printf(“a = %f, b = %f, area = %f/n“, a, b, area);”是程序的执行部分。执行部分的语句称为可执行语句,必须放在定义部分之后,语句的数量不限,程序中由这些语句向计算机系统发出操作指令。 定义语句用分号“;”结束。在以上程序中只有一个定义语句。该语句对程序中所用到的变量a,

17、b,area进行定义,说明它们为double类型的变量。 程序中“a=1.2;”和“b=3.6;”的作用是分别给矩形的两条边赋值,“area=a * b;”的作用是计算出矩形面积并赋给变量area, “printf(“a = %f, b = %f, area = %fn“ ,a, b, area);”的作用是按格式把a、b和area的值输出到屏幕。C程序中的每一条执行语句都必须用分号“;”结束,分号是C语句的一部分,不是语句之间的分隔符。 C语言程序有比较自由的书写格式,但是过于“自由”的程序书写格式往往使人们很难读懂程序,初学者应该从一开始就养成良好的习惯,使编写的程序便于阅读。 在编写程序

18、时可以在程序中加入注释,以说明变蛋的含义、语句的作用和程序段的功能,从而帮助人们阅读和理解程序。因此,一个好的程序应该有详细的注释。在添加注释时,注释内容必须放在符号“/*”和“*/“之间。“/*”和“*/”必须成对出现,“/”与“*”之间不可以有空格。注释可以用英文,也可以用中文,可以出现在程序中任意合适的地方。注释部分只是用于阅读,对程序的运行不起作用。按语法规定,在注释之间不可以再嵌套“/*”和“*/”,如: /*/*/*/ 这种形式是非法的。注意:注释从“/*”开始到最近的一个“*/”结束,其间的任何内容都被编译程序忽略。 PDF 文件使用 “pdfFactory Pro“ 试用版本创

19、建 程序中的“#include ”通常称为命令行,命令行必须用“#”号开头,行尾不能加“;”号,它不是C程序中的语句。一对括号“”之间的stdio.h是系统提供的头文件,该文件中包含着有关输入输出函数的说明信息。在程序中调用不同的标准库函数,应当包含相应的文件,以使程序含有所调用标准库函数的说明信息。至于应该调用哪个文件,将在以后的章节中陆续介绍。 第2章 C程序设计的初步知识 C语言语法简洁、紧凑,使用方便、灵活,具有丰富的预定义运算符和数据类型,自定义数据类型也十分灵活。C程序的模块化主要通过函数实现。由于C语言既有高级语言的功能,又有低级语言的一些功能,因此既可以用它来编写系统软件,也可

20、以用来编写应用软件。 2.1 简单C语言程序的构成和格式 为了了解C语言程序的构成和编写格式,下面先看一个简单的C程序例子。 例2.1 求矩形的面积。 程序如下: #include main() double a, b, area; a = 1.2; /*将矩形的两条边长分别赋给a和b*/ b = 3.6; PDF 文件使用 “pdfFactory Pro“ 试用版本创建 area = a * b; /*计算矩形的面积并存储到变址area中*/ printf(“a = %f, b = %f, area = %fn“,a,b,area); /*输出矩形的两条边长和面积*/ 执行以上程序后的输出结

21、果如下: a = 1.200000,b = 3.600000,area = 4.320000 以上程序中,main是主函数名,C语言规定必须用main作为主函数名。其后的一对回括号中间可以是空的,但这一对圆括号不能省略。程序中的main()是主函数的起始行,也是C程序执行的起始行。每一个可执行的C程序都必须有一个且只能有一个主函数。一个C程序中可以包含任意多个不同名的函数,但只能有一个主函数。一个C程序总是从主函数开始执行。 在函数的起始行后面用一对花括号“”括起来的部分为函数体。函数体内通常有定义(说明)部分和执行语句部分。以上程序中的“double a, b, area;”为程序的定义部分

22、;从“a = 1.2;”到“printf(“a = %f, b = %f, area = %f/n“, a, b, area);”是程序的执行部分。执行部分的语句称为可执行语句,必须放在定义部分之后,语句的数量不限,程序中由这些语句向计算机系统发出操作指令。 定义语句用分号“;”结束。在以上程序中只有一个定义语句。该语句对程序中所用到的变量a,b,area进行定义,说明它们为double类型的变量。 程序中“a=1.2;”和“b=3.6;”的作用是分别给矩形的两条边赋值,“area=a * b;”的作用是计算出矩形面积并赋给变量area, “printf(“a = %f, b = %f, ar

23、ea = %fn“ ,a, b, area);”的作用是按格式把a、b和area的值输出到屏幕。C程序中的每一条执行语句都必须用分号“;”结束,分号是C语句的一部分,不是语句之间的分隔符。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 C语言程序有比较自由的书写格式,但是过于“自由”的程序书写格式往往使人们很难读懂程序,初学者应该从一开始就养成良好的习惯,使编写的程序便于阅读。 在编写程序时可以在程序中加入注释,以说明变蛋的含义、语句的作用和程序段的功能,从而帮助人们阅读和理解程序。因此,一个好的程序应该有详细的注释。在添加注释时,注释内容必须放在符号“/*”和“*/“之间

24、。“/*”和“*/”必须成对出现,“/”与“*”之间不可以有空格。注释可以用英文,也可以用中文,可以出现在程序中任意合适的地方。注释部分只是用于阅读,对程序的运行不起作用。按语法规定,在注释之间不可以再嵌套“/*”和“*/”,如: /*/*/*/ 这种形式是非法的。注意:注释从“/*”开始到最近的一个“*/”结束,其间的任何内容都被编译程序忽略。 程序中的“#include ”通常称为命令行,命令行必须用“#”号开头,行尾不能加“;”号,它不是C程序中的语句。一对括号“”之间的stdio.h是系统提供的头文件,该文件中包含着有关输入输出函数的说明信息。在程序中调用不同的标准库函数,应当包含相应

25、的文件,以使程序含有所调用标准库函数的说明信息。至于应该调用哪个文件,将在以后的章节中陆续介绍。 2.2.3 符号常量 在C语言程序中,可以用一个符号名来代表一个常量,称为符号常量。这个符号名必须在程序中进行特别的“指定”,并符合标识符的命名规则。 例2.2 计算圆面积。 #include“stdio.h“ PDF 文件使用 “pdfFactory Pro“ 试用版本创建 #define PI 3.14159 /*定义符号名PI为3.14159/ main() double r,s; r=5.0; s=P1*r*r; printf(“s=“%fn“,s); 执行以上程序后的输出结果如下: s=

26、78.539750 程序中用#define命令行(注意:不是语句)定义PI代表一串字符3.14159,在对程序进行编译时,凡本程序中出现PI的地方,编译程序均用3.14159来替换。为了使之比较醒目,这种符号名通常采用大写字母表示。用 define进行定义时,必须用“#”作为一行的开头,在#define命令行的最后不得加分号。有关#define命令行的作用,将在后续篇章中介绍。 2.2.4 变量 所谓变量是指在程序运行过程中其值可以改变的量。程序中用到的所有变量都必须有一个名字作为标识,变量的名字由用户定义,它必须符合标识符的命名规则,如例2.1中的a、b和area就是由用户定义的变量名。 P

27、DF 文件使用 “pdfFactory Pro“ 试用版本创建 一个变量实质上是代表了内存中的某个存储单元。在程序中。变量a就是指用a命名的某个存储单元,用户对变量a进行的操作就是对该存储单元进行的操作;给变量a赋值,实质上就是把数据存入该变量所代表的存储单元中。 C语言规定,程序中所有变量都必须先定义后使用。对变量的定义通常放在函数体内的前部,但也可以放在函数的外部或复合语句的开头。 像常量一样,变世也有整型变盘、实型变量、字符型变量等不同类型。在定义变量的同时要说明其类型,系统在编译时就能根据其类型为其分配相应的存储单元。 2.3 整型数据 2.3.1 整型常量 在C语言程序中,整型常量可

28、以用十进制、八进制和十六进制等形式表示。 十进制基本常量用一串连续的数字表示,例如 32767、-32768、0等。 二八进制数也是用一串连续的数字表示,但其开头必须是数字“0”。例如010、011、016等都是合法的八进制数,与之对应的十进制数为8、9、14。因此,在C程序中不能在一个十进制数前随意添加数字“0”。例如,不能把十进制数11写成011。注意:八进制数必须用合法的八进制数字表示。例如,不能写成O18,因为数字8不是八进制数字。 十六进制数用数字0和字母x(或大写字母X)开头。例如0x10,0Xde,0xf等都是合法的十六进制数,与之对应的十进制数分别为16、222、15。注意:十

29、六进制数必须用合法的十六进制数字表示。十六进制数中的字a,b,c,d,e,f既可以用小写也可以用大写。 在C程序中,只有十进制数可以是负数,而八进制和十六进制数只能是整数。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 整型常量又有短整型(short int)、基本整型(int)、长整型(long int)和无符号型(unsigned)等不同类型。 2.3.2 整型变量 整型变量可以分为基本型、短整型、长整型和无符号型四种。本节只介绍基本型的整型变量。 基本型的整型变量用类型名关键字int进行定义,例如: int k; /*定义k为整型变量*/ 一个定义语句必须以一个“;”

30、号结束。在一个定义语句中也可以同时定义多个变量,变量之间用逗号隔开。例如: int i,j,k; /*定义i,j,k为整型变量*/ 不同的编译系统为int变量开辟的内存单元大小不同。VC6.0为int变量开辟4个字节(32个二进制位)的内存单元,并按整型数的存储方式存放数据,允许存放的数值范围是: -21474836x82147483547整型的变量只能存放整型数值。 当按上述方式定义变量i、j和k时,编译程序仅为i、j和k开辟存储单元,而没有在存储单元中存放任何初值,此时变址中的值是无意义的,称变量值“无定义”。 C语言规定,可以在定义变量的同时给变盘赋初值,也称变量初始化。例如: main

31、() int i=1,j=0,k=2; /*定义i,j,k为整型变量,它们的初值分别为1、0和2*/ PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2.3.3 整型数据的分类 前面介绍的int类型通常称为基本整型。除此之外,C语言中整型数据还有其他三种类型: 短整型(short int)、长整型(int或long int)、无符号型(unsigned)。若不指定变量为无符号型,则变量隐含为有符号型(signed)。 不同的编译系统或计算机系统对这几类整型数所占用的字节数有不同的规定。表 2.1列出了在VC6.0中定义的整型数所占用的字节数和数值范围。表中方括号内的单词可以

32、省略,各单词排列的先后次序无关紧要。 在VC6.0中可以在整型常量的后面加一个字母l(L的小写)或L,例如:123L、345l、0L、123456L等,这些常量在内存中占四个字节。 无论是短整型数还是长整型数,都被识别为有符号整数。无符号整数在数的末尾应该加上字母后缀u或U。若是长整型无符号整型常量,则可以加后缀lu或LU。短整型无符号常量的取值应在0-65535范围内,长整型无符号常量的取值在0-4294967295的范围内。注意:无符号常量不能表示成小于0的负数,例如:-200U是不合法的。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 2.3.4 整数在内存中的存储形

33、式 计算机中,内存储器的最小存储单位称为“位(bit)”。由于只能存放0或1,因此称为二进制位。大多数计算机把8个二进制位组成一个“字节(byte)”,并给每个字节分配一个地址。若干字节组成一个“字(word)”,用一个“字”来存放一条机器指令或一个数据。一个字含多少个字节随机器的不同而不同。如果一台计算机以两个字节(16个二进制位)来存放一条机器指令,则称此计算机的字长为16位;如果以四个字节(32个二进制位)来存放一条机器指令,则称此计算机的字长为32位。 通常把一个字节中的最右边一位称为最低位,最左边一位称为最高位。对于一个有符号整数,其中最高位(最左边的一位)用来存放整数的符号,称为符

34、号位。若是正整数,最高位放置0;若是负整数,最高位放置1。 一、正整数 当用两个字节存放一个short类型正整数时,例如正整数5,其在内存中的二进制码为: 0000000000000101 对于正整数的这种存储形式称为用“原码”形式存放。因此用两个字节存放short类型的最大正整数是: 0111111111111111 它的值为32767。为简单起见,若一个字节能够正确表示一个整数时,本书则用一个字节表示。 二、负整数 1.负整数在内存中是以“补码”形式存放的。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 取某个二进制数的补码,例如10000101(十进制数-5)的补码,

35、步骤如下: (1)求原码的反码。把原码除符号位之外的二进制码按位取反,即把1变成0,0变成1,即得到该原码的反码。例如10000101的反码为111110100。 (2)把所得的反码加1,即得到原码的补码。因此11111010加1得11111011,这就是-5在内存中的二进制码。若用两个字节表示,即为: 1111111111111011 2.把内存中以补码形式存放的二进制码转化成十进制的负整数,步骤如下: (1)先对除符号位之外的各位取反。例如有补码11111010,取反后为10000101。 (2)将所得二进制数转换成十进制数。例如,10000101的十进制数为-5。 (3)对所求得的数再减

36、1,即为-6。 通过以上分析可知,由两个字节存放的最小整数是1000000000000000,它对应的十进制数为-32768,而-1在内存中存放的二进制码为1111111111111111。 三、无符号整数 用两个字节存放一个整数时,若说明为无符号整数,则最高位不再用来存放整数的符号,16个二进制位全部用来存放整数,因此无符号整数不可能是负数。这时,若内存中存放的16个二进制位全部为1,则它所代表的整数就不再是-1,而是65535。 2.4 实型数据 2.4.1 实型常量 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 实型常量又称实数或浮点数。在C语言中可以用两种形式表示一

37、个实型常量。 一、小数形式 小数形式是由数字和小数点组成的一种实数表示形式,例如0.123、.123、123.、0.0等都是合法的实型常量。注意:小数形式表示的实型常量必须要有小数点。 二、指数形式 这种形式类似数学中的指数形式。在数学中,一个数可以用幂的形式来表示,如2.3026可 以表示为0.23026101、2.3026100、23.02610-1等形式。在C语言中,则以“e”或“E”后跟一个整数来表示以10为底的幂数。2.3026可以表示为0.23026E1、2.3026e0、23. 026e-1。C语言的语法规定,字母e或E之前必须要有数字,且e或E后面的指数必须为整数。如e3、.5

38、e3.6、.e3、e等都是非法的指数形式。注意:在字母e或E的前后以及数字之间不得插入空格。 2.4.2 实型变量 C语言中实型变量分为单精度型和双精度型两种,分别用类型名float和double进行定义。 单精度型变量定义的形式如下: float a,b,c; 双精度型变量定义的形式如下: double x,y,z; PDF 文件使用 “pdfFactory Pro“ 试用版本创建 在一般计算机系统中,为float类型的变量分配4个字节的存储单元,为double类型的变量分配8个字节的存储单元,并按实型数的存储方式存放数据。实型的变量只能存放实型数,不能用整型变量存放一个实数,也不能用实型变

39、量存放一个整数。 在VC6.0中单精度实数(float类型)的数值范围约在-10381038之间,并提供7位有效数 字位;绝对值小于10-38的数被处理成零值。双精度实数(double类型)的数值范围约在-1030810308之间,并提供1516位有效数字位,具体精确到多少位与机器有关;绝对值小于10-308的数被处理成零值。因此double型变量中存放的数据要比float型变量中存放的数据精确得多。注意,在VC6.0中,所有的float类型数据在运算中都自动转换成double型数据。 前面已经介绍过,在程序中一个实数可以用小数形式表示,也可以用指数形式表示。但在内存中,实数一律是以指数形式存

40、放的。 注意:在计算机中可以精确地存放一个整数,不会出现误差,但整型数值的数值范围比实数小。实型数的数值范围较整型大,但往往存在误差。 2.4 实型数据 2.4.1 实型常量 实型常量又称实数或浮点数。在C语言中可以用两种形式表示一个实型常量。 一、小数形式 小数形式是由数字和小数点组成的一种实数表示形式,例如0.123、.123、123.、0.0等都是合法的实型常量。注意:小数形式表示的实型常量必须要有小数点。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 二、指数形式 这种形式类似数学中的指数形式。在数学中,一个数可以用幂的形式来表示,如2.3026可 以表示为0.23

41、026101、2.3026100、23.02610-1等形式。在C语言中,则以“e”或“E”后跟一个整数来表示以10为底的幂数。2.3026可以表示为0.23026E1、2.3026e0、23. 026e-1。C语言的语法规定,字母e或E之前必须要有数字,且e或E后面的指数必须为整数。如e3、.5e3.6、.e3、e等都是非法的指数形式。注意:在字母e或E的前后以及数字之间不得插入空格。 2.4.2 实型变量 C语言中实型变量分为单精度型和双精度型两种,分别用类型名float和double进行定义。 单精度型变量定义的形式如下: float a,b,c; 双精度型变量定义的形式如下: doub

42、le x,y,z; 在一般计算机系统中,为float类型的变量分配4个字节的存储单元,为double类型的变量分配8个字节的存储单元,并按实型数的存储方式存放数据。实型的变量只能存放实型数,不能用整型变量存放一个实数,也不能用实型变量存放一个整数。 在VC6.0中单精度实数(float类型)的数值范围约在-10381038之间,并提供7位有效数 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 字位;绝对值小于10-38的数被处理成零值。双精度实数(double类型)的数值范围约在-1030810308之间,并提供1516位有效数字位,具体精确到多少位与机器有关;绝对值小于10

43、-308的数被处理成零值。因此double型变量中存放的数据要比float型变量中存放的数据精确得多。注意,在VC6.0中,所有的float类型数据在运算中都自动转换成double型数据。 前面已经介绍过,在程序中一个实数可以用小数形式表示,也可以用指数形式表示。但在内存中,实数一律是以指数形式存放的。 注意:在计算机中可以精确地存放一个整数,不会出现误差,但整型数值的数值范围比实数小。实型数的数值范围较整型大,但往往存在误差。 2.6 赋值表达式 2.6.1 赋值运算符和赋值表达式 在C语言中,赋值号“=”是一个运算符,称为赋值运算符。由赋值运算符组成的表达式称为赋值表达式,其形式如下: 变

44、量名=表达式 赋值号的左边必须是一个代表某一存储单元的变量名,对于初学者来说.只要记住赋值号左边必须是变量名即可。赋值号的右边必须是C语言中合法的表达式。赋值运算的功能是先求出右边表达式的值,然后把此值赋给赋值号左边的变量,确切地说,是把数据存入以该变量为标识的存储单元中去。例如,a和b都被定义成int类型变量: a=10; /*把常量l0赋给变量a*/ b=a; /*把a中的值赋给变量b,a中的值不变*/ PDF 文件使用 “pdfFactory Pro“ 试用版本创建 在程序中可以多次给一个变量赋值,每赋一次值,与它相应的存储单元中的数据就被更新一次,内存中当前的数据就是最后一次所赋的那个

45、数据。 说明: (1)赋值运算符的优先级别只高于逗号运算符,比任何其他运算符的优先级都低,且具有自右向左的结合性。因此,对于如下的表达式: a=2+7/3 由于所有其他运算符的优先级都比赋值运算符高,所以先计算赋值运算符右边表达式的值,再把此值赋给变量a。(2)赋值运算符不同于数学中的“等于号”,这里不是等同的关系,而是进行“赋予”的操作。 (3)赋值表达式x=y的作用是,将变量y所代表的存储单元中的内容赋给变量x所代表的存储单元。x中原有的数据被替换掉。赋值后,变量y中的内容保持不变。此表达式应当读作“把右边变量的值赋给左边变量”,而不应读作“x等于y”。 (4)在赋值表达式x=x中,虽然赋

46、值运算符两边的运算对象都是x,但出现在赋值号左边和右边的x具有不同的含义。赋值号右边的x表示变量x所代表的存储单元中的值。赋值号左边的x代表以x为标识的存储单元。该表达式的含义是取变量x中的值放到变量x中去。当然,这一操作并无实际意义。 表达式n=n+1也是合法的赋值表达式,其作用是取变量n中的值加1后再放回到变量n中,即使变量n中的值增1。 (5)赋值运算符的左侧只能是变量,不能是常量或表达式。a+b=c就是非法的赋值表达式。 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 (6)等号右边的表达式也可以是一个赋值表达式。如a=b=7+1,按照运算符的优先级,将首先计算出7+

47、1的值8,然后按照赋值运算符自右向左的结合性,把8赋给变量b,最后再把变量b的值赋给变量a。而表达式a=7+1=b则是不合法的,因为在7+1=b中,在赋值号的左边不是一个变量。 (7)在C语言中,“=”号被视为一个运算符,a=19是一个表达式,而表达式应该有一个值,C语言规定最左边变量中所得到的新值就是赋值表达式的值。 (8)C语言的赋值表达式可以作为语句中的某个成分出现在众多的语句或表达式中,从而使变量中的数值变化过程变得难于掌握。因此要求读者在学习过程中建立正确的概念,才能准确掌握赋值表达式的运算规律。 2.6.2 复合赋值表达式 在赋值运算符之前加上其他运算符可以构成复合赋值运算符。C语

48、言规定可以使用10种复合赋值运算符,其中与算术运算有关的复合赋值运算符有:+=、-=、*=、/=、%=(注意:两个符号之间不可以有空格)。复合赋值运算符的优先级与赋值运算符的优先级相同。表达式n+=1的运算规则等价于n=n+1,表达式n*=m+3的运算规则等价于n=n*(m+3),因为运算符“+”的优先级高于复合赋值运算符“*=”。其他以此类推。 例2.3 已有变量a,其值为9,计算表达式a+=a-=a+a的值。 因为赋值运算符与复合赋值运算符“-=”和“+=”的优先级相同,且运算方向自右至左,所以: (1)先计算“a+a”;因a的初值为9,所以该表达式的值为18,注意a的值求变。 (2)再计算“a-=18”,此式相当于“a=a-18”,因a的值仍为9,所以

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 实用文档 > 简明教程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报