编程语言基础-C语言_第1页
编程语言基础-C语言_第2页
编程语言基础-C语言_第3页
编程语言基础-C语言_第4页
编程语言基础-C语言_第5页
已阅读5页,还剩440页未读, 继续免费阅读

付费下载

下载本文档

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

文档简介

模块1C语言基础任务1C语言简介任务2C语言基础知识任务3C语言的格式和结构特点任务4C语言程序的基本结构及开发过程任务5C语言上机操作任务1C语言简介1.1.1C语言的发展历程在C语言产生之前,人们编写系统软件主要使用汇编语言。由于用汇编语言编写的程序依赖于计算机硬件,其可读性和可移植性都比较差;而一般的高级语言又不具备低级语言能够直观地对硬件实现控制和操作,并满足程序执行速度快的特点。在这种情况下,人们迫切需要一种既具有高级语言特性,又具有低级语言特性的语言,于是C语言就应运而生了。C语言是在20世纪70年代初问世的。1978年,由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。下一页返回任务1C语言简介后来,由美国国家标准学会在此基础上制定了一个C语言标准,于1983年发表,通常称之为ANSIC。早期的C语言主要用于UNIX系统。由于C语言的强大功能和各方面的优点逐渐为人们所认识、到了80年代,C语言开始进入其他操作系统,并很快在大、中、小和微型等各类计算机上得到广泛的应用,成为当代最优秀的程序设计语言之一。目前最流行的C语言有以下几种版本。①MicrosoftC或称MSC。②BorlandTurboC或称TurboC。③AT&TC。在C的基础上,1983年又由贝尔实验室的BjarneStrou-strup推出了C++。C++进一步扩充和完善了C语言,成为一种面向对象的程序设计语言。上一页返回下一页任务1C语言简介1.1.2C语言的特点(1)语言简洁、紧凑、使用方便、灵活。(2)运算符丰富。(3)数据结构丰富。(4)模块化。(5)语法限制不太严格,程序设计自由度大。(6)C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。(7)生成的目标代码质量高,程序执行效率高。(8)可移植性好。基本不用修改即可用于各种型号的计算机和各种操作系统。上一页返回下一页任务1C语言简介1.1.3C语言的发展及版本C语言的发展历程如下。C语言是美国贝尔实验室的D.M.Ritchie在B语言的基础上设计出来的,此时的C语言只是为了描述和实现UNIX操作系统的一种工作语言。1975年,UNIX第6版公布后,C语言突出的优点引起人们的普遍注意。1977年出现了可移植的C语言。1978年UNIX第7版的C语言成为后来被广泛使用的C语言版本的基础,被称为标准C。上一页返回下一页任务1C语言简介1983年,美国国家标准化协会(ANSI)根据C语言问世以来的各种版本,对C进行发展和扩充,并制定了新的标准ANSIC。1990年,国际标准化组织ISO制定了ISOC标准,目前流行的C语言编译系统都是以它为标准的。上一页返回下一页任务1C语言简介1.1.4C语言的应用C语言应用领域广泛,下面列举了一些C语言的应用。①许多系统软件和大型应用软件都是用C语言编写的,如UNIX、Linux等操作系统。②在软件需要对硬件进行操作的场合,用C语言明显高于其他语言。例如计算机的显卡驱动程序、打印机驱动程序等,其一般都是用C语言编写的。上一页返回下一页任务1C语言简介③在图形、图像及动画处理方面,C语言具有绝对优势,游戏软件的开发主要就是用C语言。④在Internet中,通信程序的编制首选就是C语言。⑤C语言适用于多种操作系统,像Windows、UNIX、Linux等绝大多数操作系统都支持C语言、其他高级语言未必能得到支持,所以在某个特定操作系统下运行的软件用C语言编写是最佳选择。上一页返回任务2C语言基础知识1.2.1数制1.十进制数十进制是日常使用的进制,由0~9这10个数字组成,运算规则是逢十进一。2.二进制数二进制数在日常生活中也会出现,如两只鞋子称为一双,这就是二进制。二进制的基数是2,因此,在二进制中出现的数字只有两个:0和1。二进制的运算规则是逢二进一,因此有如下运算规则:上一页返回下一页任务2C语言基础知识3.八进制数八进制的基数是8,所使用的数字为0、1、2、3、4、5、6、7。其运算规则是逢八进一。4.十六进制数十六进制的基数是16,它使用的数字及字符为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。其中A一F分别代表十进制数的10~15。其运算规则是逢十六进一。5.

数制标记方法为了区分不同进制的数据,可以用圆括号将数据括起来,在括号的右下角以数字2、8、10、16表示该数代表的进制,例如,(100)2、(261)8、(192)10、(1FA)16分别代表示该数代表的是二进制的100、八进制的261、十进制的192、十六进制的1FA。上一页返回下一页任务2C语言基础知识1.2.2

数制之间的转换下面通过一些实例来说明不同进制数相互转换的方法。1.二进制数转换成十进制数2.十六进制数转换成十进制数3.十进制整数转换成二进制数十进制整数转换成二进制数可采用”除2取余法”、直至商为0。如将十进制数28转换成二进制数、如图1-1所示。上一页返回下一页任务2C语言基础知识1.2.3整数的原码、补码、反码表示一般计算机中用16位或32位来表示整数,位数越多,能表示数的范围就越大。整数有正负之分,为此,可以用一个二进制位作为符号位,一般总是最高位,当符号位为0时表示正数,符号位为1时表示负数。例如,当用16位来表示一个整数时,可表示成如下形式:上一页返回下一页任务2C语言基础知识整数也可采用反码表示法,对于负整数来说,符号位为1,但绝对值部分正好与原码相反(即。变为1,1变为0),例如:而实际上、整数在计算机内大多用补码表示,对于负整数而言,符号位仍为”1”,但绝对值部分却是反码的最低位加1得到的结果,例如:上一页返回任务3C语言的格式和结构特点下面通过两个简单的C程序,介绍C语言程序的基本格式和结构特点。返回下一页任务3C语言的格式和结构特点上一页返回下一页任务3C语言的格式和结构特点结合上面两个C程序,进行一下总结。C程序由函数构成,一个C源程序至少包含一个函数(main函数)。C程序从main函数开始执行。一般用小写字母编程,每个语句末尾要有分号。上一页返回下一页任务3C语言的格式和结构特点上一页返回下一页任务3C语言的格式和结构特点上一页返回下一页任务3C语言的格式和结构特点通过以上3个程序,可以看出C语言的以下结构特点。语句是C程序的最小构成单位。main函数是程序执行的起点。C程序书写格式自由。可在C程序的任何部分添加注释语句,以提高程序的可读性。上一页返回任务4C语言程序的基本结构

及开发过程1.4.1C语言的基本结构一个C程序可以由若干个源程序文件(分别进行编译的文件模块)组成,一个源程序文件可以由若干个函数,编译预处理命令,以及全局变量声明等部分组成。(1)函数是程序设计模块化的体现。函数用来完成某个特定的操作,一个程序可以包含很多函数。这些函数可以是由用户自己设计的、也可以是系统提供的库函数。但程序中一定要有一个并只允许有一个主函数main。程序从主函数开始执行,不论main函数在整个程序中的位置如何。main函数可以放在程序最前头,也可以放在程序最后,或者在一些函数之前、在另一些函数之后。其他函数通过主函数或被主函数已经调用的函数调用而间接执行。返回下一页任务4C语言程序的基本结构

及开发过程(2)一个函数由两部分组成。①函数的头部,即函数的第一行。包括函数名、函数类型、函数属性、函数参数(形式参数)名、形式参数类型。一个函数名后面必须跟一对圆括号,函数参数可以没有,如main()②函数体,即函数头部下面大括号{……}中的部分。如果一个函数内有多个大括号,则最外层的一对{}为函数体的范围。函数体一般包括声明部分和执行部分。声明部分主要用于定义所用到的变量,执行部分则由若干个语句组成。即函数一般形式如下:上一页返回下一页任务4C语言程序的基本结构

及开发过程上一页返回下一页任务4C语言程序的基本结构

及开发过程(3)C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上。C程序没有行号,每个语句和数据定义的最后必须有一个分号。分号是C语句的必要组成部分。(4)C语言本身没有输入输出语句。输入和输出的操作是由库函数scanf和printf等函数来完成的。C语言对输入输出实行”函数化”。(5)C程序中为了说明程序的功能或某部分的含义、可以带注释。注释能帮助读者阅读和理解程序。程序编译时,注释被忽略,它不产生代码行。注释内容写在一对符号“/*”和“*/”之间,这是传统c语言中的注释方式,其中的内容可以是一行或几行。自符号“/*”开始到“*/”符号结束,其间的内容都被认为是注释内容。上一页返回下一页任务4C语言程序的基本结构

及开发过程C语言程序的一般组成形式:上一页返回下一页任务4C语言程序的基本结构

及开发过程main()表示主函数,大括号括起来的部分称为函数体每个程序中都必须有且仅有一个main函数主函数的函数体中只包括一个输出语句:printf()是(:语言的输出函数;双引号内的内容按原样输出;“\n”是换行符,即在输出“Iloveyou,China”后光标换到下一行每个语句最后必须有一个分号上一页返回下一页任务4C语言程序的基本结构

及开发过程上一页返回下一页任务4C语言程序的基本结构

及开发过程程序中/*····一/包围的部分为注释(如果在C++的环境下运行C程序、其注释部分可用“//”代替“/*····/”,把注释语句放在“//”之后即可)。注释部分便于阅读程序的人理解程序员的设计意图,并不影响程序的编译和运行。注释可以放在程序中的任何位置。C语言中使用变量作为数据组织的基本形式,变量的基本操作包括变量的定义,变量的赋值以及变量的运算等。程序第4行定义了a、b和c这3个变量,并指定它们为整型(int)变量;程序第5行是两个赋值语句,为变量a和b设定初始值分别为20和15;程序第6行将变量a与b中较大的数赋给变量c上一页返回下一页任务4C语言程序的基本结构

及开发过程1.4.2C语言程序的结构特点(1)一个C语言源程序可以由一个或多个源文件组成。(2)每个源文件可由一个或多个函数组成。(3)一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。(4)源程序中可以有预处理命令(include命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。上一页返回下一页任务4C语言程序的基本结构

及开发过程(5)每一个说明,每一个语句都必须以分号结尾。但预处理命令、函数头和花括号“}”之后不能加分号。(6)标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。(7)C语言程序中可加任意多的注释。通常情况下,“//”注释一行,“/*…*/”注释中间的所有内容。注释不参加编译、因此不进行错误查找处理。(8)用户定义的变量或函数等必须先定义后使用。上一页返回下一页任务4C语言程序的基本结构

及开发过程1.4.3C语言程序的开发过程C语言程序要能够最终实现既定的功能,需要依次经历以下基本环节。编辑:使用C语言编写程序代码,创建源文件。编译:在C程序的编译过程中,可以查出程序中的语法错误。编译器将程序转换为机器代码后,即可生成目标程序(.obi)链接:c程序是模块化设计程序,一个c程序可能由多个程序设计者分工合作编写。最后需要将库函数以及其他目标程序链接为一个整体、生成可执行文件(.exe)运行:运行源文件经过编译链接后生成的可执行文件(.exe),即可获得正确的结果。上一页返回下一页任务4C语言程序的基本结构

及开发过程1.4.4书写C语言程序时应立遵循的原则前提,在某些字符串中可以出现非英文状态输入内容,而C语言的所有标点符号都必须在英文状态下输入。一个说明或一个语句占一行。用{}括起来的部分,通常表示了程序的某一层次结构。{}一般与该结构语句的第一个字母对齐,并单独占一行。低一层次的语句或者说明可比高一层次的语句或者说明缩进若干格后书写。以便看起来更加清晰,增加程序的可读性。上一页返回任务5C语言上机操作1.5.1启动、退出TurboC系统TurboC可安装在软盘和硬盘上,并在其中进行启动。1.软盘启动将#1、#2软盘分别插入A、B驱动器。在DOS提示符下输入TC,然后按回车。即:A>TC(回车)2.硬盘启动进入装有TurboC的子目录,然后输入TC(回车),即:C>CD\TC(回车)(假设TurboC在\TC子目录)C>TC(回车)返回下一页任务5C语言上机操作之后,便进入TurboC集成开发环境,屏幕上出现TC主窗口,由四部分组成:主菜单、编辑窗口、信息窗口和功能键提示行,如图1-2所示。现在就可以根据情况按菜单提示对程序进行各种操作了。3.退出TurboC系统退出TurboC有三种方法:按Alt+X组合键;或按F10+F组合键再按Q键;或按Alt+F组合键再按Q键。即退出集成开发环境到操作系统,出现系统提示符A>(或C>)。上一页返回下一页任务5C语言上机操作1.5.2编辑C源程序这里介绍如何用TurboC集成开发环境提供的文字编辑器来编辑源程序。在启动TurboC,出现Tc主屏后等待输入一个键,按E键,或在其他任何时候按Alt+E组合键(即先按住ALT键,再按E键,下面的组合键按此理解);或按F10再按E键就进入编辑程序了,常用编辑命令见表1-1所示。现在我们输入程序,屏幕如图1-3所示。下面要做的就是要把录入的程序保存到磁盘上。按F10,再按F键;或按Alt+F组合键、出现文件File菜单,屏幕如图1-4所示。上一页返回下一页任务5C语言上机操作文件菜单选择项功能说明见表1-2所示。按S键或W键,读者根据提示输入文件名,如aa.C,程序就被以名字aa.c存到磁盘上。二者的区别在于W每次都提示用户输入文件名,而S在文件已有名字的时候不再提示。如何编辑修改已经存在盘上的源程序文件启动TurboC,按F键,出现文件File菜单,按L键,根据屏幕提示输入文件名aa.c,磁盘上的程序文件被调入TC环境。进入编辑程序,修改过程和前面介绍的相同。程序编辑完成后,就可以进行编译、连接、运行了。上一页返回下一页任务5C语言上机操作1.5.3编译一个源文件C语言是编译型语言吗,编写的源程序必须经过编译,连接生成可执行文件才能运行。对于正在编辑的源程序,在编辑完成时,就可以进行编译。按Alt+C组合键,或按F10+C组合键,屏幕出现编译(Compile)菜单,如图1-5所示,其功能说明见表1-3所示。此时,按C键,开始编译当前C语言源程序,成的目标文件名,例如编译的源文件名为aa.C,则目标文件名为aa.obi上一页返回下一页任务5C语言上机操作TurboC编译时,弹出一窗口,显示编译状态和编译结果。如果发现错误,信息窗口中显示所有错误信息(包括错误在源文件中的位置,错误的原因),我们可以根据错误信息检查源程序,进行编辑修改,再重新编译。一般情况下,一个程序要经过多次编译和修改才能正确地通过编译。对于存在磁盘中的源程序,要进行编译,先启动TurboC、调入源程序(如aa.c),按Alt+C组合键再按C键,就开始进行编译。编译过程完成后,生成的目标文件自动保存到磁盘上,例如编译完aa.c程序后,在操作系统提示符A>(或C>)下输入dir命令,查看磁盘目标,就会发现aa.obj文件。上一页返回下一页任务5C语言上机操作1.5.4连接目标文件连接目标文件的目的就是要生成最终的可执行文件。启动Turboc后,把要连接的c源程序调入Turboc环境(接Alt+

F组合键再按L键,输入文件名如aa.c),按Alt+C组合键,出现编译Compile菜单,按L键,这时如果程序(如aa.c)的目标文件已存在,即开始连接过程,生成可执行文件(如aa.exe)。否则要先进行编译,生成目标文件后再连接。按Alt+C组合键出现编译(Compile)菜单后,按M或B键也可以进行链接生成可执行文件,但这两个功能不论目标文件存在与否,最终都能生成可执行文件,它们可同时完成编译和连接过程。上一页返回下一页任务5C语言上机操作1.5.5运行程序经过上述的c语言程序的编辑、编译、链接,在磁盘上产生了一个可执行文件(如aa.exe)。这时在操作系统提示符下输入可执行文件名、即可得到程序的运行结果。如:在用TurboC集成开发环境开发程序的过程中,编辑、编译、连接、执行这四个步骤是相互独立的。把编辑好的程序保存在磁盘上,可以在以后进行编译、连接、也可以在编译完成后、退出TurboC,以后再进行连接。上一页返回下一页任务5C语言上机操作1.5.6在Windows系统下使用TurboC环境1.启动TurboC环境(1)在“资源管理器”或“我的电脑”中打开TC目录,双击TC.EXE(2)使用“开始”菜单中的“运行”命令,在“运行”窗口中输入“C>\TC\TC.EXE”命令,或用“浏览”选择TC目录下的TC.EXE、然后,单击“确定”按钮。(3)选择“程序”菜单中的“MS一DOS方式”命令,出现DOS提示符,启动TurboC的方法与前面介绍的DOS环境下的方法相同。(4)在系统桌面上创建快捷方式,启动时双击快捷方式即可。上一页返回下一页任务5C语言上机操作2.汉字的使用Windows95/98系统在“MS-DOS方式”下带了一个汉字系统,在DOS提示符下输入命令:C>PDOS95(回车)PDOS95是一个批处理文件,运行完后,系统进入Windows95中文DOS方式。这时按Ctrl+Backspace组合键可在英文和中文状态之间切换,在中文状态下,按Ctrl+Shift组合键可在输入法之间切换。启动了中文DOS方式后,就可以在程序中使用汉字了。上一页返回下一页任务5C语言上机操作1.5.7常用的几种菜单项1.Run菜单用于运行程序,其中包括以下几种菜单项。(1)Run菜单项:运行当前程序,如果程序已经编译和连接,则直接运行。如果编译过的程序有过修改变动,则自动重新进行编译和连接,然后运行。(2)Userscreen菜单项:用户屏幕。当程序运行后、通常会立即返回TC窗口。使用这个菜单项,可以返回到用户屏幕,查看程序运行的显示结果。上一页返回下一页任务5C语言上机操作2.Options菜单用于功能设定。特别要注意其中的Directories菜单项的设定。Directories菜单中的以下几个菜单项,在使用时应事先设定好。假设TC安装在C盘的TC目录下,通常按以下方法对其进行设定。设定后,再使用Directories菜单中的Saveoptions菜单项,将设定保存在C:\tc目录下,所保存的文件名默认为tcconfig.tc上一页返回下一页任务5C语言上机操作3.Compile菜单用于对界面进行动态编辑,菜单命令如图1-6所示,以下是它的两个主要选项的功能。Compile:编译C程序。Link:连接C程序。上一页返回下一页任务5C语言上机操作4.Debug菜单用于调试程序,可以打开一个观察窗口来检查程序中变量的值,如图1-7所示。其功能主要是检查变量当前的值、查看修改一个变量的值时其他变量值的变化情况等。使用这个菜单中的命令可以使调试程序更加方便,在调试复杂的程序时尤其重要,通过它可以节省修改程序的时间,很快地找出程序出错的地方。熟练使用这个菜单,可以大大提高工作效率。上一页返回图1-1十进制整数转换成二进制数返回图1-2TC窗口返回表1-1TurboC编辑程序常用命令返回图1-3编辑状态返回图1-4选文件菜单返回表1-2文件菜单选择项功能概要返回图1-5选编译菜单返回表1-3编译菜单选择项功能概要返回图1-6Compile菜单返回图1-7Debug菜单返回模块2基本数据类型与

顺序程序设计任务1常量和变量任务2C语言的基本数据类任务3C语言的运算符和表达式任务4赋值语句任务5数据的输入任务6数据的输出任务7常用的数学函数任务8结构化程序设计任务1常量和变量2.1.1普通常量在程序的运行过程中,其值不发生改变的量称为常量。c语言中的常量包括普通常量和由#define所定义的符号常量。普通常量:普通常量又可分为整型常量、字符常量、字符串常量和实型常量。普通常量从其字面形式即可判断。整型常量即整常数,由一个或多个数字组成,可以带正负号。其中以数字0开头的为八进制数,以ox或0X开头的为十六进制数,其他则为十进制数。下一页返回任务1常量和变量。下列常量都是合法常量:327

-31400570x4c7d0X5700在整型常数后跟有字母1或L时,表示该整型常量是长整型常量,如:574L0X5F9DATC语言还允许一种特殊形式的字符常量,就是以“\”开头的字符序列,如’\n’表示一个换行符。上一页返回下一页任务1常量和变量2.1.2符号常量符号常量:也可以用一个标识符代表一个常量,这种用标识符代表的常量称为符号常量。此时,符号就像是常量的别名。1.定义格式符号常量由宏定义命令#define语句进行定义,它的一般形式为:#define标识符字符串2.应用实例3.符号常量用途在程序中使用符号常量,其具有以下优点。(1)含义清楚。(2)修改方便。上一页返回下一页任务1常量和变量2.1.3变量变量是指程序运行过程中其值可变的量,用于存放原始数据、运算的中间结果以及最终结果。变量含有两部分:变量名和变量值。用户通过变量名来引用变量的值。C语言中所有的变量都需先定义、后使用,即先定义变量的存储类型和数据类型,以便编译系统在内存的相应区域分配相应数目的连续字节(内存单元)给该变量存放变量值。变量定义的一般格式为:上一页返回下一页任务1常量和变量若有语句:intx=5;则在内存中会有如图2-1的结果。1.变量的数据类型C语言中变量的数据类型有简单和复合两大类,复合类型在后面介绍,本节主要介绍简单类型。简单类型主要有整型、字符型和实型(也称作浮点型)。(1)实型变量可用于存放特别大和特别小的数。如阶乘值往往很大,可以考虑用实型变量存放。实型变量存储数据时会有一定误差,所以只看前面的有效位数,如果有7位有效数字的话,就是前7位数字是准确的,后面的数字都是随机数。关于实型变量的详细说明如表2-1所示。上一页返回下一页任务1常量和变量定义实型变量的方法与整型变量类似,例如:(2)字符型变量用来存放字符,系统为字符型变量分配1个字节,用类型关键字char进行定义。例如:上一页返回下一页任务1常量和变量2.变量初始化变量在定义的同时被赋予一个值称为变量的初始化。表示定义X和s为整型变量,其中s初始化为0,x未赋值,其值不确定。变量初始化与先定义、再赋值是等价的。上一页返回任务2C语言的基本数据类型2.2.1TurboC2.0常用标准数据类型在计算机中进行处理的信息都可以表达为数据的形式。这里的数据不仅包括熟知的数学运算中的数据,还包括声音、图像等复杂信息。数据在计算机中进行处理时,首先必须解决的问题是数据在存储器里的存储问题。读者可以思考如下两个问题。由于计算机的内存大小有限,怎样存储更加节约存储空间?怎样存储便于数据的查找?为了便于C语言的数据处理,合理地使用存储空间,将数据划分为不同的类型,进行分类处理。C语言的数据类型如表2-3所示。上一页返回下一页任务2C语言的基本数据类型2.2.2整型数据整型数据可分为4种:基本型、短整型、长整型和无符号型。基本型以int表示。短整型以shortint或short表示。长整型以longint或long表示。无符号型的整数必须是正数或零。无符号型又可细分为无符号整型、无符号短整型和无符号长整型,分别以unsignedint,unsignedshort和unsignedlong表示。各种类型的数据所占的内存因计算机而异。在PC上,各种类型的数据所占的位数和数的范围如表2-4所示。上一页返回下一页任务2C语言的基本数据类型int类型表示数的范围是:long类型表示数的范围是:如果在int或long前面加上关键字unsigned,则定义的是无符号的整型数。上一页返回下一页任务2C语言的基本数据类型1.整型常量整型常量就是整常数。在C语言中,使用的整常数有八进制、十六进制和十进制三种。(1)十进制整常数十进制整常数没有前缀,其数码为0~9(2)八进制整常数八进制整常数必须以0开头,即以0作为八进制数的前缀。数码取值为0~7。八进制数通常是无符号数。上一页返回下一页任务2C语言的基本数据类型(3)十六进制整常数十六进制整常数的前缀为0X或0x。其数码取值为0~9、A~F或a~f。十六进制数通常是无符号数。2.整型变量整型变量中存放的是整数,以二进制数据形式存放。根据变量存储单元最高位是否作为符号位,分为有符号整型(signed)和无符号整型(unsigned)。有符号整型可以表示0、正数和负数,而无符号整型只能表示0和正数,但表示正数的范围扩大了一倍。常用的整型变量有基本型(int.,短整型(shortint)和长整型(longint),它们又各分为有符号型和无符号型,如表2-5所示。上一页返回下一页任务2C语言的基本数据类型2.2.3浮点型数据

C语言中的主要浮点类型分为单精度和双精度浮点型两种,以双精度为主。整数也可以用浮点数来表示,但必须在整数的后面加一个小数点。注意,在数据中,1和1.0是两种不同类型的数,1是整数,而1.0则是双精度浮点数。在该例中,x为单精度变量,y为双精度变量,第三行赋给变量x的值为9位,超过了其有效数位范围,最后两位丢失,但进行了四舍五入,x的实际值是123456.8。而v的有效数位是15位,所以能够接收上面所有的9位数字。上一页返回下一页任务2C语言的基本数据类型2.2.4字符型数据整型和浮点型是数值型数据的类型,但在解决实际问题时并不是所有问题都是数值型,更多情况是处理文本信息,那么要处理这样的问题就要借助于字符型数据。字符型数据可以用来表征英文字母、各种符号、汉字。1个字符型数据只占用1个字节(8位)的内存单元,而一个字节能表示整数的范围是0~2551.字符常量字符常数是用单引号引起来的单个字符,如’a’,’b’,’$’,’9’,’’等等。经常使用的这类字符如表2-6所示。上一页返回下一页任务2C语言的基本数据类型这种扩展表示法看上去好像两个字符,但实际上只起一个字符的作用,如’\0’和’0’是不同的,‘0’表示的是字符0,而’\0’表示的是字符NULL,即ASCII码值为0的控制字符,即空操作。上一页返回下一页任务2C语言的基本数据类型2.字符变量及分类一个字符变量用来存放一个字符,在内存中占一个字节。实际上,将一个字符常数赋给一个字符变量,并不是把该字符本身放到内存单元中去,而是将该字符的ASCII代码放到存储单元中。因此,字符型数据也可以像整型数据那样使用,它可以用来表示一些特定范围内的整常数。字符变量通常也分为两类:一般字符类型(char)和无符号字符类型(unsignedchar)。运行在IBM-PC及其兼容机上的字符数据的字节长度和取值如表2-7所示。上一页返回下一页任务2C语言的基本数据类型上一页返回下一页任务2C语言的基本数据类型上一页返回下一页任务2C语言的基本数据类型3.字符串在使用字符型数据时,经常遇到的不是单个字符,而是字符串。在C语言中,字符串常量用双引号括起来,如“BASIC”,“Howareyour”等。不要把字符常量与字符串常量混淆起来。例如,我们定义c为字符变量,那么,”c=’a’”;是合法的赋值语句,而”c=“a””是非法的。该语句在编译时,将留出6个字符的空间,但它只能存储5个有效的字符,即从str[0]存到str[4],str[5]要放一个字符串的终止符’\0‘。’\0’是一个空操作字符,系统本身自动加上的,输出时只作判断字符串结束的标志,并不显示。上一页返回下一页任务2C语言的基本数据类型上一页返回下一页任务2C语言的基本数据类型字符型指针变量可按下列形式定义:char*a;上一页返回下一页任务2C语言的基本数据类型2.2.5基本数据类型的转换1.自动转换整型、单精度型、双精度型、字符型数据可以混合运算,但在运算时,不同类型的数据须先转换成同一类型,转换规则如图2-3所示。上一页返回下一页任务2C语言的基本数据类型2.强制转换当自动转换不能实现时,可以用强制类型转换,其一般形式为:(类型名)(表达式)功能:把表达式结果的类型转换为圆括号中的数据类型。注意,类型名必须用括号()括起来。表达式一般用括号()括起来,但单个变量可以不用括号括起来。如:上一页返回任务3C语言的运算符和表达式2.3.1算术运算符和算术表达式1.算术运算符C语言的运算符范围很宽,把除了控制语句和输入输出以外的几乎所有的基本操作都作为运算符处理,例如将符号“=”作为赋值运算符,方括号作为下标运算符等。C的运算符有以下几类。返回下一页任务3C语言的运算符和表达式基本的算术运算符见表2-8所示。注意以下几点。(1)两个整数相除结果仍旧是整数,若除不尽,则舍去小数,例如3/2结果是1,不是1.5,也不是2。又如1/2结果是0,想要得到0.5的结果,可以用1.0/20(2)"%”运算符要求两侧数据必须是整型,运算结果是两数相除后的余数。例如3%2结果是1。如果参加算术运算的两个数中有一个是实数,则运算结果为double型。上一页返回下一页任务3C语言的运算符和表达式2.算术表达式用算术运算符将操作对象连接起来的表达式称为算术表达式。例如,(x+y)*8/2等是算术表达式。上一页返回下一页任务3C语言的运算符和表达式上一页返回下一页任务3C语言的运算符和表达式3.算术表达式和运算符的优先级与结合性用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语言语法规则的式子称为C算术表达式。运算对象包括常量、变量、函数等。C语言规定了运算符的优先级和结合性。在表达式求值时,先按运算符的优先级别高低次序执行,例如先乘除后加减。C规定了各种运算符的结合方向(结合性),算术运算符的结合方向为“自左至右”,即先左后右。“自左至右的结合方向”又称“左结合性”,即运算对象先与左面的运算符结合。以后可以看到有些运算符的结合方向为“自右至左”,即右结合性(例如赋值运算符)。如果一个运算符的两侧的数据类型不同,则会先自动进行类型转换,使二者具有同一种类型,然后再进行运算。上一页返回下一页任务3C语言的运算符和表达式此强调一下自增、自减运算符的作用和用法。自增、自减运算符的作用是使变量的值增1或减1,主要有以下几形式。上一页返回下一页任务3C语言的运算符和表达式注意以下2点。(1)自增运算符(++)和自减运算符(--),只能用于变量,而不能用于常量和表达式,如5++和(a+b)++都是不合法的。++和--结合方向是“自右至左”。(2)自增(减)运算符常用在循环语句中,使循环变量自动加(减)1,也可用于指针变量,使指针指向下一个地址。上一页返回下一页任务3C语言的运算符和表达式2.3.2关系运算符和关系表达式1.关系运算符关系运算符有“<”、“<=”、“>”、“>=”和“==”和“!=”,主要是比较两个操作数的大小是否相等。关系运算符的优先级低于算术运算符,高于赋值运算符。2.关系表达式用关系运算符将两个表达式(可以是算术表达式、关系表达式、逻辑表达式、赋值表达式、字符表达式)连接起来的式子,称为关系表达式。上一页返回下一页任务3C语言的运算符和表达式2.3.3逻辑运算符和逻辑表达式1.逻辑运算符逻辑运算符有三种:逻辑非“!”、逻辑与“&&”和逻辑或“||”,优先级从高到低为“!”、“&&”、“||”。其中“&&”和“||”的优先级低于关系运算符,“!”的优先级高于算术运算符。逻辑运算的真值表如表2-9所示。上一页返回下一页任务3C语言的运算符和表达式2.逻辑表达式用逻辑运算符将关系表达式或逻辑量接起来的式子就是逻辑表达式,逻辑表达式的结果值应该是一个逻辑量“真”或“假”。C语言编译系统在给出逻辑运算结果时,以数值1代表“真”,以0代表“假”,但在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”。即作为条件时将一个非零的数值认作为“真”;作为结果时用数值“1”作为“真”。举例如下。上一页返回下一页任务3C语言的运算符和表达式2.3.4逗号运算符和逗号表达式在c语言中,逗号可以作为一种运算符,用逗号把多个表达式连接起来形成逗号表达式。如:1+1,1+2。逗号表达式的一般形式为:表达式1,表达式2,...…,表达式n运算时,先计算表达式1,然后表达式2,...…最后计算表达式n,整个逗号表达式的值是表达式n的值。上例逗号表达式“1+1,1+2”得值为3。上一页返回下一页任务3C语言的运算符和表达式2.3.5条件运算符和条件表达式1.条件运算符若if语句中,在表达式为“真”或“假”时都只执行其中一个赋值语句给同一个变量赋值,则可以用简单的条件运算符来处理。例如,若有以下if语句:条件表达式的一般形式为:表达式1?表达式2:表达式3上一页返回下一页任务3C语言的运算符和表达式1.条件表达式在条件表达式中,表达式1的类型可以与表达式2和表达式3的类型不同。上一页返回下一页任务3C语言的运算符和表达式上一页返回下一页任务3C语言的运算符和表达式2.3.6赋值运算符及斌值表达式1.赋值运算符赋值符号“=”就是赋值运算符,它的作用是将一个数据赋给一个变量。如“a=10”的作用是执行一次赋值操作(或称赋值运算),把常量10赋给变量a。也可以将一个表达式的值赋给一个变量,如a=3*4-1,该操作执行后a的值为11。2.复合赋值运算符在赋值运算符“=”之前加上其他运算符,可以构成复合赋值运算符。如果在“=”前加上一个“+”运算符就成了复合运算符“+=”。例如:上一页返回下一页任务3C语言的运算符和表达式注意以下几个问题。(1)如果赋值号右边是包含若干项的表达式,则相当于它有括号,例如,b*=c+6等价于b=b*(c+6)。(2)凡是二元(二目)运算符,都可以与赋值运算符一起组合成复合赋值运算符。(3)C语言采用这种复合运算符,一是为了简化程序,使程序精炼,二是为了提高编译效率。上一页返回下一页任务3C语言的运算符和表达式3.赋值表达式由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”,它的一般形式为:上一页返回任务4赋值语句2.4.1赋值语句的格式与功能赋值语句是c语言中最基本的计算成分,它是由赋值表达式加上分号构成的表达式语句。赋值语句最简单的形式是:变量=表达式;它的意义是将赋值运算符右侧的“表达式”的值赋给左侧的变量。赋值表达式也可以包含复合的赋值运算符,若a初值为15,表达式a+=a-=a*a的值为-420。该表达式的求解步骤如下。返回下一页任务4赋值语句另外,由于C语言中还有一些复合赋值运算符:算术赋值运算符、位操作赋值运算符以及自增(加1)运算符++,自减(减1)运算符--,因此,下列语句均为赋值语句,它们均可以作为一个单独的语句在程序中出现。上一页返回下一页任务4赋值语句2.4.2赋值语句中的类型转换当赋值语句(或赋值运算表达式)中,“=”左边变量与右边表达式的数据类型不一致时,c编译系统会自动实现数据类型的转换,转换的原则是,将赋值号右边的表达式值的类型转换成与左边变量相同的类型后再赋值。例如:上一页返回下一页任务4赋值语句上一页返回任务5数据的输入2.5.1scanf函数scanf函数称为格式输入函数,即按用户指定的格式从键盘把数据输入到指定的变量之中。1.scanf函数的一般形式scanf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。与printf函数相同,C语言也允许在使用scanf函数之前不必包含stdio.h文件。scanf函数的一般形式为:返回下一页任务5数据的输入应该把变量的值和变量的地址这两个不同的概念区别开来。变量的地址是C编译系统分配的,用户不必关心具体的地址是多少。变量的地址和变量值的关系如下:如在程序中有赋值语句a=67,则a为变量名,67是变量的值,&a是变量a的地址。注意,在赋值表达式中给变量赋值,赋值号左边是变量名,不能写地址,而scanf函数在本质上也是给变量赋值,但要求写变量的地址,如&a。这两者在形式上是不同的。&是一个取地址运算符,&a是一个表达式,其功能是求变量的地址。下面看一个简单的例题。上一页返回下一页任务5数据的输入上一页返回下一页任务5数据的输入2.格式字符串格式字符串的一般形式为:其中,有方括号[]的项为任选项。各项的意义如下。类型:表示输入数据的类型,其格式符和意义如表2-10所示。*符:用以表示该输入项读入后不赋予相应的变量,即跳过该输入值。宽度:用十进制整数指定输入的宽度(即字符数)。长度:长度格式符为1和h,1表示输入长整型数据(如%1d)和双精度浮点数(如%1f)。h表示输入短整型数据。上一页返回下一页任务5数据的输入3.使用说明(1)scanf函数中没有精度控制.scanf(“%5.2f”,&a);是非法的。不能企图用此语句输入小数为2位的实数。(2)scanf中要求给出变量地址,如果给出变量名则会出错。(3)在输入多个数值数据时,若格式控制串中没有非格式字符做输入数据之间的间隔,则可用空格、Tab或Enter键做间隔。(4)在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。上一页返回下一页任务5数据的输入上一页返回下一页任务5数据的输入(5)如果格式控制串中有非格式字符,则输入时也要输入该非格式字符。(6)当输入的数据与输出的类型不一致时,虽然编译能够通过,但结果不正确。上一页返回下一页任务5数据的输入上一页返回下一页任务5数据的输入上一页返回下一页任务5数据的输入2.5.2getchar函数getcha:函数的功能是从键盘上输入一个字符。其一般形式为:getchai();上一页返回下一页任务5数据的输入使用getcha:函数还应注意以下几个问题。(1)getcha:函数只能接收单个字符,输入数字也按字符处理。输入多于一个字符时,只接收第一个字符。(2)使用本函数前必须包含文件”stdio.h“。(3)在TC屏幕下运行含本函数程序时,将退出TC屏幕,进入用户屏幕等待用户输入;输入完毕再返回TC屏幕。上一页返回任务6数据的输出2.6.1printf函数调用的一般形式printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用printf函数之前必须包含stdio.h文件。printf函数调用的一般形式为:上一页返回下一页任务6数据的输出2.6.2有关说明(1)格式控制字符串可以包括:①“格式转换说明符”,用于规定相应输出项内容的输出格式,格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。如“%d”表示按十进制整型输出,”%1d”表示按十进制长整型输出,”%c”表示按字符型输出;②“转义字符”,用于输出所代表的控制代码或特殊字符;③“普通字符”,要求原样输出的字符,在显示中起提示作用。(2)输出表列中给出了各个输出项,可以是变量和表达式,输出项之间用逗号分隔。要求格式字符串和各输出项在数量和类型上应该一一对应。上一页返回下一页任务6数据的输出上一页返回下一页任务6数据的输出2.6.3格式转换说明符一般情况下,每个格式说明都是以字符%开始,以转换字符结束的,在%和转换字符之间可以有以下符号或数据。(1)减号-:它表示输出项在其数据宽度内左对齐,无减号则为右对齐。(2)数字0:对数值型数据,在其左边有0而不是用空格来填充,使之达到指定或默认的数据宽度。上一页返回下一页任务6数据的输出(3)正整数m(数据宽度):它指出最小的数据宽度,输出的数据至少以这个宽度输出。若宽度不够实际数据输出,则以实际宽度为准。若输出的数据项,其字符数比数据宽度小,就在左边添加字符(若给出左对齐的标志符,则在右边添加字符),使之达到数据宽度。通常添加的字符为空格,若格式说明中有前置0,且输出的是数值型数据,则添加的字符为0。(4)英文句号.:它将数据宽度和后面表示精度的正整数分开。(5)正整数n(精度):若是实数,表示输出n位小数;若是字符串,表示截取的字符个数。上一页返回下一页任务6数据的输出(6)长度修饰符1(字母l):是否按长整型输出。(7)转换字符及其含义如下所述。①d(或i):将数据以十进制数形式输出。②o:将数据以无正、负号的八进制数形式输出。③x(或X):将数据以无正、负号的十六进制数形式输出。④u:将数据以无正、负号的十进制数形式输出。⑤c:将数据以单个字符形式输出。⑥s:将数据以字符串形式输出,直到遇到字符串结束符('\0')或达到精度说明的长度。⑦f:以小数形式输出单、双精度数,隐含输出6位小数。上一页返回下一页任务6数据的输出⑧e(或E):以标准指数形式输出单、双精度数,数字部分小数位数为60⑨g(或G/:选用%f或%e格式输出宽度较短的一种格式,不输出无意义的。。⑩%%:输出%本身。1.格式输出函数的具体用法(1)%d:用于指定输出十进制整数,对应的输出项内容可以是整数,也可以是字符。当输出内容为字符时,输出的是该字符的ASCII码值。上一页返回下一页任务6数据的输出上一页返回下一页任务6数据的输出(2)%o:用于指定输出八进制整数,且该整数不带符号。即输出的是一个无符号整数,不会是负数。常用的格式有“%o”,“%mo”,“%lo”或“%mlo“。上一页返回下一页任务6数据的输出(3)%x:用于指定输出十六进制整数,且该整数不带符号。常用的格式有“%x",“%mx"、“%lx”或“%mlx"。上一页返回下一页任务6数据的输出(4)%u:用于指定以十进制形式输出整数,且该整数不带符号,即输出unsigned型数据。unsigned型数据也可以用“%d","%o","%u”形式输出。上一页返回下一页任务6数据的输出(5)%c:用于输出一个字符,对应输出项的内容可以是字符,也可以是0~255之间的整数(ASCII码值)。当输出项内容是整数时,输出的是该整数对应ASCII码值的字符。常用的形式为”%c”,”%mc“。上一页返回下一页任务6数据的输出(6)%s:用于输出一个字符串.上一页返回下一页任务6数据的输出(7)%f:用于以小数形式输出实数(包括单精度数和双精度数),常用的形式为“%f“,”%m.nf”和“%-m.nf”。m.n表示输出的数据共占m位(包括小数点所占的位数),小数点部分为n位,若数值长度小于m,则不足位置补空格。上一页返回下一页任务6数据的输出(8)%e:用于以指数形式输出实数(包括单精度数和双精度数),常用的形式为“%e”、”%m.ne”和“%-m.ne”。“

%

-m.ne”。m.n表示输出的数据共占m位,数字的数据部分(又称尾数)小数位数为n位。(9)%g:“%g”格式用得较少,是用于输出实数的,输出时根据数值的大小,自动选择“%f”格式或“%e”格式(选择输出时占输出宽度较小的一种),且不输出无意义的0。上一页返回下一页任务6数据的输出2.其他说明(1)除了%X、%e、%g以外,其他格式字符必须用小写字母。(2)可以在“格式控制字符串”内使用”转义字符”,如”\n“、”\t“、”\b“、"\377”等。(3)使用printf函数时还要注意一个问题,那就是输出表列中的求值顺序。上一页返回下一页任务6数据的输出上一页返回下一页任务6数据的输出2.6.4字符偷出函数(putchar函数)puteha:函数是字符输出函数,其功能是在显示器上输出单个字符。其一般形式为:例如:Nutchar('A');输出大写字母.ANutchar(x);输出字符变量x的值putchar('\n’);换行,对控制字符则执行控制功能,不在屏幕上显示使用本函数前必须要用文件包含命令#include<stdio.h>。上一页返回下一页任务6数据的输出上一页返回任务7常用的数学函数前面介绍了几个常用的输入输出函数。除了这些函数以外,C语言还提供了许多具有不同功能的基本函数,比较常用的是数学函数,这些函数可以进行一些基本的数学运算。在使用数学函数之前,大多数要求指明包含文件math.h,也就是要在程序开头包含头文件math.h,即:返回下一页任务7常用的数学函数上一页返回任务8结构化程序设计结构化程序设计的思想是由E.W.Dijkstra等人于20世纪60年代后期提出来的。其思想是:一个程序的任何逻辑问题均可用“顺序”、“选择”和“循环”这3种基本逻辑结构来描述。顺序结构的程序流程是按语句的书写顺序依次执行的;选择结构是对给定条件进行判断,根据判断结果决定执行两分支或多分支程序段中的一个分支;循环结构是在给定条件成立的情况下,反复执行某个程序段。实现这些程序流程的语句都是流程控制语句。流程控制语句在程序设计中起着重要的作用,通过3种基本控制结构,使结构化程序具有唯一入口和唯一出口,没有死循环,程序的静态形式与动态执行流程之间具有良好的对应关系。返回下一页任务8结构化程序设计另外一个特点是,程序组织结构化,即程序设计采用自顶向下、逐步细化、功能模块化的方法。这种方法就是将程序设计针对的问题进行一步步分解,直到分解到对应于一个个功能更简单且独立的模块,每个模块也可以分解成上述3种基本程序结构。上一页返回图2-1变量名和变量值返回表2-1实型数据类型返回表2-3常用标准数据类型返回表2-4各种整型数据所占的位数

及数的范围返回表2-5常用整型返回表2-6字符常数扩展表示法返回表2-7字符数据的字节长度和

取值范围返回图2-3数据类型转换规则返回表2-8算术运算符返回表2-9逻辑运算真值表返回表2-10输入数据的格式符及意义返回模块3控制语句任务1语句概述任务2if语句任务3条件运算符和条件表达式任务4switch语句任务5循环语句任务6break语句与continue语句任务1语句概述语句是C语言源程序的重要组成部分。C语言的语句可以分为5大类。1)表达式语句①赋值语句。②自加减运算符构成的表达式语句。③逗号表达式语句。2)空语句仅包含一个分号”;”,它表示什么也不做。下一页返回任务1语句概述3)复合语句由”{”和”}”把一些变量说明和语句组合在一起,称之为复合语句(Block),又称为语句块,例如:上一页返回下一页任务1语句概述4)函数调用语句它是由一个函数调用加上一个分号组成的一个语句,如:5)控制语句上一页返回任务2if语句使用if语句构成的选择结构在C语言中应用最为广泛,是C程序中的重要结构单元。根据实现功能和实现形式的差异,if语句包括以下3种形式。if结构:根据一定条件选择执行一条(或一组)语句。if-else结构:根据一定条件从两条(或两组)语句中选择执行一条(或一组)语句。if-elseif-else结构:根据一定条件从多条(或多组)语句中选择执行一条(或一组)语句。上一页返回下一页任务2if语句3.2.1单分支形式一其语句形式为:if(表达式)语句其中“表达式”一般为逻辑表达式或关系表达式,可以是任意的数据类型(整型、实型、字符型、指针型)。举例说明。系统对表达式的值进行判断,若为0,按“假”处理,若为非0,按“真”处理,并执行指定的语句。其流程图如图3-1(a)所示。上一页返回下一页任务2if语句上一页返回下一页任务2if语句3.2.2单分支形式二其语句形式为:if(表达式)语句1else语句2其中表达式同上,流程图如图3-1(b)所示。举例说明。上一页返回下一页任务2if语句修改【例3-1】,在程序中补充以下内容:若输入成绩在80分以下则输出字符串上一页返回下一页任务2if语句3.2.3多分支形式前两种形式的if语句,一般都用于两个分支的情况。当有多个分支选择时,可采用多分支形式,其一般形式为:if-elseif-else结构的流程图如图3-2所示。上一页返回下一页任务2if语句上一页返回下一页任务2if语句3.2.4if语句应注意的事项(1)在三种形式的if语句中,在if关键字之后均为表达式。该表达式通常是逻辑表达式或关系表达式,但也可以是其他表达式,如赋值表达式等,甚至也可以是一个变量。注意区分关系运算符”==”和赋值运算符”=”。(2)在if语句中,条件判断表达式必须用括号括起来。(3)在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。但要注意的是在}之后不能再加分号。(4)在单分支if语句中,如果在满足条件时执行的是复合语句,但是没有用{}括起来,尽管编译不出错,但存在逻辑错误。举例说明。上一页返回下一页任务2if语句上一页返回下一页任务2if语句(5)在if和else之间如果只有一条语句,则可不用{}括起来,但多于一条语句则必须用{}括起来,否则会产生编译错。举例说明。上一页返回任务3条件运算符和条件表达式如果在条件语句中,只执行单个的赋值语句时,常可使用条件表达式来实现,不但使程序简洁,也提高了运行效率。条件运算符为?和:,它是一个三目运算符,即有三个参与运算的量。由条件运算符组成条件表达式的一般形式为:其求值规则为:如果表达式1的值为真,则以表达式2的值作为条件表达式的值,否则以表达式3的值作为整个条件表达式的值。条件表达式通常用于赋值语句之中。上一页返回下一页任务3条件运算符和条件表达式条件语句:可用条件表达式写为使用条件表达式时,还应注意以下几点:①条件运算符的优先级低于关系运算符和算术运算符,但高于赋值符。②条件运算符?和:是一对运算符,不能分开单独使用。③条件运算符的结合方向是自右至左。上一页返回下一页任务3条件运算符和条件表达式④条件表达式通常用于双分支结构并且给一个变量赋值的情况。条件表达式应用。上一页返回任务4switch语句C语言还提供了另一种用于多分支选择的switch语句,其一般形式为:返回下一页任务4switch语句其执行过程为:当switch后面“表达式”的值与case后的“常量表达式”的值相等时,就执行其后的语句,如果该语句后没有break语句,不再进行判断,继续执行后面所有case后的语句;如果该语句后有break语句,则执行完break语句跳出整个switch结构,后面的case都不执行。如表达式的值与所有case后的常量表达式值均不相同时,则执行default后的语句。上一页返回下一页任务4switch语句上一页返回下一页任务4switch语句上一页返回下一页任务4switch语句在使用switch语句时还应注意以下几点:①在case后的各常量表达式的值不能相同,一般为整型或字符型,如果表达式的值为浮点型,则想办法转换为整型或字符型。否则会出现错误。②在case后,允许有多个语句,可以不用{}括起来。③各case和default子句的先后顺序可以变动,而不会影响程序执行结果。④多个case子句可以共用同一语句(组)。⑤default子句可以省略不用。⑥switch语句可以嵌套。上一页返回任务5循环语句3.5.1while循环while语句可以实现“当型”循环结构,即当条件满足,就反复执行循环体。1.格式上一页返回下一页任务5循环语句2.流程首先计算表达式(循环条件),若为真(非0),执行其后的语句1(循环体),然后流程返回while重新计算表达式。只要表达式值为真就反复执行循环体,直到表达式值为假(0),流程跳到循环体的后面继续执行语句2while语句的执行流程如图3-3所示。3.说明(1)循环体如果包含一个以上的语句,应该用大括号括起来,以复合语句形式出现。如果不加大括号,则while语句的范围只到while后面的第一个分号处。上一页返回下一页任务5循环语句(2)在循环体中应有使循环趋向于结束的语句,如果无此语句,循环结构中的条件始终得不到改变,或者虽在改变,但始终不可能从一个状态跳到另一个状态,那么这种循环称为无限循环或死循环。一个合理的循环结构,最终应会使循环条件由一个状态转变为另一个状态,使循环正常终止。上一页返回下一页任务5循环语句4.举例【例3-5】在屏幕上连续输出5个”$”字符。上一页返回下一页任务5循环语句3.5.2do-while循环do-while循环与while循环类似,只是先执行循环体,后判断条件是否成立(循环体至少要执行一次)1.格式上一页返回下一页任务5循环语句2.流程do-while语句执行流程如图3-4所示,当执行到do-while语句时,先执行一次循环体语句。然后判断条件。如果条件为真,则转回循环体执行,直到表达式的值为假时,退出循环,执行do-while的下一条语句。其特点是:先执行循环体,再判断循环条件是否成立。3.说明一般情况下,对同一个问题既可以用while语句处理,也可以用,do-while语句处理。do-while语句结构可以和while结构相互转换。只要while后面的表达式的第一次的值为“真”时,两种循环得到的结果就相同;否则只有while后面的表达式的第一次的值为“假”时,两种循环得到的结果才不相同(指二者具有相同的循环体的情况)。上一页返回下一页任务5循环语句4.举例下面使用,do-while循环来实现前面的示例的功能。上一页返回下一页任务5循环语句3.5.3for循环for语句格式紧凑、清晰、使用灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句,是最常用的一种循环语句。1.格式for(表达式1;表达式2;表达式3)语句;上一页返回下一页任务5循环语句2.流程求解表达式1,只执行一次。求解表达式2,若为真(非0),执行循环体语句,然后求解表达式3,完成一次循环。再次求解表达式2,只要为真,就执行循环体,直到表达式2为假(0),流程转到循环体后面继续执行。for语句执行流程如图3-5所示。上一页返回下一页任务5循环语句3.说明(1)表达式1和表达式可以是逗号表达式,但圆括号内的分号只有两个,且必须有两个,分隔开三个表达式。(2)表达式2可以是各种类型表达式,只要其值非0,就执行循环体。(3)圆括号内的3个表达式均可以省略,也可写到程序的其他位置。(4)一般情况下,表达式1为循环变量赋初值,表达式2设置循环条件,表达式3是循环变量增值语句。上一页返回下一页任务5循环语句4.举例上一页返回下一页任务5循环语句3.5.4三种循环的比较C语言提

温馨提示

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

评论

0/150

提交评论