C语言程序设计(AI助学)(微课版)课件全套 崔升广 第1-8章 初识C语言和程序设计-文件_第1页
C语言程序设计(AI助学)(微课版)课件全套 崔升广 第1-8章 初识C语言和程序设计-文件_第2页
C语言程序设计(AI助学)(微课版)课件全套 崔升广 第1-8章 初识C语言和程序设计-文件_第3页
C语言程序设计(AI助学)(微课版)课件全套 崔升广 第1-8章 初识C语言和程序设计-文件_第4页
C语言程序设计(AI助学)(微课版)课件全套 崔升广 第1-8章 初识C语言和程序设计-文件_第5页
已阅读5页,还剩454页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章初识C语言和程序设计C语言程序设计第1章初识C语言和程序设计1.1.1C语言的发展及特点1.1.2程序设计语言的发展1.1.3程序设计语言的功能1.1C语言概述第1章初识C语言和程序设计C语言是目前国际上最流行的计算机高级语言之一,既可以用来编写系统软件,也可以用来编写应用软件,集汇编语言和高级语言的优点于一身。1.C语言的发展史C语言的原型是ALGOL60语言。1963年,剑桥大学将ALGOL60语言发展成为CPL(CombinedProgrammingLanguage)。1967年,剑桥大学的马丁·理查德(MartinRichard)对CPL进行了简化,于是产生了BCPL(BasicCPL)。1970年,美国贝尔实验室的肯·汤姆森(KenThompson)将BCPL进行了修改,并为它起了一个有趣的名字“B语言”,意思是将CPL语言中的精华提炼出来,并且他用B语言写了第一个UNIX操作系统。1973年,美国贝尔实验室的丹尼斯·瑞切(DennisM·Ritchie)在B语言的基础上最终设计出了一种新的语言,他用BCPL的第二个字母作为这种语言的名字,即C语言。C语言的诞生是和UNIX操作系统的开发密不可分的。原先的UNIX操作系统都是用汇编语言写的。1973年,UNIX操作系统的核心用C语言改写,从此以后,C语言成为编写操作系统的主要语言。为了推广UNIX操作系统,1977年,DennisM·Ritchie发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护,同时表现能力和处理能力极强。C语言不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构,还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体,既可用于系统软件的开发,也适合于应用软件的开发。此外,C语言还具有效率高、可移植性强等特点,因此被广泛地移植到了各类型计算机上,从而形成了多种版本的C语言。1.1C语言概述1.1.1C语言的发展及特点第1章初识C语言和程序设计随着微型计算机的日益普及,出现了许多C语言版本。由于没有统一的标准,使得这些C语育之间出现了一些不一致的地方。为了改变这种情况,1978年,布瑞恩·科尼森(BrianW·Kernighian)和DennisM·Ritchie出版了名著《C语言程序设计》(TheCProsrammingLanguage),从而使C语言成为当时世界上广泛流行的程序设计语言。1983年,美国国家标准协会(AmericanNationalStandardsInstitute,ANSI)在此基础上制定了一个C语言标准,称之为ANSIC。随着C语育被广泛关注与应用、ANSIC标准于1989年发布,该标准一般被称为ANSIC/ISOMandardC,成为现行的C语言标准,而且C语言也随之成为最受欢迎的语言之一,许多著名的系统软件都是用C语育编写的。1995年出现了C++语言。C++在ANSIC的基础上增加了一些库函数。进一步扩充和完善了C语言,成为一种面向对象的程序设比语言。C++目前流行的最新版本是MicrosoftVisualC++6.0,提出了一些更为深人的概念,它所支持的面向对象概念很容易将问题空间直接映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法,但同时也增加了整个语言的复杂性,掌握起来有一定难度。C语言是C++语言的基础,两种语言在很多方面是兼容的,因此,掌握了C语言,再进一步学习C++语言,就能以一种熟悉的语法面向对象的语言,可以达到事半功倍的目的。1.1C语言概述1.1.1C语言的发展及特点第1章初识C语言和程序设计2.C语言的特点C语言是一种极具生命力的语言、它其有很多特点,一般可归纳如下。(1)C语言具有结构语言的特点、程序之间很容易实现段的共享。它采用结构化的流程控制语句实现选择结构、循环结构、允许采用缩进的书写形式编程。因此,用C语言编写的程序层次结构清晰。(2)C语言的主要结构成分是函数。函数作为C程序的模块单位,便于实现程序的模块化、而且便于模块间相互调用及数据传递。(3)运算符丰富。C语言有34种运算符和15个等级的运算优先顺序,表达式类型多样、可以实现其他语言难以实现的运算。(4)数据类型丰富。C语言数据类型有整型、实型、字符型、数组类型、指针类型、结构体类型、共同体类型及枚举类型,能用来实现各种复杂的数据结构运算。(5)比较接近硬件。C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。(6)语法限制少,程序设计自由度大。C语言允许程序编写者有较大的自由度,放宽了以往高级语言严格的语法检查,较好地处理了“限制”与“灵活”之间的矛盾。(7)生成目标代码质量高,程序执行效率高。C语言描述问题比汇编语言迅速,工作量小,可读性好,易于调试、修改和移植,而代码质量与汇编语言相当,C语言只比汇编程序生成的目标代码效率低10%~20%。(8)可移植性好。C语言的编译程序便于移植,C语言编制的程序基本上不做修改就能用于各种型号的计算机和各种操作系统。1.1C语言概述1.1.1C语言的发展及特点第1章初识C语言和程序设计程序是为实现特定目标或解决特定问题而用计算机语言(程序设计语言)编写的一系列语句和指令,计算机能严格按照这些指令去做。程序的执行过程实际上是对程序所表达的数据进行处理的过程。一方面,程序设计语言提供了一种数据表达与数据处理的功能;另一方面,编程人员必须按照程序设计语言的语法要求进行编程。程序具有以下特点。(1)完成某一特定的任务;(2)使用某种程序设计语言描述如何完成该任务;(3)存储在计算机中,并且被运行后才能起作用。自1946年世界上第一台电子计算机问世以来,计算机应用已经渗透到人们生活的方方面面,极大地推动了社会的进步与发展。特别是因特网(Internet)的发展,从根本上改变了人们的生活方式,人们已经难以摆脱对计算机的依赖。计算机能有如此神奇的力量,与构成计算机系统的硬件与软件密不可分。硬件是物质基础,而软件则是计算机的灵魂。几十年来计算机硬件技术在不断地飞速发展着,同时软件技术也没有停止前进的步伐,用来开发软件的程序设计语言经过多年的发展,其技术和方法日臻成熟,其发展经历了几个阶段。1.1C语言概述1.1.2程序设计语言的发展第1章初识C语言和程序设计1.机器语言机器语言属于第一代计算机语言。按照冯·诺依曼原理,计算机内部运算采用的是二进制,也就是说计算机只能识别和接受由0和1组成的指令,人们要使计算机知道和执行自己的意图,就要编写许多条由0和1组成的二进制指令代码。这种计算机能直接识别和接受的二进制代码称为机器指令(machineinstruction)。机器指令的集合(即指令系统)就是该计算机的机器语言。用机器语言编写的程序称为目标程序(ObjectProgram),目标程序可以被计算机直接执行,且运行效率是最高的。但由于不同类型计算机的指令系统存在差异,因而在一种类型计算机上编写的机器语言程序,在另一种不同类型的计算机上也可能不能运行。显然,机器语言与人们习惯用的语言差别太大,由于其难学、难写、难记、难修改,采用机器语言编程,只是极少数人能够完成的工作。2.汇编语言为了减轻使用机器语言编程的困难,人们采用助记符来代替机器指令的二进制串,如ADD表示加法,SUB表示减法,MOV表示传送数据等。这样就能使运算指令使用符号而不再使用二进制表示。采用这种方法所编写的程序,容易被人读懂,程序的修改与维护也很方便,这种程序设计语言就是汇编语言,也称为第二代计算机语言。汇编语言同样十分依赖于机器硬件,可移植性不好,但运行效率仅次于机器语言。针对计算机特定硬件而编制的汇编语言程序能准确地发挥计算机硬件的功能和特长,程序精炼而且质量高,至今仍有一些专业程序员在使用其开发应用软件。由于机器语言与汇编语言均很“接近”计算机,人们常常称它们为“低级语言”。1.1C语言概述1.1.2程序设计语言的发展第1章初识C语言和程序设计3.高级语言汇编语言依赖于硬件,使得程序的移植性极差,而且编程人员在使用新的计算机时还需学习新的汇编指令,大大增加了编程人员的工作量,为了克服低级语言的缺陷,人们在实践中逐渐认识到,应该设计一种这样的语言:接近于数学语言或人的自然语言(英语),同时又不依赖于计算机硬件,编制的程序能在所有的机器上通用。经过不懈努力,1954年,第一个完全脱离机器硬件的高级语言FORTRAN(FORmulaTRANslator,公式翻译器)语言问世了。在使用该语言所编写的程序中,语句和指令是用英文单词表示的,所用的运算符和运算表达式与人们日常所用的数学公式差不多,很容易理解。这种语言功能很强,且不依赖于具体机器,用它编写的程序几乎可以在任何型号的机器上运行,人们把这种语言称为“高级语言”。高级语言比汇编语言更贴近于人类使用的语言,易于理解、记忆和使用。高级语言和计算机的架构、指令集无关,具有良好的可移植性,人们可以更有效、更方便地用它来编制各种用途的计算机程序。当然,高级语言编写的程序是不能被计算机直接运行的,同样需要经过“翻译”。这里我们将高级语言编写的程序称为源程序(SourceProgram),将源程序翻译成目标程序的程序称为编译程序。自从第一个高级语言问世,几十年来先后出现的高级语言有上千种,比较有影响的有FORTRAN、ALGOL、COBOL、BASIC、QBASIC、Pascal、LISP、C、C++、VC、Delphi、VisualBasic、JAVA、C#、Python等1.1C语言概述1.1.2程序设计语言的发展第1章初识C语言和程序设计按照语言的特性,高级语言又经历了不同的发展阶段。(1)非结构化的语言。人们在使用早期的高级语言编程时,编程风格比较随意,没有编程规范可以遵循,程序中的流程可以随意跳转。程序员往往只追求程序的执行效率,而不顾及程序的结构,使程序变得难以阅读和维护。早期的FORTRAN、ALGOL和BASIC都属于非结构化的语言。非结构化编程的后果是严重的,到了20世纪60年代中后期,开发的软件越来越多,规模越来越大,但软件的正确性却越来越难以保证,直接导致许多耗费巨资开发的软件由于含有错误而不能使用,计算机界出现了“软件危机”。(2)结构化的语言。为了解决非结构化的语言所带来的问题,1969年提出了“结构化程序设计方法”,1970年第一个结构化程序设计语言Pascal语言出现,标志着结构化程序设计时期的开始。结构化程序设计方法规定:程序必须由具有良好特性的基本结构(顺序结构、分支结构、循环结构)构成,程序中的流程不允许随意跳转,程序总是由上而下顺序执行各个基本结构。采用结构化的语言所编制的程序结构清晰,易于阅读和维护。QBASIC、Pascal和C都属于结构化的语言。(3)面向对象的语言。自20世纪80年代开始,提出了面向对象(ObjectOriented)的程序设计思想。相比而言,之前的高级语言可以称之为面向过程的,程序的执行是流水式的,即在一个模块被执行完成前,不能去执行另一个模块,程序员不能随意地去改变程序的执行流程。除此之外,程序中不仅需要实现每一个过程的细节,而且程序不易重复使用。这些都与人们日常处理事务的方式是不一致的,人们所希望的是在对象(Object)的每一个事件发生时都能得到及时地处理,也就是说,不能面向过程,而是面向一个个对象。对象是数据以及对数据所进行的操作的封装体,所以采用面向对象的程序设计方法开发应用程序变得更容易,耗时更少,效率更高。C++、C#、VisualBasic和JAVA等语言均是支持面向对象程序设计方法的语言。1.1C语言概述1.1.2程序设计语言的发展第1章初识C语言和程序设计程序设计语言是人与计算机进行交流的桥梁,人要让计算机按照自己的意愿处理数据,就必须用程序设计语言表达所要处理的数据以及控制数据处理的流程。因此,程序设计语言必须具有数据表达(即变量定义)与数据处理(即流程控制)的能力。1.数据表达数据是计算机处理的对象,在解决实际问题时,通常包含着各种类型的数据,数据类型(DataTType)就是对某些具有相同性质的数据集的总称。例如整数、实数均是最基本的数据类型。数据类型有两个含义:该数据类型能表示些什么样的数据(即取值范围)?能对这些数据进行何种操作(即运算类型)?例如,在VisualC++中shortint(短整型)类型的取值范围为-32768~+32767,而+、-、*、/、%则是作用在该类型上的运算。通常每种程序设计语言中,都事先定义了几种基本的数据类型,用来定义程序中用到的数据。例如,整型、实型、字符型等。这些基本的数据类型可以定义的数据对象表现为两种形式:常量(又称常数)和变量。常量的值在程序中是不改变的。例如,在C语言中,2是一个整型常量,2.0是一个实型常量,'2'是一个字符型常量。变量的值则可以随时改变。在C语言中,使用inta定义了一个整型变量a,则a=10表示给变量a赋值10。在许多程序设计语言中,基本的数据类型可以用于构造复杂的数据类型,以表达实际问题中存在的复杂的数据结构。例如,可以用基本的数据类型构造出数组(Array)、结构(Structure)、指针(Pointer)等复杂类型。在C语言中inta[10]是用整型构造出一个包含10个元素的数组,a为数组名,数组中的10个元素均为一个整型变量。1.1C语言概述1.1.3程序设计语言的功能第1章初识C语言和程序设计2.流程控制程序设计语言除了具备良好的数据表达能力之外,还必须提供对不同类型的数据进行处理的手段。对数据的处理是通过语言的一系列流程控制语句实现的。按照结构化程序设计的观点,任何程序的基本结构都可以通过3种基本的控制结构进行组合来实现。分别是顺序结构、选择结构和循环结构。(1)顺序控制结构。一条语句执行完后,按自然顺序执行下一条语句。C语言中的赋值语句、输入、输出等都构成了顺序结构。(2)分支控制结构。又称选择结构。计算机在执行程序时,常常需要根据不同的条件选择执行不同的语句。例如,C语言中的if与switch语句都可以构成选择结构。(3)循环控制结构。许多时候,计算机需要重复执行相同的语句。重复执行一般是有条件的,在条件满足时,重复执行;在条件不满足时,则不会重复执行。C语言中的for、while与do-while语句都可以构成循环结构。这三种结构的共同特点是:①只有单一的入口和单一的出口;②结构中的每个部分都有被执行的可能;③结构内不应出现永不终止的死循环。当所要求解的问题复杂时,所编写的应用程序经常由上万条语句组成,需要由多人来完成。这时,常常要将一个大任务分解为若干个子任务,每个子任务又分成很多个小子任务,每个小子任务只完成一个简单的功能。在程序设计时,用一个个小模块来实现这些小子任务。而每一个小模块基本上均由上述的3种基本结构组合而成,这种程序设计方法就是结构化程序设计(StructuredProgramming),C语言就是典型的结构化程序设计语言。1.1C语言概述1.1.3程序设计语言的功能第1章初识C语言和程序设计1.2.1C语言程序的开发过程1.2.2C语言运行环境的应用1.2C语言开发环境第1章初识C语言和程序设计用C语言编写的程序称为源程序,是不能直接运行的。一般C程序开发要经历编辑、编译、连接和运行4个基本步骤,其操作过程,如图1.1所示。1.2C语言开发环境1.2.1

C语言程序的开发过程第1章初识C语言和程序设计1.编辑一般来说,编辑是指对C语言源程序的录入和修改。要使用字处理软件或编辑工具(VisualC++)将源程序以文本文件形式保存到磁盘,建议采用VisualC++6.0,易于编辑和程序结构布局。源程序文件名由用户自己选定,但扩展名必须为.c。2.编译编译就像某语种的翻详一样,编译的功能就是调用“编译程序”,将已编辑好的源程序翻译成进制的目标代码。如果源程序没有语法错误,将产生一个与源程序同名,以.obj为扩展名的目标程序;如果发现错误,则不能生成目标程序,需要回到编辑状态修改源程序,直到没有错误为止。3.连接编译后产生的目标程序往往形成多个模块,还要和库函数进行连接才能运行,连接过程是使用系统提供的“连接程序”运行的。连接后,会产生以.exe为扩展名的可执行程序。4.运行可执行程序生成后,就可以在操作系统的支持下运行。若执行结果达到预期的目的,则开发工作到此完成;否则就要进一步检查修改源程序,重复上述步骤,直到取得最终的正确结果为止。1.2C语言开发环境1.2.1

C语言程序的开发过程第1章初识C语言和程序设计程序设计语言一般都有其编译运行环境。运行环境一般包括代码编辑器、编译器、调试器和图形用户界面工具,集成了代码编写功能、分析功能、编译功能、调试功能。这种集成了编译、运行、调试等功能的软件套组称作集成开发环境(IntegratedDevelopmentEnvironment,IDE)。C语言的IDE很多,有的教程使用的是TurboC运行环境。本书采用VisualC++6.0(以下简称VC++6.0)编译程序作为C语言的IDE。VC++6.0是C++程序默认的编译器,因为C++是在C语言基础上产生的,所以也兼容C语言的编译和运行。VC++6.0具有方便、直观、快捷的编辑器及丰富的库函数,能够把程序编辑、编译、连接和运行等操作全部集中在一个软件中进行,十分方便。1.启动VC++6.0选择“开始”“程序”“MicrosoftVisualC++6.0”选项,或者双击桌面上的快捷方式图标,启动VC++6.0编译系统,VC++6.0主界面窗口,如图1.2所示。1.2C语言开发环境1.2.2C语言运行环境的应用第1章初识C语言和程序设计1.2C语言开发环境1.2.2C语言运行环境的应用第1章初识C语言和程序设计1.2C语言开发环境1.2.2C语言运行环境的应用第1章初识C语言和程序设计1.2C语言开发环境1.2.2C语言运行环境的应用第1章初识C语言和程序设计1.2C语言开发环境1.2.2C语言运行环境的应用第1章初识C语言和程序设计1.2C语言开发环境1.2.2C语言运行环境的应用第1章初识C语言和程序设计1.2C语言开发环境1.2.2C语言运行环境的应用第1章初识C语言和程序设计1.3简单的C语言程序1.3.1C语言的基本结构要用C语言编写程序,就要了解C语言的结构特点、编写规则,学会使用C语言的编译运行环境。1.C语言程序的构成概括地说,一个C语言源程序可由5个部分组合,即预处理(文件包含属于预处理内容)、变量说明、函数原型声明、主函数和自定义函数。(1)并非所有C语言源程序都必须包含上述5个部分,一个最简单的C语言程序可以只有文件包含部分和主函数部分。(2)每个C语言源程序都必须有且只能有一个主函数,主函数的组成形式如下。main(){变量说明部分程序语句部分}(3)每个C语言源程序可以有零个或多个自定义的非主函数,自定义非主函数的形式与主函数形式相同,只是它的名称不能是main,形式如下。函数名([参数列表]){变量说明部分程序语句部分}第1章初识C语言和程序设计1.3简单的C语言程序1.3.1C语言的基本结构(4)C语言源程序的每个语句必须用分号“;”结束。对于其中各部分的作用、使用方法和采用什么语句来完成,可以在后续章节中通过对基本表达式、结构控制语句的学习进一步掌握,并通过了解模块化设计等方面的内容,来掌握C语言程序设计的思想。(5)当C语言源程序由多个函数组成时,主函数可以定义在程序中的任何位置,但不能在其他函数体内定义,不论主函数处于源程序的任何位置,程序总是从主函数开始执行,且总是在主函数中结束执行的。为了说明C语言源程序结构的特点,先看一下【实例1.1】的程序,这个程序表现了C语言源程序在组成结构上的特点。虽然有关内容还未介绍,但大家可从这个例子中了解到组成一个C语言源程序的基本结构和书写格式。第1章初识C语言和程序设计1.3简单的C语言程序1.3.1C语言的基本结构【实例1.1】使用C语言编程,在屏幕上显示“欢迎使用C语言程序!”,执行程序如下。/*欢迎使用C语言程序!*/ //第1行:注释#include<stdio.h> //第2行:文件包含命令,预处理语句voidmain() //第3行:主函数{printf("欢迎使用C语言程序!\n"); //第5行:输出语句}程序运行结果,如图1.8所示。第1章初识C语言和程序设计1.3简单的C语言程序1.3.1C语言的基本结构这个程序只有几行代码,就完成了在屏幕上输出的功能。我们通过分析上面的示例程序,可以掌握以下知识。(1)代码的注释。示例代码中的第1、2、3、5行后面都可以看到关于代码的文字描述。/*欢迎使用C语言程序!*/ //第1行:注释#include<stdio.h> //第2行:文件包含命令,预处理语句voidmain() //第3行:主函数printf("欢迎使用C语言程序!\n"); //第5行:输出语句源程序中需要解释和说明的部分,可以加以注释,以增加程序的可读性。编译系统会跳过注释行,不对其进行编译。“/*……*/”表示多行注释,“//”表示单行注释。(2)#include指令。示例代码中的第2行代码如下。#include<stdio.h> 以“#”开始的部分是预处理语句。预处理语句的作用不是实现程序的功能,而是给C语言编译系统提供信息,通知C编译器对源程序进行编译之前应该做哪些预处理工作。预处理语句还有其他几种,这里的include称为文件包含语句,其意义是把<>或""内指定的文件包含到本程序中,成为本程序的一部分。#include<stdio.h>也可写作#include"stdio.h"。被包含的文件通常是由系统提供的,其扩展名为.h,因此也称为头文件。C语言的头文件中包括了各个标准库函数的函数原型。因此,凡是在程序中调用一个库函数时,都必须包含该函数原型所在的头文件。源程序中可以有预处理语句,预处理语句通常放在源程序的最前面。第1章初识C语言和程序设计1.3简单的C语言程序1.3.1C语言的基本结构(3)main函数。示例代码中的第3行代码如下。voidmain()//第3行:主函数main是主函数的函数名,表示这是一个主函数。每一个C语言源程序都必须有且只能有一个主函数。C语言的程序总是从主函数开始执行,并且回到主函数结束。其前面的void代表函数没有返回值。主函数也可写为。intmain()int表示函数的返回值是整型,此时函数体内需要加语句return0。为保持一致,本书中的主函数都采用无返回值方式。voidmain()这一部分在函数中称为函数头,main函数下面用花括号{}包含的部分是一个程序模块,称为函数体。函数头和函数体是密不可分的。(4)函数体。示例代码中的4~6行代码,就是函数体。{printf("欢迎使用C语言程序!\n"); //第5行:输出语句}函数体由花括号包含,表明函数要执行的动作。有关函数的内容在本书第7单元详细介绍。第1章初识C语言和程序设计1.3简单的C语言程序1.3.1C语言的基本结构(5)执行语句。函数体中的第5行代码。printf("欢迎使用C语言程序!\n"); //第5行:输出语句printf函数是格式化输出函数。函数体内调用printf函数的功能是把要输出的内容送到显示器输出。printf函数是一个由系统定义的标准函数,可在程序中直接调用。需要说明的是,C语言规定scanf(输入函数)和printf这两个函数可以省去其头文件的包含语句。所以在本例中也可以删去第1行的包含语句#include。“\n”称为转义字符,在此可理解为换行符。2.C语言程序的书写规范做任何事情都要遵守规则和规范,编写程序时要注意程序的书写规范,提高代码的质量,同时养成良好的编程习惯。编写C语言程序需注意以下规范。(1)在C语言中,虽然一行可以有多个语句,例如,“a=1;b=2;”,一个语句也可写多行,但建议一行只写一个语句。(2)一般采用缩进格式为书写格式,以提高程序的可读性和清晰性。(3)C语言源程序代码一般用小写字母书写,除非另有约定,C语言区分大小写。(4)在程序代码中,应加上必要的注释。(5)每一个语句都必须以分号结束,但预处理语句、函数头和花括号“}”之后不加分号;标识符和关键字之间,至少要加一个空格。第1章初识C语言和程序设计1.3简单的C语言程序1.3.2第一个C语言程序【实例1.2】制作个人小名片,显示姓名、性别、学校、系别、专业、联系方式等相关信息。1.制作个人小名片

程序代码如下。/********我的小名片********

#include<stdio.h> voidmain() {printf("**************************\n");printf("姓名:王明\t性别:男\n");printf("学校:辽宁交通职业技术大学\n");printf("系别:信息工程系\n");printf("专业:云计算技术应用\n");printf("电话n");printf("**************************\n");}程序运行结果,如图1.9所示。第1章初识C语言和程序设计1.3简单的C语言程序1.3.2第一个C语言程序2.程序运行说明(1)编译调试输出区错误提示很多怎么办?错误提示很多,不用怕。这些错误往往是由第一个错误引发的。在屏幕下方编译调试输出区中,将滚动条滚动到最上方,找到第一个错误,双击第一个错误,指针就会指向错误所在行。根据错误提示进行修改,再次编译,也许其他错误提示就没有了。(2)初写代码需要注意的问题。①每条语句要以分号结束。②关键字拼写一定要正确,C语言区分大小写。③语句中的引号、分号等标点符号全部是英文半角。④"\n""\t"要写在双引号里面,"\n"表示换行,"\t"表示水平制表符,相当于空格输出。⑤在同一路径下,两个C源程序文件命名不能相同。3.常见编译错误与解决方法

【实例1.3】程序设计过程中常见的错误、警告及解决方法举例如下。(1)没有加入头文件<stdio.h>。代码清单如下。voidmain() {printf("学校:辽宁交通职业技术大学\n");}警告显示:warningC4013:'printf'undefined;assumingexternreturningint解决方法:在主函数的上面加上代码#include<stdio.h>。第1章初识C语言和程序设计1.3简单的C语言程序1.3.2第一个C语言程序(2)语句结束后忘记加分号“;”。代码清单如下。#include<stdio.h> voidmain() {printf("学校:辽宁交通职业技术大学\n")}错误显示:errorC2143:syntaxerror:missing';'before'}'解决方法:在语句printf("学校:辽宁交通职业技术大学\n")后面加上分号“;”。(3)主函数第一个字母大写了。代码清单如下。#include<stdio.h> voidMain() {printf("学校:辽宁交通职业技术大学\n");}错误显示:errorLNK2001:unresolvedexternalsymbol_main解决方法:将Main修改为main。第1章初识C语言和程序设计1.3简单的C语言程序1.3.2第一个C语言程序(4)将英文状态下的双引号""写成中文状态下的双引号“”。代码清单如下。#include<stdio.h> voidmain() {printf(“学校:辽宁交通职业技术大学\n”);}错误显示:errorC2018:unknowncharacter'0xa1'errorC2018:unknowncharacter'0xb0'……解决方法:将中文状态下的双引号“”修改为英文状态下的双此号""。感谢您的观看ThankYOU!C语言程序设计第2章C语言数据与运算C语言程序设计第2章C语言数据与运算2.1.1C语言的数据类型2.1.2进制与进制转换2.1.3整数类型2.1.4实数类型2.1.5字符类型2.1数据类型第2章C语言数据与运算计算机中的数据信息,如文字、图像、声音等,都是使用二进制数来存放的。那么计算机是如何区分这些信息的呢?这取决于计算机如何解释这些二进制数据。如一段二进制数据01100001,如果解释为整型数据是97,如果解释为字符型数据是'a'。数据类型是指数据在内存中的表现形式,不同的数据类型在内存中的存储方式是不同的,在内存中所占的字节数也是不同的。C语言程序中所用到的每一个常量、变量和函数等程序的基本操作对象都有一种数据类型与之相联系,人们根据实际需要,将数据分为了不同的类型,在C语言中,数据类型可分为基本类型、构造类型、指针类型、空类型四大类,如图2.1所示。2.1数据类型2.1.1C语言的数据类型第2章C语言数据与运算1.基本类型基本类型最主要的特点是其值不可以再分解为其他类型,主要为整型、字符型和实型(浮点型)。2.构造类型构造类型是根据已定义的一个或多个数据类型用构造的方法来定义的。也就是说,一个构造类型的值可以分解成若干个“成员”或“元素”,每个“成员”又是一个基本类型或一个构造类型。在C语言中,构造类型有数组类型、结构体类型、共同体(联合)类型和枚举类型4种。3.指针类型指针类型是一种特殊的、具有重要作用的数据类型,其值用来表示某个变量在内存储器中的地址。虽然指针变量的取值类似于整型量,但这是两个类型完全不同的量,因此不能混为一谈。4.构造类型调用函数时,通常应向调用者返回一个函数值,这个返回的函数值是具有一定的数据类型的。有一类函数,调用后并不需要向调用者返回函数值,这种函数可以定义为“空类型”,其类型说明符为void。2.1数据类型2.1.1C语言的数据类型第2章C语言数据与运算在计算机中数据是以二进制形式存放的,但实际上,不管用使用哪种形式来表示数据,数据本身是不会发生变化的,不同进制的数据是可以相互转换的。1.进制进制是一种计数机制,在C语言程序中常用的进制有二进制、八进制、十进制和十六进制。(1)二进制。在绝大多数计算机系统中,数据通常是以二进制的形式存在的。二进制是一种“逢二进一”的进制,它用0和1两个符号来描述。当用二进制表示十进制数字2时,由于二进制的符号只有0和1,因此根据“逢二进一”的规则,需要向高位进一位,表示为0010。同理,使用二进制表示十进制数字4时,继续向高位进一位,表示为0100。(2)八进制。八进制是一种“逢八进一”的进制,它由0~7共8个符号来描述。在C语言中添加前缀数字0以表示八进制数。当使用八进制表示十进制数字8时,由于表示八进制的符号只有0~7,因此根据“逢八进一”的规则,需要向高位进一位,表示为010。同理,使用八进制表示十进制数字16时,继续向高位进一位,表示为020。(3)十六进制。十六进制是一种“逢十六进一”的进制,它由0~9、A~F共16个符号来描述。在C语言中添加前缀数字0和字母X(或x)以表示十六进制数。当使用十六进制表示十进制数字16时,由于表示十六进制的符号只有0~9、A~F,因此根据“逢十六进一”的规则,需要向高位进一位,表示为0X10。同理,使用十六进制表示十进制数字32时,继续向高位进一位,表示为0X20。2.1数据类型2.1.2进制与进制转换第2章C语言数据与运算2.进制转换计算机中的一个数值可以用不同的进制形式来表示,十进制数0~15与二进制数、八进制数以及十六进制数的对应关系,如表2.1所示。2.1数据类型2.1.2进制与进制转换第2章C语言数据与运算(1)二进制、八进制、十六进制数转换为十进制数。二进制、八进制、十六进制数转换为十进制数的规律是相通的,通常采用“按权求和”的方法,即把二进数(或八进制、十六进制数)按位权的形式展开为多项式和的形式,求其最后的和就是其对应的十进制数。2.1数据类型2.1.2进制与进制转换第2章C语言数据与运算(2)十进制数转换为二进制、八进制、十六进制数。将一个十进制数转换为二进制数,需要将整数部分和小数部分分别转换,再加以合并。将十进制整数转换成二进制数通常采用“除2取余法”,即用2整除十进制整数,求得一个余数,再用2整除商,求得第2个余数,如此进行,直到商小于1时为止。把先得到的余数作为二进制的低位有效位,后得到的余数作为二进制的高位有效位,依次排列就求出了二进制数的整数部分。将十进制小数转换成二进制小数采用“乘2取整”法,即用2乘十进制小数,将积的整数部分取出,再用2乘余下的小数部分,再将积的整数部分取出,如此进行,直到乘积中的小数部分为零为止。然后把先取出的整数作为二进制小数的高位有效位,后取出的整数作为二进制小数的低位有效位,依次排列就求出了二进制数的小数部分。如果乘积中的小数部分总不为零,那步骤进行到达到题目所要求的精度即可。2.1数据类型2.1.2进制与进制转换第2章C语言数据与运算【实例2.5】将25转换为八进制数。解:25÷8=3 余数为13÷8=0 余数为3所以25=(31)8【实例2.6】将25转换为十六进制数。解:25÷16=1 余数为91÷16=0 余数为1所以25=0X192.1数据类型2.1.2进制与进制转换第2章C语言数据与运算(3)二进制数与八进制数的转换。二进制数转换为八进制数,通常采用“取三合一法”,即以二进制的小数点为分界点,将二进制数整数部分从右向左、小数部分从左向右,每3位分一组(如果整数最高位或小数最低位分组内的数据不足3位,可以填0以凑足3位)。每组中的3位二进制按权求和相加就得到1位八进制数。将各组依次得到的数字连接起来,就构成对应的八进制数。2.1数据类型2.1.2进制与进制转换第2章C语言数据与运算(4)二进制数与十六进制数的转换。二进制转换为十六进制,通常采用“取四合一法”,即以二进制的小数点为分界点,将二进制数整数部分从右向左、小数部分从左向右,每4位分一组(如果整数最高位或小数最低位分组内的数据不足4位,可以填0以凑足4位)。每组中的4位二进制按权求和相加就得到1位十六进制数。将各组依次得到的数字连接起来,就构成对应的十六进制数。2.1数据类型2.1.2进制与进制转换第2章C语言数据与运算C语言提供了多种整数类型,如基本整型、长整型、短整型、无符号型、无符号长整型等,以适应不同应用需求。各类整型数据的区别在于:采用不同位数的二进制编码表示,占用不同的存储空间,表示不同的数值范围。以常用的32位计算机系统为例,各类整数类型名、类型标识符、占据的字节数以及取值范围,如表2.2所示。2.1数据类型2.1.3整数类型第2章C语言数据与运算整数分为有符号数和无符号数。有符号定点数在计算机中是以二进制形式表示的,有3种表示方法,即原码、反码和补码。3种表示方法均由符号位和数值位两部分构成。符号位在最高位,用0表示“正”,用1表示“负”;其余位是数值位。3种表示方法各不相同。原码:按照二进制的方法来表示数的绝对值。用这样的表示方法得到的就是数的原码。反码:正数的反码与其原码相同;负数的反码为其原码除符号位以外的各位按位取反。补码:正数的补码与其原码相同;负数的补码是将其原码除符号位以外的各位求反之后,在末位再加1。下面以机器字长为8位二进制数为例,列举几个十进制数对应的二进制原码、反码、补码,如表2.3所示。2.1数据类型2.1.3整数类型第2章C语言数据与运算(2)正数的原码、反码、补码均相同。负数的补码,除符号位外,各位求反之后在末位加1,就得到了其原码。如果加1之后有进位,要往前进位,包括符号位。补码与原码相互转换,其运算过程是相同的。例如,(1)中例子的运算结果为10000010,将数值位取反之后加1为:11111110,即-126的原码。为表述简单,表2.3的二进制数据是以8位机系统为例,32位机系统的情况以此类推即可。2.1数据类型2.1.3整数类型第2章C语言数据与运算2.1数据类型2.1.4实数类型第2章C语言数据与运算2.1数据类型2.1.5字符类型第2章C语言数据与运算2.2.1常量和符号常量2.2.2变量2.2常量与变量第2章C语言数据与运算在C语言中,对于基本类型数据,按其取值是否可改变又分为常量和变量两种。在程序执行过程中,值不发生改变的量称为常量,值可变的量称为变量。它们可与数据类型结合起来分类,例如,可分为整型常量、整型变量、浮点常量、浮点变量、字符常量及字符变量。在程序中,常量是可以不经说明而直接引用的,而变量则必须先定义后使用。1.标识符和关键字(1)标识符是对变量名、函数名、标号和其他各种用户定义的对象的命名。命名规则:标识符由字母、数字或者下画线组成,且第一个字符必须是字母或下画线。注意:标识符区分大小写。标识符的有效长度取决于具体的C语言编译系统。标识符的书写一般采用具有一定实际含义的单词,这样可提高程序的可读性。标识符不能与C语言的关键字相同,也不能与自定义函数或C语言库函数相同。2.2常量与变量2.2.1常量和符号常量第2章C语言数据与运算(2)关键字是具有固定名字和特定含义的特殊标识符,也称保留字,不允许程序设计者将它们另做别用。C语言中有如下大约32个关键字。①数据类型定义:typedef。②数据类型:char,double,enum,float,int,long,short,struct,union,unsigned,void,signed,volatile,auto,extern,register,static,const。③运算符:sizeof。④语句:break,case,continue,default,do,else,for,goto,if,return,switch,while。2.2常量与变量2.2.1常量和符号常量第2章C语言数据与运算2.直接常量直接常量包括整型常量、实型常量、字符常量、字符串常量和符号常量。(1)整型常量。整型常量就是整常数,在C语言中有如下3种表示形式。①十进制整常数。例如:56、-101、8等。②八进制整常数。例如:016(十进制数14)、0177777(十进制数65535)、-010(十进制数-2)等是合法的八进制数。常数126(无前缀0)、019(包含了非八进制数码9)不是合法的八进制数。③十六进制整常数。例如:0X2A(十进制数42)、0x1AB0(十进制数6832)、0XFFFF(十进制数65535),都是合法的十六进制数。3B(无前缀)、0X2H(包含了非十六进制数码H)不是合法的十六进制数。2.2常量与变量2.2.1常量和符号常量第2章C语言数据与运算(2)实型常量。实数在C语言中又称浮点数。实数有以下两种表示方法。①小数形式。由数字0~9和小数点组成(注意必须有小数点)。例如:0.0、36.5、1.34、22.12、-38.44等均为合法的实型常量。②指数形式。由十进制数加阶码标志小写字母“e”(或大写字母“E”)和阶码(必须是整数)组成。其中,字母e(E)前面必须有数字,后面必须是整数。例如,4.2E5表示4.2x105,3.8e-3表示3.8x10-3,-2.7E-2表示-2.7x10-2。以下不是合法的实型常量。1)456(无小数点)。2)E5(阶码“E”之前无数字)。3)23.-E2(负号的位置不对)。4)3.8E(无阶码)。2.2常量与变量2.2.1常量和符号常量第2章C语言数据与运算(3)字符常量。字符常量是用一对单撇号(西文单引号)括起来的一个字符。例如,'a'、'C'、'='、'?'、'8'都是字符常量。在计算机中,字符常量有以下特点。①字符常量只能用单引号括起来,不能用双引号或其他符号括起来。②字符常量只能是单个字符,不能是多个字符。③字符可以是字符集中的任意字符。字符集是一个允许使用的字符的集合,在大部分计算机上广泛采用的是ASCII编码字符集。常用字符与ASCII码对照表见附录A。2.2常量与变量2.2.1常量和符号常量第2章C语言数据与运算大家不必全部记住所有字符的ASCII值,只需要了解一些ASCII码的基本知识即可。标准ASCII码有128个字符,其中需要注意的有以下几点。①码值0~31为控制字符(不可显示字符),它们有特殊的用途。例如,回车换行、文件结束标志、字符串结束标志等。②码值32为空格符编码,被认为是可以显示字符中码数最小的字符。③10个阿拉伯数字0~9的码值是连续的。④26个英文字母分为大小写。大写字母A~Z、小写字母a~z是连续的。由于大写字母Z和小写字母a之间还有6个其他字符,所以大小写字母之间的转换要通过加(减)32来实现。⑤上面这些字符的ASCII值大小顺序如下。空格<数字<大写字母<小写字母由于字符常量在计算机中是以ASCII码形式存储的,因此,它可以参与各种运算。1)'B'-'A'值为1(字符'’B'的ASCII值66减去字符'A'的ASCII值65结果为1);2)'A'+2值为67(字符'A'的ASCIII值65加上2,等于字符'C'的ASCII值67);3)'b'-32值为66(字符'b'的ASCII值98减去32等于66,是字符'B'的ASCII值);4)'9'-'0'的值为9(字符'9'的ASCII值57减去字符'0'的ASCII值48等于9);5)'c'<'d'的值为True(字符'c'的ASCII值小于字符'd'的ASCII值)。2.2常量与变量2.2.1常量和符号常量第2章C语言数据与运算⑥在C语言中,还有一些字符比较特殊,不可视或者无法通过键盘输入。如换行符、回车符等。解决的办法是由一个反斜杠(\)后跟规定字符构成,具有特定含义,称为转义字符。在程序的编译过程中,转义字符是作为一个字符处理的,存储时占用1个字节。常用的转义字符的定义,如表2.4所示。2.2常量与变量2.2.1常量和符号常量第2章C语言数据与运算【实例2.11】转义字符的使用。

程序代码如下。#include<stdio.h>voidmain(){printf("\"verygood!\"\n");printf("My\thouse.\n");printf("Iamhap\160\x79.\n");printf("Whereare\b\b\bareyou?\n");}程序运行结果如下。"verygood!"Myhouse.Iamhappy.Whereareyou?2.2常量与变量2.2.1常量和符号常量第2章C语言数据与运算(4)字符串常量。字符串常量简称字符串,是用一对双撇号(西文双引号)括起来的一串字符。字符的个数称为字符串的长度。如"Hello"、"a"、"C语言"都是字符串常量。字符串常量和字符常量的区别如下。①字符常量是由单引号括起来的字符,而字符串常量是由双引号括起来的字符。尽管'a'与"a"都含有一个字符,但在C程序中,它们具有不同的含义。②字符常量只能是一个字符,字符串常量可以包含零个或多个字符。③可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。④字符常量占1个字节内存空间,字符串常量所占内存的字节数等于其字符的个数加1。在字符串结尾,计算机自动加上字符'\0',表示该字符串的结束。因此,字符串常量的存储单元个数要比字符串中字符的个数多1。例如,字符串常量"a"在内存中占2个字节,分别存储'a'和'\0'。字符串"Thisisacup"字符个数为13,但占用14个字节,最后一个字节存放'\0'。字符个数为0的空串""实际上也存了一个字符'\0'。由于字符'\0'的ASCII值为0,因此可以作为检查字符串是否结束的标志。在C语言中没有专门的字符串变量,可以用一个字符型数组存放一个字符串。2.2常量与变量2.2.1常量和符号常量第2章C语言数据与运算(5)符号常量。在C语言程序中,可以用一个标识符来代表一个常量,该标识符叫作符号常量。定义符号常量,通常使用编译预处理命令define。其语法结构为:#define标识符常量其中,#define是一条预处理命令(预处理命令都以“#”开头),其作用是把该标识符定义为后面的常量值。符号常量一般用大写字母表示,以便与其他标志相区别。符号常量要先定义后使用。符号常量一经定义,以后在程序中所有出现该标识符的地方均代之以该常量值。例如:#defineNUM100//定义符号常量NUM#definePI3.14159//定义符号常量PI2.2常量与变量2.2.1常量和符号常量第2章C语言数据与运算【实例2.12】使用符号常量计算半径为10的圆的周长和面积。程序代码如下。#include<stdio.h>#definePI3.14voidmain(){printf("圆的周长是:%f\n",2*PI*10);printf("圆的面积是:%f\n",PI*10*10);}程序运行结果如下。圆的周长是:62.800000圆的面积是:314.0000002.2常量与变量2.2.1常量和符号常量第2章C语言数据与运算提示:①一个#define命令只能定义一个符号常量,且用一行书写,不用分号结尾。②符号常量一旦定义,就可以在程序中代替常量使用。由于是常量,所以符号常量在其作用域内不能再被修改或赋值。例如:#defineNUM100intmain(){NUM=10;//编译时会提示错误,符号常量NUM的值不能再被修改}③使用符号常量,增强了程序的可读性和可维护性。当程序中多处使用同一个常量时,如果需要修改该常量的值,修改操作会很烦琐且容易遗漏。而使用了符号常量的话,则只需要修改定义处的值即可。2.2常量与变量2.2.1常量和符号常量第2章C语言数据与运算变量是指在程序运行过程中,其值可以改变的量。变量具有保值的性质,但是当给变量赋新值时,新值会取代旧值,这就是变量的值发生变化的原因。程序中用到的所有变量都必须有一个名字作为标识,变量在使用之前必须先定义,变量在内存中占用一定的存储单元,在该存储单元中存放变量的值,给变量所取的名字叫变量名,给变量命名要符合标识符的命名规则。例如,定义一个变量a,那么内存中就应该开辟一个空间,可以存储数据,如图2.2所示。2.2常量与变量2.2.2变量第2章C语言数据与运算1.变量的定义与使用在C语言中,所有的变量必须先定义后使用。(1)变量的定义。C语言的基本变量类型有整型变量、实型变量和字符型变量。在程序中,使用变量必须先定义。定义一个变量就是要确定其类型与名字(标识符)。变量的类型决定了存储数据的格式和占用内存字节数;变量的名字由用户定义,它必须符合标识符的命名规则。变量定义后,程序通过变量名字读写变量地址中的数据。变量定义的一般形式为:[存储类型]数据类型变量名1[,变量名2,...];下面是一些定义变量的例子。inta,b,c; //定义了3个整型变量floatx; //定义了单精度实型变量xdoublec; //定义了双精度实型变量ccharch; //定义了字符型变量ch2.2常量与变量2.2.2变量第2章C语言数据与运算变量定义时,需要注意以下几点。(1)允许在一个类型说明符后定义多个相同类型变量。类型说明符与变量名之间至少用一个空格间隔,各变量名之间用逗号间隔。(2)最后一个变量名后面用“;”结尾。(3)变量定义必须放在变量使用之前,一般放在函数体开头部分。(4)没有给变量赋初值,并不意味着该变量中没有数值,只表明该变量中没有确定的值,因此直接使用这种变量的话可能产生莫名其妙的结果,有可能导致运算错误。(2)标识符。标识符是用来标识变量、符号常量、数组、函数、文件等名字的有效字符序列。大家以后要学习的变量名、数组名、函数名等都是程序中的标识符。C语言规定,标识符只能由字母、数字、下划线组成,且第一个字符必须为字母或下划线。例如,computer、a01、Student_name、sum、Sum、_sum等都是合法的标识符。标识符中的字母是区分大小写的,如sum、SUM、Sum不能混用。一般情况下,变量名用小写字母,特殊的标识符用大写字母。为了阅读程序方便,标识符最好能够见名知意,如使用英文单词或汉语拼音,但不能出现汉字或其他全角字符。C语言中标识符的长度(字符个数)没有统一规定,多数系统中允许达到32个字符,多于规定长度的字符无效。2.2常量与变量2.2.2变量第2章C语言数据与运算(3)关键字。C语言内部预先定义的标识符称为关键字(或保留字)。关键字不能够作为用户标识符。ANSI标准中规定了32个符号为基本关键字,如下所示。auto break case char const continue default do doubleelse enum exern float for goto if int longregister return short signed sizeof static struct switchtypedef union unsignedvoid volatile while除了关键字以外,尽量不要使用main、printf等库函数的名字作为用户的标识符。(4)变量的初始化。上述变量的定义只是指定了变量名字和数据类型,并没有给它们赋初值。给变量赋初值的过程称为变量的初始化。例如:inta=128,b=-6; //定义了a和b两个整型变量,初值分别为128和-6floatx=10.15; //定义了单精度实型变量x,初值为10.15doublec,d=3.8; //定义了双精度实型变量c和d,并给d赋初值charch='k'; //定义了字符型变量ch,其值为字符k2.2常量与变量2.2.2变量第2章C语言数据与运算2.整型变量(1)整型变量的分类。①基本型:类型说明符为int,在内存中占4字节。②短整型:类型说明符为shortint或者short,在内存中占2字节。③长整型:类型说明符为longint或者long,在内存中占4字节。④无符号型:类型说明符为unsigned。(2)整型变量的定义。变量定义的一般形式如下。类型说明符变量1[=值1],变量2[=值2],①类型说明符与变量名之间至少要有一个空格间隔。②在一个类型说明符后可定义多个相同类型的变量,但变量间要用逗号间隔。③最后一个变量名后必须用分号结束。④[]内的为可选项,即为变量的初始化。例如:inta,b; //a,b为整型变量longx,y; //x,y为长整型变量2.2常量与变量2.2.2变量第2章C语言数据与运算【实例2.13】已知两变量a和b,求a和b之和。程序代码如下。

#include<stdio.h>voidmain(){inta,b,sum;a=10;b=20;sum=a+b;printf("a+b=%d\n",sum);}程序运行结果如下。a+b=30如果将变量定义代码修改为“inta=10,b=20,sum”,结果会是一样的。2.2常量与变量2.2.2变量第2章C语言数据与运算【实例2.14】不同类型整形变量的定义与使用。程序代码如下。#include<stdio.h>intmain(){inta,b,x,y;unsignedlongw;a=10,b=20,w=30;x=a+w;y=b+w;printf("x=%d,y=%d\n",x,y);return0;}程序运行结果如下。x=40,y=50

2.2常量与变量2.2.2变量第2章C语言数据与运算【实例2.15】短整型变量的溢出。程序代码如下。#include<stdio.h>intmain(){shortintx,y;x=32767;y=x+1;printf("x=%d,y=%d\n",x,y);return0;}程序运行结果如下。x=32767,y=-32768短整型变量的取值范围是-32768~32767,变量x的值加1以后超出了该范围,产生意想不到的结果。说明:(1)各种无符号整数所占的字节数与相应的有符号整数相同。但由于省去了符号位,故不能表示负数。(2)有符号整数以二进制补码形式存储。最左边第1位表示符号,该位为0,表示正数,该位为1,表示负数。(3)无符号整数以二进制原码形式存储。2.2常量与变量2.2.2变量第2章C语言数据与运算3.实型变量C语言中实型变量分单精度(float型)和双精度(double型)两类。(1)实型变量的分类。单精度;类型说明符为float,在内存中占4字节。双精度:类型说明符为double,在内存中占8字节。各类实型变量所分配的内存字节数及数的表示范围,如表2.5所示。2.2常量与变量2.2.2变量第2章C语言数据与运算(2)实型变量的定义。实型变量的定义格式和书写规则与整型变量相同。说明:(1)实型变量由有限的存储单元组成,能提供的有效数值有限,这样就存在舍入误差。(2)一个单精度实型变量只能保证7位有效数字,后面的数值是无意义的,并不准确地表示该数。应当避免将一个很大的数和一个很小的数直接相加或相减,否则就会“丢失”小的数。例如:floata,b,c; //a,b,c为单精度实型变量doublex,y,z; //x,y,z为双精度实型变量2.2常量与变量2.2.2变量第2章C语言数据与运算【实例2.16】已知圆的半径,求圆的周长和面积。程序代码如下。#include<stdio.h>voidmain(){floatr=2.5,C,S,pi=3.14; //定义变量并赋值C=2*pi*r; //计算语句S=pi*r*r; printf("圆的周长C=%f,圆的面积S=%f\n",C,S); //输出结果}程序运行结果如下。圆的周长C=15.700001,圆的面积S=19.625001小数点后面默认保留6位。2.2常量与变量2.2.2变量第2章C语言数据与运算【实例2.17】实型数据的舍入误差。程序代码如下。#include<stdio.h>intmain(){ floatx=1234.56789; doubley=1234.123456789; printf("x=%f,y=%f\n",x,y); return0;}程序运行结果如下。x=1234.567871,y=1234.123457由于x是单精度浮点型,有效数字位数为7位,其中整数已占4位,故3位小数之后的均为无效数字。y虽然是双精度型,有效数字位数为16位,但VisualC++规定双精度小数后最多保留6位,其余部分四舍五人。2.2常量与变量2.2.2变量第2章C语言数据与运算4.字符型变量字符型变量的值是字符常量,即用单引号引起来的单个字符。字符型变量的类型说明符是char,其类型说明的格式和命名规则与整型变量相同。例如:charx,y; //x,y为字符变量由于字符常量在内存中占用一个字节,用于存储它的ASCII码值,所以C语言中的字符具有数值特征,可以像整数一样参加运算,允许对整型变量赋以字符值,也允许对字符变量赋以整型值。C语言在输出时,允许把字符变量按整型量输出,也允许把整型量按字符量输出。2.2常量与变量2.2.2变量第2章C语言数据与运算【实例2.18】字符变量的使用。程序代码如下。#include<stdio.h>intmain(){ charc1,c2; intm1;c1='A'; //字符赋值给字符变量c2=66; //整数赋值给字符变量m1='C'; //字符赋值给整型变量printf("%c,\t%d\n",c1,c1); printf("%c,\t%d\n",c2,c2);printf("%c,\t%d\n",m1,m1);return0;}程序运行结果如下。A,65B,66C,672.2常量与变量2.2.2变量第2章C语言数据与运算【实例2.19】把大写字母转换为小写字母。程序代码如下。

#include<stdio.h>intmain(){ charc1,c2;c1='A'; c2='B'; c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论