《C语言程序设计任务驱动式教程(第3版)(微课版)全书电子教案完整版课件.pptx》由会员分享,可在线阅读,更多相关《C语言程序设计任务驱动式教程(第3版)(微课版)全书电子教案完整版课件.pptx(618页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1单元认识C语言程序C语言程序设计任务驱动式教程(第2版)工业和信息化人才培养规划教材国家精品资源共享课程配套教材高职高专计算机系列人 民 邮 电 出 版 社语言是人和人之间交流信息不可缺少的工具,而在当今社会,计算机遍布人们生活的每一个角落,那么除了人和人的相互交流外,用什么方式可以和计算机做最直接的交流呢?人与人之间的交流使用汉语、英语等自然语言,人和计算机之间的交流则要使用计算机语言。其中C语言自1972年诞生于贝尔实验室以来,至今已几十年,此间信息技术迅猛发展,虽有众多程序设计语言大量涌现,但C语言仍旧是世界范围内被普遍采用的优秀程序设计语言。由于其具有高级语言形式,以及功能丰富、使用
2、灵活方便、应用面广、可移植性强等诸多优点,因而被众多高等院校选作计算机教学典型的程序语言。问题引入Question Introduction目录导航任务1走进C语言世界C语言概述任务2制作一张自己的名片C程序框架结构思考与训练单元小结任务1走进C语言世界C语言概述通过查阅资料、网络资源,了解C语言的发展史、特点及学习方法。工 作 任 务任务1走进C语言世界C语言概述思 路 指 导1在“国家精品课程资源网”等网络资源上查阅资料。2查阅相关书籍,初步了解C语言。(一)计算机语言计算机不需要翻译就能直接识别的语言称为机器语言(又称为二进制代码语言),该语言是由二进制数0或1组成的一串指令,对于编程人
3、员来说,机器语言不便于记忆和识别。1机器语言计算机可以识别由0和1组成指令的机器语言,但人类使用机器语言太不方便了。为了解决这个问题,汇编语言诞生了。汇编语言用英文字母或符号串来替代机器语言,把不易理解和记忆的机器语言按照对应关系转换成汇编指令,汇编语言比机器语言更加便于阅读和理解。2汇编语言相 关 知 识(一)计算机语言汇编语言依赖于硬件,使得程序的可移植性极差,而且编程人员在使用新的计算机时还需学习新的汇编指令,大大增加了编程人员的工作量,因此出现了计算机高级语言。计算机高级语言比汇编语言更贴近于人类使用的语言,易于理解、记忆和使用。高级语言和计算机的架构、指令集无关,具有良好的可移植性。
4、常见的高级语言包括C、C+、Java、VB、C#、Python、Ruby等。高级语言应用非常广泛,世界上绝大多数编程人员都在使用高级语言进行程序开发。其中C语言就是目前最流行、应用最广泛的高级语言之一。3高级语言(二)C语言的发展和特点C语言是1972年由美国的Dennis Ritchie(里奇)设计发明的,它由早期的编程语言BCPL(BasicCombindProgrammingLanguage)发展演变而来。随着微型计算机的日益普及,C语言出现了许多版本,由于没有统一的标准,所以这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI
5、标准,成为现行的C语言标准。早期的C语言主要是用于UNIX系统,由于C语言的强大功能和各方面的优点逐渐为人们所认识,所以到了20世纪80年代,C语言开始进入其他操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用,成为当代最优秀的程序设计语言之一。1C语言的发展过程(二)C语言的发展和特点(1)C语言是一种结构化语言。(2)层次清晰,便于按模块化方式组织程序,易于调试和维护。(3)C语言的表现能力和处理能力极强。(4)具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。(5)可以直接访问内存的物理地址,进行位(bit)一级的操作。(6)C语言实现了对硬件的编程操作,集高级语言和低
6、级语言的功能于一体,既可用于系统软件的开发,也适用于应用软件的开发。(7)效率高,可移植性强。2C语言的特点(三)为什么要学习C语言应用广泛语法简洁表达能力强32个关键字9种控制语句便于初学者学习和掌握(四)怎样学好C语言(2)默写程序(3)阅读他人的程序(1)反复阅读教材任务1走进C语言世界C语言概述任 务 实 施查阅、学习书籍资料及网络资源。特 别 提 示(1)当编程出现错误时怎么办?首先应该查看编译器提供的信息。编译本身就能输出大量的提示。如果还不能解决,则查阅教材和文档,或上网查询。(2)能看懂别人的程序,但自己做就觉得无从下手。任务1走进C语言世界C语言概述这个问题每个刚开始学习编程
7、的人都会遇到,初学编程就像解应用题一样,首先要建立一个抽象描述模型,建立数学表达式,给出求解的方法,也就是算法,最后把算法转化为程序。随着学习的深入,就会慢慢提高逻辑思维能力。(3)英语不行怎么办?C语言全部关键字一共32个,而其中有67个的使用率超过78%;就编程本身而言,错误和警告提示也是有限的几句英语,只要勤于学习和总结,学好程序设计语言是没有问题的。目录导航任务1走进C语言世界C语言概述任务2制作一张自己的名片C程序框架结构思考与训练单元小结任务2制作一张自己的名片C程序框架结构刚刚走进大学校门的同学,首先使用C语言为自己制作一张名片,让老师和同学们记住你的名字吧。工 作 任 务任务1
8、走进C语言世界C语言概述思 路 指 导要用C语言编写程序,在屏幕上输出名片,就要了解C语言的结构特点、编写规则,学会使用C语言的编译运行环境。(一)C语言程序的基本结构C语言源程序结构的特点,先看例1.1的小程序,这个小程序表现了C语言源程序在组成结构上的特点。虽然有关内容还未介绍,但可从这个例子中了解C语言源程序的基本框架和书写格式。例1.1用C语言编程,在屏幕上显示“HelloCProgram!”/*输出HelloCProgram!*/#include/预处理语句voidmain()/主函数printf(HelloCProgram!n);/输出语句相 关 知 识(一)C语言程序的基本结构1
9、C语言程序的构成(1)一个源程序都有且只有一个main()函数,即主函数,其前面的void代表函数没有返回值。main()函数下面用括起来的部分是一个程序模块。C语言的程序总是从主函数开始执行,并且回到主函数结束。(2)以“#”开始的语句属于预处理语句。源程序中可以有预处理语句,预处理语句通常放在源程序的最前面。(3)每一个语句都必须以分号结束,但预处理语句、函数头和花括号之后不加分号。(4)标识符和关键字之间,至少要加一个空格。(5)源程序中需要解释和说明的部分,可以加以注释,以增加程序的可读性。编译系统会跳过注释行,不对其进行编译。“/*.*/”表示多行注释,“/”表示单行注释。(一)C语
10、言程序的基本结构2C语言程序的书写规范(1)在C语言中,虽然一行可以有多个语句,一个语句也可占多行,但建议一行只写一个语句。(4)在程序代码中,应加上必要的注释。(2)一般采用缩进格式为书写格式,以提高程序的可读性和清晰性。(3)C语言源代码一般用小写字母书写,除非另有约定。(二)编译和运行C语言应用程序编写好一个C语言程序后,如何上机运行呢?写好一个C语言源程序后,一般要经过编辑、编译、连接、运行才能得到程序结果,如图1-1所示。1C语言应用程序的处理流程图1-1C语言程序处理流程程序设计语言一般都有其编译运行环境。运行环境一般包括代码编辑器、编译器、调试器和图形用户界面工具,即集成了代码编
11、写功能、分析功能、编译功能、调试功能。这种集成了编译、运行、调试等功能的软件套组称作集成开发环境(IntegratedDevelopmentEnvironment,IDE)。VC+6.0是C+程序默认的编译器,因为C+是在C语言基础上产生的,所以也兼容C语言的编译和运行。VC+6.0环境具有方便、直观、快捷的编辑器及丰富的库函数,能够把程序编辑、编译、连接和运行等操作全部集中在一个软件中进行,十分方便。(1)C语言的IDE环境。(二)编译和运行C语言应用程序2C语言运行环境的应用2C语言运行环境的应用(二)编译和运行C语言应用程序(2)VC+6.0的使用。启动VC+6.0编译程序,主界面如图1
12、-2所示。从图1-2中可以看到,集成环境主要分为菜单栏、工具栏、项目资源列表区、编辑区和编译调试输出区等。图1-2VC+6.0主界面(二)编译和运行C语言应用程序创建源文件。要编辑C程序,就需要建立C源文件。在主菜单下,选择“文件”“新建”命令,弹出“新建”对话框,如图1-3所示。图1-3“新建”对话框创建C源文件在“新建”对话框中,选取“文件”选项卡,选择新建文件类型为“C+SourceFile”,在“文件名”文本框中输入Hello.c(这里需要输入C源程序的扩展名.c,因为VC+6.0默认是C+的编译程序,所以其扩展名为.cpp),选择存储文件的路径,单击“确定”按纽,系统进入编辑状态。(
13、二)编译和运行C语言应用程序编辑源文件。在编辑区中添加自己的代码,这里输入例1.1中的代码,如图1-4所示。图1-4编辑源文件(二)编译和运行C语言应用程序编译、连接源程序。单击工具栏上的按纽,或选择“组建”“编译”命令,系统就会编译当前的源程序,生成一个目标程序文件,扩展名为“.obj”。单击工具栏上的按纽,或选择“组建”“组建”命令,系统会将目标程序文件和库文件连接,生成一个可执行文件,扩展名为“.exe”。图1-6例1.1程序运行结果执行程序。单击工具栏上的按纽,或选择“组件”“执行”命令,系统会运行当前的可执行文件,并输出运行结果,如图1-6所示。任务2制作一张自己的名片C程序框架结构
14、任 务 实 施/*我的小名片*/#includevoidmain()printf(*n);printf(姓名:小强t性别:男n);printf(学校:河北工业职业技术学院n);printf(系别:计算机技术系n);printf(*n);小名片程序代码如下。图1-7任务运行结果任务2制作一张自己的名片C程序框架结构特 别 提 示(1)编译调试输出区错误提示很多怎么办?错误提示很多,不用怕。这些错误往往是由一个错误引发的。在屏幕下方编译调试输出区中,将滚动条滚动到最上方,找到第一行错误,双击第一个错误,指针就会指向错误所在行。根据错误提示进行修改,再次编译,也许其他错误提示就都没有了。(2)初写代
15、码需要注意的问题。每条语句要以分号结束。关键字拼写一定要正确,C语言区分大小写。语句中的引号、分号等标点符号全部是英文半角。“n”“t”要写在双引号中,“n”表示回车换行,“t”相当于水平制表符,表示空格输出。在同一路径下,两个C源程序文件不能同名。任务2制作一张自己的名片C程序框架结构拓展与提高1编程实现在屏幕上显示如下3行文字Hello,world!WelcometotheClanguageworld!Everyonehasbeenwaitingfor.程序example.c如下。main()printf(Hello,World!n);printf(WelcometotheClanguag
16、eworld!n);printf(Everyonehasbeenwaitingfor.n);2输入并运行程序,写出运行结果main()inta,b,sum;a=123;b=456;sum=a+b;printf(sumis%dn,sum);sumis579结果为目录导航任务1走进C语言世界C语言概述任务2制作一张自己的名片C程序框架结构析疑解惑单元小结单元小结Summary本单元介绍了C语言的发展和特点,以及C语言的学习方法,重点介绍了C语言的程序结构、运行过程及VC+6.0开发环境。读者可从小程序入手,通过上机练习,熟悉C语言程序的开发环境。工欲善其事,必先利其器,要精通一门语言,还需要继续深
17、入学习。目录导航任务1走进C语言世界C语言概述任务2制作一张自己的名片C程序框架结构思考与训练单元小结思考与训练1讨论题(1)讨论C程序的结构是由哪几个部分组成的。(2)C语言中注释的作用。2选择题(1)C语言属于下列哪类计算机语言?()A汇编语言 B高级语言C机器语言D以上均不属于(2)一个C程序是由()。A一个主程序和若干子程序组成的B一个或多个函数组成的C若干过程组成的D若干子程序组成的Thinkingandpracticing思考与训练(3)一个C程序的执行是从()。Amain函数开始,直到main函数结束B第一个函数开始,直到最后一个函数结束C第一个语句开始,直到最后一个语句结束Dm
18、ain函数开始,直到最后一个函数结束(4)C语言语句的结束符是()。A回车符B分号C句号D逗号(5)以下说法正确的是()。AC程序的注释可以出现在程序的任何位置,它对程序的编译和运行不起任何作用BC程序的注释只能是一行Thinkingandpracticing思考与训练CC程序的注释不能是中文文字信息DC程序的注释中存在的错误会被编译器检查出来(6)以下说法正确的是()。AC程序中的所有标识符都必须小写BC程序中的关键字必须小写,其他标识符不区分大小写CC程序中的所有标识符都不区分大小写DC程序中的关键字必须小写,其他标识符区分大小写Thinkingandpracticing3填空题(1)C语
19、言源程序文件的扩展名是,编译后生成的目标文件的扩展名是,经过连接后生成的可执行文件的扩展名是。思考与训练Thinkingandpracticing4编程题(2)C程序多行注释是由和界定的文字信息组成的。(3)源程序的执行要经过、和4个步骤。(1)试编写一个C程序并上机调试,运行后能输出以下信息。*Thisismyfirstprogram.*(2)编写程序,用“*”输出字母C。单元1站点创建与制作商品简介页面HTML5+CSS3网页设计与制作实用教程工业和信息化人才培养规划教材人 民 邮 电 出 版 社国家精品资源共享课程配套教材高职高专计算机系列2单元C语言程序设计基础C语言程序设计任务驱动式
20、教程(第2版)工业和信息化人才培养规划教材国家精品资源共享课程配套教材高职高专计算机系列人 民 邮 电 出 版 社上一单元,我们制作了小名片,现在更进一步提出问题,如何用程序语言描述一个人的年龄、性别、身高、体重?在程序中,数据又是如何存储的?带着这些问题,我们继续学习C语言吧。在本单元,将通过几个小任务介绍C语言中的标识符、常量、变量、简单数据类型、基本运算符号、表达式和数据类型转换等。这是以后深入学习C语言的重要基础。问题引入Question Introduction目录导航任务1计算圆的面积整型与实型数据、常量与变量任务2编制密码字符型数据思考与训练单元小结任务3分离数字问题运算符与表达
21、式任务1计算圆的面积整型与实型数据、常量与变量在C语言中,整型、实型数据如何描述,什么是常量,什么是变量?在解答这些问题之前,先看一道数学问题。已知圆的半径r,求圆的面积s。工 作 任 务任务1计算圆的面积整型与实型数据、常量与变量思 路 指 导已知:圆的半径r,整型。计算中用到圆周率PI的值为3.14,它是实型数据,并且在运算中值不可变。输出:圆的面积s,实型数据。处理:利用圆面积公式,求得圆面积。(一)标识符l1系统标识符相 关 知 识(2)语句定义符。(3)预处理语句。(1)类型说明符。(一)标识符l2用户标识符用户自定义的标识符称为用户标识符。C语言规定,标识符只能是由字母(AZ、az
22、)、数字(09)、下画线组成的字符串,并且其第一个字符必须是字母或下画线。例如,_fen、aaa、a2、book、BOOK、h2h都是合法的标识符。【思考】以下标识符合法吗?3s,s*T,-3x,bowy-1在使用标识符时还必须注意以下几点。(1)标识符是区分大小写的。例如,BOOK和book是两个不同的标识符。(2)标识符虽然可由程序员随意定义,但标识符是用于标识某个量的符号。因此,命名应尽量有相应的意义,以便阅读理解,做到“见名知意”。(3)标识符不能和关键字相同。(二)常量和变量l1常量用编译预处理语句#define规定一个标识符代表一个常量。在程序之前定义符号常量,通常常量名用大写字母
23、标识。/*符号常量的使用*/#include#definePRICE10/声明常量voidmain()inttotal,num;/声明变量num=5;total=num*PRICE;/应用常量printf(%d,total);通常说的常数,从表面形式即可判断它属于哪种数据类型。例如,234是整型,5.89是实型,7是字符型等。常量声明格式一般为:#define例:#definePI3.14直接常量符号常量(二)常量和变量l2变量在C语言中,使用变量前必须先定义。定义变量的形式如下。类型说明符变量名1,变量名2,;其中,方括号中的内容为可选项,可以同时定义多个相同类型的变量,之间用逗号分隔,如i
24、nta,b,c;。(1)定义变量。在C语言中,使用变量前必须先定义。定义变量的形式如下。类型说明符变量名1=初值1,变量名2=初值2,;例如,floatx=4.5;、charch1=t,ch2=h;等都是合法的初始化变量语句。(2)初始化变量。(二)常量和变量给变量赋值是指把一个数据传送到系统给变量分配的存储单元中。定义变量时,系统会自动根据变量类型为其分配存储空间。但是如果此变量在定义时没有被初始化,那么它的值就是一个无法预料的、没有意义的值,所以通常要给变量赋予一个有意义的值。给变量赋值的一般形式如下。变量=表达式;例如:x=6;j=j+k;(3)给变量赋值。(二)C语言的发展和特点对于赋
25、值语句,有如下说明。“=”在C语言中是赋值符号,不是等号。C语言中判断两个数值是否相等用比较运算符“=”赋值运算是把“=”右边表达式的值赋给“=”左边的变量。因此,像a=a+1这样的在数学中认为是不成立的表达式,在C语言中却是认可的,它表示将a原来的值加上1后再赋给a。允许辗转赋值,即允许一个表达式中包含多个“=”。例如:intx,y,z;x=y=z=1;表示先把1赋给变量z,再把z的值赋给变量y,最后将y的值赋给变量x。(三)C语言的数据类型C语言中的数据是有类型的,数据的类型简称数据类型。例如,整型数据、实型数据、字符型数据、字符数组类型(字符串)分别代表我们常说的整数、实数、字符、字符串
26、。C语言提供的数据类型如图2-1所示。图2-1C语言的数据类型(三)C语言的数据类型l1基本数据类型整型数据(1)整型常量。八进制整型常数。八进制整型常数。八进制整型常数。八进制整型常数必须以0开头,即以0作为八进制数的前缀。数码取值为07。八进制数通常是无符号数。015(十 进 制 为 13)、0101(十 进 制 为 65)、0177777(十进制为65535)十六进制整型常数的前缀为0X或0 x。其数码取值为09、AF或af。0X2A(十 进 制 为 42)、0XA0(十 进 制 为 160)、0XFFFF(十进制为65535)十进制整型常数没有前缀。其数码为09。237、568、655
27、35、1627(三)C语言的数据类型(2)整型变量。基本型短整型长整型无符号型类型说明符为int。类型说明符为short int。类型说明符为long int或long。类型说明符为unsigned。无符号型又可与上述3种类型匹配而构成以下3种类型。无符号基本型:类型说明符为unsignedint或unsigned。无符号短整型:类型说明符为unsignedshort。无符号长整型:类型说明符为unsignedlong。(三)C语言的数据类型表2-1整型数据表示范围及占用字节数类型说明符数的范围字节int21474836482147483647(2312311)4unsigned(int)04
28、294967295(02321)4short(int)3276832767(2152151)2unsignedshort(int)065535(02161)2long(int)21474836482147483647(2312311)4unsignedlong(int)04294967295(02321)4(三)C语言的数据类型声明整型变量的例子如下。inta,b,c;/a、b、c为整型变量longx,y;/x、y为长整型变量unsignedp,q;/p、q为无符号整型变量给整型变量赋值,可以采用如下两种方式。inta;a=10;/先声明,后赋值inta=10;/声明同时赋值(三)C语言的数据
29、类型l2基本数据类型实型数据(1)实型常数。实型常数又称为浮点型数据,按其能够表示的精度和范围,又分为单精度实型(float)、双精度实型(double)。单精度型数值的有效数字为67位,双精度型数值的有效数字为1516位。十进制小数由数字和小数点组成。小数点前表示整数部分,小数点后面表示小数部分。例如,0.234、123.23、.345都是合法的表示形式。指数形式又称科学表示法。包含数值部分和指数部分。数值部分表示方法同十进制小数形式,指数部分是一个可以是正数或负数的整型数据,中间e或E连接起来。例如,1e12、10e2、1.23E+2等都是合法的指数表示法。(三)C语言的数据类型(2)实型
30、变量。表2-2实型数据表示范围及占用字节数类型说明符数的范围有效数字占用字节数float3.410373.41038674double1.7103071.71030815168实型数据的表示方法有两种形式:十进制小数形式和指数形式。十进制小数形式:指数形式:由数字09和小数点组成。例如,0.0、21.0、0.12、100.0、12.1等均为合法实数。由十进制数,加阶码标志“e”或“E”以及阶码(只能是整数,可以带符号)组成。一般形式为aEn,其值为a10n。例如,3.1e5(3.1105)、2.5E2(2.5102)注意:e大小写皆可,e前面的数字不能省,就是1也不能省,后面的数字一定要是整数
31、。实型变量定义的格式和书写规则与整型相同。任务1计算圆的面积整型与实型数据、常量与变量任 务 实 施已知半径,求圆的面积,程序代码如下。/*求圆的面积*/#definePI3.14/声明常量main()intr;/圆半径rfloats;/圆面积sr=2;s=PI*r*r;printf(s=%.2f,s);运行结果如图2-2所示。任务1计算圆的面积整型与实型数据、常量与变量特 别 提 示(1)允许在一个类型说明符后,说明多个相同类型的变量。逗号主要用在类型说明和函数参数表中,分隔各个变量。空格多用于语句各单词之间,作间隔符。在关键字和标识符之间必须有一个以上的空格符作间隔,否则会出现语法错误,例
32、如,把inta;写成inta;,则C编译器会把inta当成一个标识符处理,其结果必然出错。(2)变量说明必须放在变量被使用之前。一般放在函数体的开头部分。(3)分隔符。在C语言中采用的分隔符主要有逗号和空格两种。各变量名之间用逗号间隔。类型说明符与变量名之间至少用一个空格间隔,如inta,b。任务1计算圆的面积整型与实型数据、常量与变量以“/”开头的为单行注释,其后一行为注释内容;以“/*”开头并以“*/”结尾为多行注释,在“/*”和“*/”之间的即为注释内容。程序编译时,不对注释作任何处理。注释可出现在程序中的任何位置,用来向用户提示或解释程序的意义。利用注释调试程序,也是在调试程序过程中经
33、常使用的调试方法。可将暂不使用的语句用注释符括起来,使编译跳过不做处理,待调试结束后再去掉注释符。(4)注释符。C语言的注释符分为单行注释和多行注释。目录导航任务1计算圆的面积整型与实型数据、常量与变量任务2编制密码字符型数据思考与训练单元小结任务3分离数字问题运算符与表达式任务2编制密码字符型数据编制一个密码器,实现给友军发送加密电报,报文由小写字母an组成,在发报时每输入一个字母,输出与其相邻的下一个字母。工 作 任 务任务2编制密码字符型数据思 路 指 导输入:输入小写字母an,并存储到变量word中。输出:加密后的字母存储到变量password中,输出password。处理:输入字符型
34、数据,输出加1后的字符型数据。基本数据类型字符型数据l(1)字符常量。相 关 知 识C语言中有两种类型的字符常量。普通字符:用单引号括起来的单个字符,如%、2、a、A。a和A不同。单引号中的空格符也是一个字符常量。字符常量在内存中占一字节,存放的是字符的ASCII值,如,a的值是97,A的值是65,2的值是50。基本数据类型字符型数据转义字符:是以“”开头的具有特殊含义的字符,常用的转义字符见表2-3。转义字符说明n回车换行t横向跳到下一个制表位置b退格r回车反斜杠字符“”单引号符双引号符ddd13位八进制代表的字符xhh12位十六进制数据代表的字符表2-3转义字符基本数据类型字符型数据l(2
35、)字符串常量。(3)字符变量。字符串常量是用双引号括起来的零个、一个或多个字符序列,如Beijing、Imastudent、%d%d等都是合法的字符串常量。字符变量用来存放字符常量,即只能存放单个字符,在内存中占1字节的存储空间。其定义方式如下。charc1,c2;也可以在定义时赋值:charc1=a,c2=b;注意:C语言中没有字符串变量,不能将一个字符串常量赋给一个字符型变量,例如,charc1=Beijing;是错误的。要想存放一个字符串,必须使用数组。基本数据类型字符型数据一个字符常量存放到字符型变量中,实际上存放的是该字符的二进制形式的ASCII值:A为65,B为66,a为97,b为
36、98。正是因为字符数据的这种特殊存储形式,使得字符数据和整型数据之间可以进行运算。在输出时,一个字符型数据既可以以字符形式输出,又可以以整数形式输出。说明计算机使用特定的整数编码来表示对应的字符。美国信息交换标准编码(AmericanStandardCodeforInformationInterchange,ASCII)。ASCII是一个标准,其内容规定了把英文字母、数字、标点、字符转换成计算机能识别的二进制数的规则,并且得到了广泛认可和遵守。附录2为常用字符与ASCII代码对照表,供大家查阅使用。ASCII大致由以下两部分组成。(1)ASCII非打印控制字符。ASCII表上的数字031分配给
37、了控制字符,用于控制像打印机等一些外围设备。(参见ASCII表中的031)(2)ASCII打印字符。数字32127分配给了能在键盘上找到的字符,当查看或打印文档时就会出现。(参见ASCII表中的32127)。基本数据类型字符型数据例2.2字符型变量的输出main()charc1,c2;c1=a;c2=b;printf(%c,%cn,c1,c2);printf(%d,%d,c1,c2);运行结果:a,b97,98基本数据类型字符型数据例2.3大小写字母转换main()charc1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(%c%c,c1,c2);运行结果:AB从
38、ASCII表中可以看到,每个小写字母比大写字母的ASCII值大32,即a=A+32。任务2编制密码字符型数据任 务 实 施编制密码程序代码如下。/*编制密码程序*/#includevoidmain()charword,password;printf(请输入an的一个字母:);/输出提示scanf(%c,&word);/输入字符password=word+1;printf(加密后的字母为%cn,password);运行结果如图2-3所示任务2编制密码字符型数据特 别 提 示(1)字符型数据除转义字符外,其值是由单引号引起来的一个字符。(2)字符3和数字3是不同的。ASCII表规定3的值是51。目
39、录导航任务1计算圆的面积整型与实型数据、常量与变量任务2编制密码字符型数据思考与训练单元小结任务3分离数字问题运算符与表达式任务3分离数字问题运算符与表达式编写一个程序,从键盘输入一个三位整数,将其逆序输出。例如,输入123,输出321。工 作 任 务任务3分离数字问题运算符与表达式思 路 指 导已知:一个三位整数存储到变量n中。输出:将n逆序输出。处理:将这个三位数分解,分别求出百位(n/100)、十位(n/10%10)、个位(n%10),然后逆序输出。运算符与表达式相 关 知 识运算符与表达式运算符:运算符是表示各种运算的符号。C把除了控制语句和输入/输出以外几乎所有的基本操作都作为运算符
40、处理,所以C语言运算符可以看作是操作符。表达式:使用运算符将常量、变量、函数连接起来,构成表达式。运算符与表达式在C语言中除了提供一般高级语言的算术、关系、逻辑运算符外,还提供赋值运算符、位操作运算符、自增自减运算符等。运算符的常见类型及其作用如表2-4所示。运算符类型作用算术运算符用于处理四则运算赋值运算符用于将表达式的值赋给变量比较运算符用于表达式的比较,并返回一个真值或假值逻辑运算符用于根据表达式的值返回一个真值或假值位运算符用于处理数据的位运算sizeof运算符用于求字节数长度表2-4常见的运算符类型及其作用运算符与表达式l1算术运算符和算术表达式相 关 知 识(1)算术运算符。+(正
41、号,如+3)-(负号,如-2)+(加法运算符,如3+5)-(减法运算符,如5-2)*(乘法运算符,如3*5)/(除法运算符,如5/3,5.0/3)%(模运算符或求余运算符,如7%4)说明两个整数相除的结果为整数。例如,5/3的值为1,舍去小数部分,而5.0/3的值为1.67(保留两位小数后)。求余也称为求模,要求运算符%两边的两个操作数均为整型,结果为两数相除所得的余数。例如,8%5的值为3。运算符与表达式相 关 知 识(2)算术表达式。用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子称为算术表达式。运算对象可以是常量、变量、函数等。例如,下面是一个合法的C算术表达式
42、。a*b/c-1.5+a说明C语言算术表达式的书写形式与数学表达式的书写形式有一定的区别,如下所示。C语言算术表达式的乘号(*)不能省略。例如,数学式b2-4ac对应的C表达式应该写成:b*b-4*a*c。C语言表达式中只能出现字符集允许的字符。例如,数学式r2对应的C表达式应该写成:PI*r*r(其中PI是已经定义的符号常量)。C语言算术表达式不允许有分子分母的形式(即所有字符必须写在同一行中)。例如,(a+b)/(c+d)。运算符与表达式相 关 知 识(3)算术运算符的优先级与结合性。C语言规定了运算符的“优先级”和“结合性”,详见附录3运算符的优先级和结合方向表。在表达式求值时,先按运算
43、符的“优先级别”从高到低依次执行。例如,表达式ab*c等价于a(b*c),因为“*”“/”运算符的优先级高于“+”“”运算符。如果在一个运算对象两侧的运算符的优先级别相同,则按规定的“结合方向”处理。【思考】ab+c,到底是(ab)+c还是a(b+c)?(b先与a参与运算还是先与c参与运算?)查附录3可知:加+、减运算优先级别相同,结合性为“自左向右”,也就是说,b先与左边的a结合。所以ab+c等价于(ab)+c。左结合性(自左向右结合方向):运算对象先与左边的运算符结合。右结合性(自右向左结合方向):运算对象先与右边的运算符结合。运算符与表达式相 关 知 识(3)算术运算符的优先级与结合性。
44、在书写多个运算符的表达式时,应当注意各个运算符的优先级,确保表达式中的运算符能以正确的顺序参与运算。对于复杂表达式,为了清晰起见,可以加圆括号“()”强制规定计算顺序(不要用和)。可以使用多层圆括号,此时左右括号必须配对,运算时从内层括号开始,由内向外依次计算表达式的值。运算符与表达式l2赋值运算符和赋值表达式相 关 知 识(1)赋值运算符、赋值表达式。p赋值运算符:“=”是赋值运算符。p赋值表达式:由赋值运算符组成的表达式称为赋值表达式。一般形式为变量赋值符表达式p赋值表达式的求解过程为:将赋值运算符右侧的表达式的值赋给左侧的变量,同时整个赋值表达式的值就是刚才所赋的值。p赋值的含义为:将赋
45、值运算符右边表达式的值存放到左边变量名标识的存储单元中。例如,x=10+y;执行赋值运算(操作),将10+y的值赋给变量x,同时整个表达式的值就是刚才所赋的值。运算符与表达式整个赋值表达式的值就是被赋值变量的值。例如,分析x=y=z=3+5这个表达式。根据优先级:原式x=y=z=(3+5);根据结合性(从右向左):x=(y=(z=(3+5)x=(y=(z=3+5)。序号表达式变量(值)表达式值1z=3+5z(8)82y=(z=3+5)y(8)83x=(y=(z=3+5)x(8)8表2-5运算步骤运算符与表达式相 关 知 识(2)复合赋值运算符。在赋值符“=”之前加上某些运算符,可以构成复合赋值
46、运算符,复合赋值运算符可以构成赋值表达式。C语言中的许多运算符可以与赋值运算符一起构成复合运算符,即+=,-=,*=,/=,%=复合赋值表达式的一般形式为:=复合赋值表达式的一般形式等价于:=例如:n+=1等价于n=n+1x*=y+1等价于x=x*(y+1)注意:赋值运算符、复合赋值运算符的优先级比算术运算符低。运算符与表达式赋值运算符、赋值表达式举例。a=5a=b=5a=(b=4)+(c=3)例2.4假如a=12,分析:a+=a=a*aa+=a-=a*aa+=a-=(a*a)a+=(a-=(a*a)a+=(a=a-(a*a)a+=(a=a-a*a)a=a+(a=a-a*a)运算符与表达式相
47、关 知 识(3)自增、自减运算符及表达式。自增、自减运算符使变量的值增1或减1,形如:+ii+-ii-其中,+I、i(前置运算):先自增、自减,再参与运算;i+,i(后置运算):先参与运算,再自增、自减。例如,i=3,分析j=+i;j=i+;j=+i;i先自增,再赋值给j,i的值是4,j的值是4。j=i+;i先赋值给j,再自增,j的值是3,i的值是4。自增、自减运算符只用于变量,而不能用于常量或表达式。运算符与表达式例如,6+、(a+b)+、(i)+都不合法。+、的结合方向是“自右向左”(与一般算术运算符不同)。例如:i+(i+),合法。自增、自减运算符常用于循环语句中,使循环变量自动加1,也
48、用于指针变量,使指针指向下一个地址。说明不管是前缀+还是后缀+,对于变量的作用都是加1操作;但对于表达式来讲,+在前的表达式用的是变量加1以后的新值,+在后的表达式用的是变量原来的值。-运算符与+相同。运算符与表达式相 关 知 识(4)有关表达式使用过程中的问题说明。C运算符和表达式使用灵活,但是ANSIC并没有具体规定表达式中的子表达式的求值顺序,允许各编译系统自己安排。这可能导致有些表达式对不同编译系统有不同的解释,并导致最终结果不一致。C语言有的运算符为一个字符,有的由两个字符组成,C编译系统在处理时尽可能多地将若干字符组成一个运算符(在处理标识符、关键字时也按同一原则处理),如i+j将
49、解释为(i+)+j而不是i+(+j)。为避免误解,最好采用大家都能理解的写法,比如通过增加括号明确组合关系,改善可读性。C语言中类似的问题还有函数调用时实参的求值顺序,C标准也无统一规定。总之,不要写别人看不懂(难看懂),也不知道系统会怎样执行的程序。运算符与表达式l3逗号运算符和逗号表达式逗号表达式的一般形式为:表达式1,表达式2,表达式n逗号表达式的求解过程是:自左向右,求解表达式1,求解表达式2求解表达式n。整个逗号表达式的值是表达式n的值。例如,逗号表达式3+5,6+8的值为14。例2.5分析a=3*5,a*4的值查附录3可知,“=”运算符优先级高于“,”运算符(事实上,逗号运算符级别
50、最低)。上面的表达式等价于:(a=3*5),(a*4)所以整个表达式计算后值为60(其中a=15)。运算符与表达式例2.6分析下列程序main()intx,a;x=(a=3,6*3);/*a=3x=18*/printf(%d,%dn,a,x);x=a=3,6*a;/*a=3x=3*/printf(%d,%dn,a,x);运行结果为3,183,3逗号表达式主要用于将若干表达式“串联”起来,表示一个顺序的操作(计算)。在许多情况下,使用逗号表达式的目的只是想分别得到各个表达式的值,而并非一定需要得到和使用整个逗号表达式的值。运算符与表达式l4位运算符表2-6位运算符运算符运算范例&按位与0&0值是