关闭

关闭

关闭

封号提示

内容

首页 谭浩强C语言入门.ppt

谭浩强C语言入门.ppt

谭浩强C语言入门.ppt

上传者: w1320857678 2011-10-30 评分 0 0 0 0 0 0 暂无简介 简介 举报

简介:本文档为《谭浩强C语言入门ppt》,可适用于IT/计算机领域,主题内容包含第一章第一章本章要点本章要点C语言的特点C程序的结构在计算机上运行C程序的方法C语言出现的历史背景C语言出现的历史背景C语言是国际上广泛流行的高级语符等。

第一章第一章本章要点本章要点C语言的特点C程序的结构在计算机上运行C程序的方法C语言出现的历史背景C语言出现的历史背景C语言是国际上广泛流行的高级语言。C语言是在B语言的基础上发展起来的。B(BCPL)语言是年由美国贝尔实验室设计的,并用于编写了第一个UNIX操作系统,在PDP上实现。优点:精练,接近硬件缺点:过于简单,数据无类型。年贝尔实验室的DMRitchie在B语言的基础上设计出了C语言对B取长补短并用之改写了原来用汇编编写的UNIX(即UNIX第版)但仅在贝尔实验室使用。C语言出现的历史背景C语言出现的历史背景年UNIX第版发布,C优点突出引起关注。年出现了《可移植C语言编译程序》推动了UNIX在各种机器上实现C语言也得到推广其发展相辅相成。年影响深远的名著《TheCProgrammingLanguage》由BrianWKernighan和DennisMRitchie合著,被称为标准C。之后C语言先后移植到大、中、小、微型计算机上,已独立于UNIX和PDP风靡世界,成为最广泛的几种计算机语言之一。C语言出现的历史背景C语言出现的历史背景年,美国国家标准化协会(ANSI)根据C语言各种版本对C的发展和扩充,制定了新的标准ANSIC比标准C有了很大的发展。年KR按照ANSIC修改了他们的《TheCProgrammingLanguage》。年,ANSI公布了新标准ANSIC。年国际标准化组织接受了ANSIC为ISOC的标准(ISO)。年ISO又修订了C语言标准。目前流行的C语言编译系统大多是以ANSIC为基础进行开发的。C语言出现的历史背景C语言出现的历史背景说明:不同版本的C编译系统所实现的语言功能和语法规则又略有差别因此读者应了解所用的C语言编译系统的特点(可以参阅有关手册)。本书的叙述基本上以ANSIC为基础。C语言的特点C语言的特点()语言简洁、紧凑,使用方便、灵活。个关键字、种控制语句,程序形式自由()运算符丰富。种运算符()数据类型丰富,具有现代语言的各种数据结构。()具有结构化的控制语句是完全模块化和结构化的语言。()语法限制不太严格,程序设计自由度大。C语言的特点C语言的特点()允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可直接对硬件进行操作。兼有高级和低级语言的特点。()目标代码质量高,程序执行效率高。只比汇编程序生成的目标代码效率低%。()程序可移植性好(与汇编语言比)。基本上不做修改就能用于各种型号的计算机和各种操作系统。C语言的特点C语言的特点解释:C是由于开发大型应用软件的需要而产生的并不是所有的人都要去编写大型软件解释:面向对象的基础是面向过程。C是面向对象的语言C是面向过程的学起来比C语言困难得多所以不太适合程序设计的初学者。问题:既然有了面向对象的C语言为什么还要学习C语言?简单的C语言程序介绍简单的C语言程序介绍#include<stdioh>voidmain(){printf("ThisisaCprogramn")}*文件包含**主函数**函数体开始**输出语句**函数体结束*说明:main主函数名void函数类型每个C程序必须有一个主函数main{}是函数开始和结束的标志,不可省每个C语句以分号结束使用标准库函数时应在程序开头一行写:#include<stdioh>说明:本程序的作用是输出一行信息:ThisisaCprogram例求两数之和#include<stdioh>voidmain()*求两数之和*{inta,b,sum*声明定义变量为整型**以下行为C语句*a=b=sum=abprintf(″sumisd\n″,sum)}例求两数之和#include<stdioh>voidmain()*求两数之和*{inta,b,sum*声明定义变量为整型**以下行为C语句*a=b=sum=abprintf(″sumisd\n″,sum)}说明:*……*表示注释。注释只是给人看的,对编译和运行不起作用。所以可以用汉字或英文字符表示可以出现在一行中的最右侧也可以单独成为一行。说明:输出一行信息:sumis例求个数中较大者。#include<stdioh>voidmain()*主函数*{intmax(intx,inty)对被调用函数max的声明*inta,b,c*定义变量a、b、c*scanf(″%d,%d″,a,b)*输入变量a和b的值*c=max(a,b)*调用max函数,将得到的值赋给c*printf(″max=%dn″,c)*输出c的值*}例求个数中较大者。#include<stdioh>voidmain()*主函数*{intmax(intx,inty)对被调用函数max的声明*inta,b,c*定义变量a、b、c*scanf(″%d,%d″,a,b)*输入变量a和b的值*c=max(a,b)*调用max函数,将得到的值赋给c*printf(″max=%dn″,c)*输出c的值*}程序运行情况如下:,(输入和赋给a和b)max=(输出c的值)intmax(intx,inty){intzif(x>y)z=xelsez=yreturn(z)}max(intx,inty)max(a,b)说明:本程序包括main和被调用函数max两个函数。max函数的作用是将x和y中较大者的值赋给变量z。return语句将z的值返回给主调函数main。简单的C语言程序介绍简单的C语言程序介绍C程序:()C程序是由函数构成的。这使得程序容易实现模块化。()一个函数由两部分组成:函数的首部:例中的max函数首部intmax(intx,inty)函数体:花括号内的部分。若一个函数有多个花括号,则最外层的一对花括号为函数体的范围。函数体包括两部分:声明部分:inta,b,c可缺省执行部分:由若干个语句组成。可缺省简单的C语言程序介绍简单的C语言程序介绍注意:函数的声明部分和执行部分都可缺省例如:voiddump(){}这是一个空函数,什么也不做,但是合法的函数。简单的C语言程序介绍简单的C语言程序介绍小结:()C程序总是从main函数开始执行的,与main函数的位置无关。()C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上C程序没有行号。()每个语句和数据声明的最后必须有一个分号。()C语言本身没有输入输出语句。输入和输出的操作是由库函数scanf和printf等函数来完成的。C对输入输出实行“函数化”。运行C程序的步骤和方法运行C程序的步骤和方法一、运行C程序的步骤上机输入与编辑源程序对源程序进行编译与库函数连接运行目标程序运行C程序的步骤和方法运行C程序的步骤和方法二、上机运行C程序的方法目前使用的大多数C编译系统都是集成环境(IDE)的。可以用不同的编译系统对C程序进行操作常用的有TurboC、TurboC、VisualC等TurboC:是一个集成环境它具有方便、直观和易用的界面虽然它也是DOS环境下的集成环境但是可以把启动TurboC集成环境的DOS执行文件tcexe生成快捷方式也可以用鼠标操作。VisualC:也可以用VisualC对C程序进行编译。例:TurboC的使用将TurboC编译程序装入磁盘某一目录下例如:放在C盘根目录下一级TC子目录下。进入TurboC集成环境在DOS环境下C:TC>tc在Windows环境下找到可执行文件tcexe执行该文件。主菜单:个菜单项:FileEditSearchRunCompileDebugProjectOptionsWindowHelp()编辑源文件新建:单击“File”菜单下的“New”,修改:选择“File”“Open”(即单击“File”的下拉菜单中的“Open”项修改已有的源程序。在编辑(EDIT)状态下光标表示当前进行编辑的位置在此位置可以进行插入、删除或修改直到自已满意为止。保存:在编辑(EDIT)状态下光标表示当前进行编辑的位置在此位置可以进行插入、删除或修改直到自已满意为止。()对源程序进行编译选择“Compile”(或“AltF”)对源程序进行编译。ccpp源程序出现个错误(error)个警告(warming)。()将目标程序进行连接选择菜单“Compile”“Link”如果不出现错误会得到一个后缀为exe的可执行文件。()执行程序。选菜单“Run”“Run”(或按“CtrlF”键)。()退出TurboC环境选择“File”“Quit”。第二章第二章本章要点本章要点算法的概念算法的表示结构化程序设计方法主要内容主要内容算法的概念简单算法举例算法的特性怎样表示一个算法化程序设计方法一个程序应包括两个方面的内容:对数据的描述:数据结构(datastructure)对操作的描述:算法(algorithm)著名计算机科学家沃思提出一个公式:数据结构算法=程序数据结构+算法+程序设计方法+语言工具完整的程序设计应该是:算法的概念算法的概念广义地说为解决一个问题而采取的方法和步骤就称为“算法”。方法:一直加到加次方法:()()…()=加次对同一个问题可有不同的解题方法和步骤例:求算法的概念算法的概念为了有效地进行解题不仅需要保证算法正确还要考虑算法的质量选择合适的算法。希望方法简单运算步骤少。计算机算法可分为两大类别:数值运算算法:求数值解例如求方程的根、求函数的定积分等。非数值运算:包括的面十分广泛最常见的是用于事务管理领域例如图书检索、人事管理、行车调度管理等。简单算法举例简单算法举例例:求步骤:先求得到结果步骤:将步骤得到的乘积再乘以得到结果步骤:将再乘以得步骤:将再乘以得如果要求…则要写个步骤S:使p=S:使i=S:使pi乘积仍放在变量p中可表示为:pipS:使i的值加即ii。S:如果i不大于返回重新执行步骤S以及其后的步骤S和S否则算法结束。最后得到p的值就是!的值。可以设两个变量:一个变量代表被乘数一个变量代表乘数。不另设变量存放乘积结果而直接将每一步骤的乘积放在被乘数变量中。设p为被乘数i为乘数。用循环算法来求结果,算法可改写:S:pS:iS:pipS:ipS:若i返回S。否则结束。如果题目改为:求……算法只需作很少的改动:用这种方法表示的算法具有通用性、灵活性。S到S组成一个循环在实现算法时要反复多次执行SSS等步骤直到某一时刻执行S步骤时经过判断乘数i已超过规定的数值而不返回S步骤为止。此时算法结束变量p的值就是所求结果。例有个学生要求将他们之中成绩在分以上者打印出来。设n表示学号n代表第一个学生学号代表第i个学生学号。用G代表学生成绩gi代表第i个学生成绩算法表示如下:S:iS:如果则打印和否则不打印。S:iiS:如果i返回S继续执行。否则算法结束变量i作为下标用来控制序号(第几个学生第几个成绩)。当i超过时表示已对个学生的成绩处理完毕算法结束。例判定~年中的每一年是否闰年将结果输出。变量i作为下标用来控制序号(第几个学生第几个成绩)。当i超过时表示已对个学生的成绩处理完毕算法结束。分析:闰年的条件是:()能被整除但不能被整除的年份都是闰年如,年是闰年()能被整除又能被整除的年份是闰年。如,年是闰年。不符合这两个条件的年份不是闰年。设y为被检测的年份算法可表示如下:S:yS:若y不能被整除则输出y“不是闰年”。然后转到S。S:若y能被整除不能被整除则输出y“是闰年”。然后转到S。S:若y能被整除又能被整除输出y“是闰年”否则输出“不是闰年”。然后转到S。S:输出y“不是闰年”。S:yyS:当y时转S继续执行如y>算法停止。以上算法中每做一步都分别分离出一些范围(巳能判定为闰年或非闰年)逐步缩小范围直至执行S时只可能是非闰年。“其它”包括能被整除又能被整除而不能被整除的那些年份(如)是非闰年。例求算法如下:S:sign=S:sum=S:deno=S:sign=()signS:term=sign(deno)S:sum=sumtermS:deno=denoS:若deno返回S否则算法结束。单词作变量名以使算法更易于理解:sum表示累加和deno是英文分母(denominator)缩写sign代表数值的符号term代表某一项。反复执行S到S步骤直到分母大于为止。一共执行了次循环向sum累加入了个分数。sum最后的值就是多项式的值。例对一个大于或等于的正整数判断它是不是一个素数。概念:所谓素数是指除了和该数本身之外不能被其它任何整数整除的数。例如是素数。因为它不能被…整除。分析:判断一个数n(n)是否素数的方法:将n作为被除数将到(n)各个整数轮流作为除数如果都不能被整除则n为素数。算法如下:S:输入n的值S:i=(i作为除数)S:n被i除得余数rS:如果r=表示n能被i整除则打印n“不是素数”算法结束。否则执行SS:iiS:如果in返回S。否则打印n“是素数”。然后结束。算法的特性算法的特性有穷性:包含有限的操作步骤确定性:算法中的每一个步骤都应当是确定的有零个或多个输入:输入是指在执行算法时需要从外界取得必要的信息有一个或多个输出:算法的目的是为了求解“解”就是输出有效性:算法中的每一个步骤都应当能有效地执行并得到确定的结果。一个算法应该具有以下特点:算法的表示算法的表示可以用不同的方法表示算法常用的有:自然语言传统流程图结构化流程图伪代码PAD图用自然语言表示算法用自然语言表示算法自然语言就是人们日常使用的语言可以是汉语或英语或其它语言。用自然语言表示通俗易懂但文字冗长容易出现“歧义性”。自然语言表示的含义往往不大严格要根据上下文才能判断其正确含义描述包含分支和循环的算法时也不很方便。因此除了那些很简单的问题外一般不用自然语言描述算法。用流程图表示算法用流程图表示算法美国国家标准化协会ANSI(AmericanNationalStandardInstitute)规定了一些常用的流程图符号:例将求!的算法用流程图表示如果需要将最后结果打印出来可在菱形框的下面加一个输出框。例将例的算法用流程图表示。打印名学生中成绩在分以上者的学号和成绩。如果如果包括这个输入数据的部分流程图为例将例判定闰年的算法用流程图表示用流程图表示算法要比用文字描述算法逻辑清晰、易于理解。例将例的算法用流程图表示例将例判断素数的算法用流程图表示小结:小结:流程图是表示算法的较好的工具。一个流程图包括以下几部分:()表示相应操作的框()带箭头的流程线()框内外必要的文字说明。三种基本结构和改进的流程图三种基本结构和改进的流程图、传统流程图的弊端传统流程图用流程线指出各框的执行顺序对流程线的使用没有严格限制。因此使用者可以毫不受限制地使流程随意地转向使流程图变得毫无规律阅读者要花很大精力去追踪流程使人难以理解算法的逻辑。如图:传统流程图的流程可以是:这种如同乱麻一样的算法称为BS型算法意为一碗面条(ABowlofSpaghetti)乱无头绪。缺点:难以阅读、修改使算法的可靠性和可维护性难以保证。解决办法:必须限制箭头的滥用即不允许无规律地使流程随意转向只能顺序地进行下去。、三种基本结构Bohra和Jacopini提出了以下三种基本结构:顺序结构、选择结构、循环结构用这三种基本结构作为表示一个良好算法的基本单元。三种基本结构的图示:顺序结构选择结构循环结构的图示:当型(While型)循环结构直到型(Until型)循环三种基本结构的共同特点:()只有一个入口()只有一个出口(请注意:一个菱形判断框有两个出口而一个选择结构只有一个出口。不要将菱形框的出口和选择结构的出口混淆。)()结构内的每一部分都有机会被执行到()结构内不存在“死循环”(无终止的循环)。图中没有一条从入口到出口的路径通过A框。不正确的流程表示:流程内的死循环小结:小结:由三种基本结构顺序组成的算法结构可以解决任何复杂的问题。由基本结构所构成的算法属于“结构化”的算法它不存在无规律的转向只在本基本结构内才允许存在分支和向前或向后的跳转。扩展:扩展:只要具有上述四个特点的都可以作为基本结构。可以自己定义基本结构并由这些基本结构组成结构化程序。此图符合基本结构的特点这是一个多分支选择结构根据表达式的值决定执行路线。虚线框内的结构是一个入口一个出口并且有上述全部的四个特点。由此构成的算法结构也是结构化的算法。可以认为这是由三种基本结构所派生出来的。用NS流程图表示算法用NS流程图表示算法年美国学者INassi和BShneiderman提出了一种新的流程图形式。在这种流程图中完全去掉了带箭头的流程线。全部算法写在一个矩形框内在该框内还可以包含其它的从属于它的框或者说由一些基本的框组成一个大的框。这种流程图又称NS结构化流程图。NS流程图用以下的流程图符号:()顺序结构()选择结构()循环结构用三种NS流程图中的基本框可以组成复杂的NS流程图。图中的A框或B框可以是一个简单的操作也可以是三个基本结构之一。A框可以是一个选择结构B框可以是一个循环结构例将例的求!算法用NS图表示例将例的算法用NS图表示。(打印名学生中成绩高于分的学号和成绩)没有输入数据例将例的算法用NS图表示。(打印名学生中成绩高于分的学号和成绩)有输入数据例将例判定闰年的算法用NS图表示例将例的算法用NS图表示例将例判别素数的算法用NS流程图表示。传统流程图分析:此图不符合基本结构特点!由于不能分解为三种基本结构就无法直接用NS流程图的三种基本结构的符号来表示。因此应当先作必要的变换。例将例判别素数的算法用NS流程图表示。传统流程图变换为:用NS流程图表示:NS图表示算法的优点NS图表示算法的优点比文字描述直观、形象、易于理解比传统流程图紧凑易画。尤其是它废除了流程线整个算法结构是由各个基本结构按顺序组成的NS流程图中的上下顺序就是执行时的顺序。用NS图表示的算法都是结构化的算法因为它不可能出现流程无规律的跳转而只能自上而下地顺序执行。小结:小结:一个结构化的算法是由一些基本结构顺序组成的。在基本结构之间不存在向前或向后的跳转流程的转移只存在于一个基本结构范围之内(如循环中流程的跳转)一个非结构化的算法可以用一个等价的结构化算法代替其功能不变。如果一个算法不能分解为若干个基本结构则它必然不是一个结构化的算法。用位代码表示算法用位代码表示算法概念:伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。特点:它如同一篇文章一样自上而下地写下来。每一行(或几行)表示一个基本操作。它不用图形符号因此书写方便、格式紧凑也比较好懂也便于向计算机语言算法(即程序)过渡。用处:适用于设计过程中需要反复修改时的流程描述。IFxispositiveTHENprintxELSEprintx也可以用汉字伪代码表示:若x为正打印x否则打印x也可以中英文混用如:IFx为正printxELSEprintx例:“打印x的绝对值”的算法可以用伪代码表示为:开始置t的初值为置i的初值为当i<=执行下面操作:使t=ti使i=i{循环体到此结束}输出t的值结束也可以写成以下形式:BEGIN{算法开始}tiwhilei{titii}printtEND{算法结束}例求!。用伪代码表示算法:例输出个学生中成绩高于分者的学号和成绩。用伪代码表示算法:BEGIN{算法开始}iwhilei{inputandii}iwhilei{ifprintandii}END{算法结束}用计算机语言表示算法用计算机语言表示算法概念:用计算机实现算法。计算机是无法识别流程图和伪代码的。只有用计算机语言编写的程序才能被计算机执行。因此在用流程图或伪代码描述出一个算法后还要将它转换成计算机语言程序。特点:用计算机语言表示算法必须严格遵循所用的语言的语法规则这是和伪代码不同的。用处:要完成一件工作包括设计算法和实现算法两个部分。设计算法的目的是为了实现算法。#include<stdioh>voidmain(){inti,tt=i=while(i<=){t=t*Ii=i}printf(“dn”,t)}例将例表示的算法(求!)用C语言表示。应当强调说明:写出了C程序仍然只是描述了算法并未实现算法。只有运行程序才是实现算法。应该说用计算机语言表示的算法是计算机能够执行的算法。结构化程序设计方法结构化程序设计方法一个结构化程序就是用高级语言表示的结构化算法。用三种基本结构组成的程序必然是结构化的程序这种程序便于编写、便于阅读、便于修改和维护。结构化程序设计强调程序设计风格和程序结构的规范化提倡清晰的结构。结构化程序设计方法的基本思路是:把一个复杂问题的求解过程分阶段进行每个阶段处理的问题都控制在人们容易理解和处理的范围内。结构化程序设计方法结构化程序设计方法采取以下方法来保证得到结构化的程序:自顶向下逐步细化模块化设计结构化编码。两种不同的方法:自顶向下逐步细化自下而上逐步积累。用这种方法逐步分解直到作者认为可以直接将各小段表达为文字语句为止。这种方法就叫做“自顶向下逐步细化”。自顶向下逐步细化方法的优点:考虑周全结构清晰层次分明作者容易写读者容易看。如果发现某一部分中有一段内容不妥需要修改只需找出该部分修改有关段落即可与其它部分无关。我们提倡用这种方法设计程序。这就是用工程的方法设计程序。模块设计的方法:模块化设计的思想实际上是一种“分而治之”的思想把一个大任务分为若干个子任务每一个子任务就相对简单了。在拿到一个程序模块以后根据程序模块的功能将它划分为若干个子模块如果这些子模块的规模还嫌大还再可以划分为更小的模块。这个过程采用自顶向下方法来实现。子模块一般不超过行划分子模块时应注意模块的独立性即:使一个模块完成一项功能耦合性愈少愈好。第三章第三章本章要点本章要点数据的描述规则数据的操作规则主要内容主要内容C的数据类型常量与变量整型数据浮点型数据运行字符型数据主要内容主要内容6变量赋初值各类数值型数据间的混合运算算术运算符和算术表达式赋值运算符和赋值表达式逗号运算符和逗号表达式C的数据类型C的数据类型C语言提供了以下一些数据类型。数据类型构造类型指针类型空类型(无值类型)void常量与变量常量与变量常量和符号常量在程序运行过程中,其值不能被改变的量称为常量常量区分为不同的类型:整型实型字符型‘a’,‘b’‘’字符串‘a’,‘ab’‘’例符号常量的使用#definePRICE#include<stdioh>voidmain(){intnum,totalnum=total=num*PRICEprintf(″total=dn″,total)}例符号常量的使用#definePRICE#include<stdioh>voidmain(){intnum,totalnum=total=num*PRICEprintf(″total=dn″,total)}说明:程序中用#define命令行定义PRICE代表常量,此后凡在本文件中出现的PRICE都代表,可以和常量一样进行运算说明:用一个标识符代表一个常量的,称为符号常量,即以标识符形式出现的常量。符号常量的值在其作用域(在本例中为主函数)内不能改变,也不能再被赋值。说明:如再用赋值语句给PRICE赋值是错误的。PRICE=*错误不能给符号常量赋值。运行结果:total=常量与变量常量与变量 变量变量代表内存中具有特定属性的一个存储单元它用来存放数据这就是变量的值在程序运行期间这些值是可以改变的。变量名实际上是一个以一个名字对应代表一个地址在对程序编译连接时由编译系统给每一个变量名分配对应的内存地址。从变量中取值实际上是通过变量名找到相应的内存地址从该存储单元中读取数据。图常量与变量常量与变量变量命名的规定:C语言规定标识符只能由字母、数字和下划线三种字符组成且第一个字符必须为字母或下划线。例:sumtotal,month,Studentnamelotus3BASIC,lilingMDJohn,¥,D,a>b常量与变量常量与变量注意:编译系统将大写字母和小写字母认为是两个不同的字符。建议变量名的长度最好不要超过个字符。在选择变量名和其它标识符时应注意做到“见名知意”即选有含意的英文单词(或其缩写)作标识符。要求对所有用到的变量作强制定义也就是“先定义后使用”。整型数据整型数据整型常量的表示方法整型常量即整常数。在C语言中整常数可用以下三种形式表示:()十进制整数。如:,。()八进制整数。以头的数是八进制数。如:表示八进制数等于十进制数,表示八进制数,即十进制数。整型数据整型数据()十六进制整数。以x开头的数是进制数。如:x代表进制数,等于十进制数。x等于十进制数-。整型变量()整型数据在内存中的存放形式数据在内存中是以二进制形式存放的。如:inti*定义为整型变量*i=*给i赋以整数*图整型数据整型数据注意:十进制数的二进制形式为TurboC和TurboC为一个整型变量在内存中分配个字节的存储单元(不同的编译系统为整型数据分配的字节数是不相同的VC则分配个字节)。数值是以补码(complement)表示的。整型数据整型数据()整型变量的分类:共六种有符号基本整型有符号短整型有符号长整型无符号基本整型无符号短整型无符号长整型(signed)int(signed)short(int)(signed)long(int)unsignedintunsignedshort(int)unsignedlong(int)注意:括号表示其中的内容是可选的整型数据整型数据整数类型的有关数据:类型类型说明符长度数的范围基本型int字节~短整型short字节~长整型long字节~无符号整型unsigned字节~无符号短整型unsignedshort字节~无符号长整型unsignedlong字节~()整型数据整型数据()整型变量的定义:C规定在程序中所有用到的变量都必须在程序中定义即“强制类型定义”。例如:inta,b(指定变量a、b为整型)unsignedshortc,d(指定变量c、d为无符号短整型)longe,f(指定变量e、f为长整型)例整型变量的定义与使用#include<stdioh>voidmain(){inta,b,c,d*指定a、b、c、d为整型变量*/unsignedu/*指定u为无符号整型变量*/a=b=u=c=a+ud=b+uprintf(″a+u=%db+u=%d\n″cd)}例整型变量的定义与使用#include<stdioh>voidmain(){inta,b,c,d*指定a、b、c、d为整型变量*/unsignedu/*指定u为无符号整型变量*/a=b=u=c=a+ud=b+uprintf(″a+u=%db+u=%d\n″cd)}说明:可以看到不同种类的整型数据可以进行算术运算运行结果:a+u=22b+u=-14例整型数据的溢出#include<stdioh>voidmain(){inta,ba=b=aprintf(“d,dn”,a,b)}例整型数据的溢出#include<stdioh>voidmain(){inta,ba=b=aprintf(“d,dn”,a,b)}说明:数值是以补码表示的。一个整型变量只能容纳~范围内的数无法表示大于或小于的数。遇此情况就发生“溢出”。运行结果:,整型数据整型数据整型常量的类型()一个整数如果其值在~范围内认为它是int型它可以赋值给int型和longint型变量。()一个整数如果其值超过了上述范围而在~范围内则认为它是为长整型。可以将它赋值给一个longint型变量。整型数据整型数据()如果所用的C版本(如TurboC)分配给shortint与int型数据在内存中占据的长度相同则它的表数范围与int型相同。因此一个int型的常量同时也是一个shortint型常量可以赋给int型或shortint型变量。  整型数据整型数据()一个整常量后面加一个字母u或U认为是unsignedint型如u在内存中按unsignedint规定的方式存放(存储单元中最高位不作为符号位而用来存储数据)。如果写成u则先将转换成其补码然后按无符号数存储。整型数据整型数据()在一个整常量后面加一个字母l或L则认为是longint型常量。例如lLL等。这往往用于函数调用中。如果函数的形参为longint型则要求实参也为longint型。浮点型数据浮点型数据浮点型常量的表示方法两种表示形式小数指数e注意:字母e(或E)之前必须有数字且e后面的指数必须为整数e、e、e、ee、e、e、e浮点型数据浮点型数据规范化的指数形式:在字母e(或E)之前的小数部分中小数点左边应有一位(且只能有一位)非零的数字例如:可以表示为:e,e,e,e,e,e其中的e称为“规范化的指数形式”。浮点型数据浮点型数据浮点型变量()浮点型数据在内存中的存放形式一个浮点型数据一般在内存中占个字节(位)。与整型数据的存储方式不同浮点型数据是按照指数形式存储的。系统把一个浮点型数据分成小数部分和指数部分分别存放。指数部分采用规范化的指数形式。图浮点型数据浮点型数据()浮点型变量的分类浮点型变量分为单精度(float型)、双精度(double型)和长双精度型(longdouble)三类形式。例浮点型数据的舍入误差#include<stdioh>voidmain(){floata,ba=eb=aprintf(“fn”,b)}例浮点型数据的舍入误差#include<stdioh>voidmain(){floata,ba=eb=aprintf(“fn”,b)}说明:一个浮点型变量只能保证的有效数字是位有效数字后面的数字是无意义的并不准确地表示该数。应当避免将一个很大的数和一个很小的数直接相加或相减否则就会“丢失”小的数运行结果:e浮点型数据浮点型数据浮点型常量的类型C编译系统将浮点型常量作为双精度来处理。例如:f=*系统先把和作为双精度数然后进行相乘的运算得到的乘也是一个双精度数。最后取其前位赋给浮点型变量f。如是在数的后面加字母f或F(如f,F)这样编译系统就会把它们按单精度(位)处理。字符型数据字符型数据字符常量()用单引号包含的一个字符是字符型常量()只能包含一个字符‘a’,’A’,‘’‘abc’、“a”字符型数据字符型数据有些以“”开头的特殊字符称为转义字符n换行t横向跳格r回车反斜杠dddddd表示到位八进制数字xhhhh表示到位十六进制数字例转义字符的使用#include<stdioh>voidmain(){printf(″abctderftgn″)printf(″htibbjkn″)}例转义字符的使用#include<stdioh>voidmain(){printf(″abctderftgn″)printf(″htibbjkn″)}打印机上的显示结果:fabcgdehjik显示屏上的运行结果:fgdehjk字符型数据字符型数据字符变量字符型变量用来存放字符常量注意只能放一个字符。字符变量的定义形式如下:charc,c在本函数中可以用下面语句对c,c赋值:c=‘a’c=‘b’一个字符变量在内存中占一个字节。字符型数据字符型数据字符数据在内存中的存储形式及其使用方法将一个字符常量放到一个字符变量中实际上并不是把该字符本身放到内存单元中去而是将该字符的相应的ASCII代码放到存储单元中。图这样使字符型数据和整型数据之间可以通用。一个字符数据既可以以字符形式输出也可以以整数形式输出。例向字符变量赋以整数。#include<stdioh>voidmain(){charc,cc=c=printf(“ccn”,c,c)printf(“ddn”,c,c)}例向字符变量赋以整数。#include<stdioh>voidmain(){charc,cc=c=printf(“ccn”,c,c)printf(“ddn”,c,c)}说明:在第3和第行中将整数97和98分别赋给c和c它的作用相当于以下两个赋值语句:    c=′a′c=′b′因为’a’和’b’的ASCII码为97和98运行结果:ab例大小写字母的转换#include<stdioh>voidmain(){charc,cc=’a’c=’b’c=cc=cprintf(“%c%c″c,c)}例大小写字母的转换#include<stdioh>voidmain(){charc,cc=’a’c=’b’c=cc=cprintf(“%c%c″c,c)}说明:程序的作用是将两个小写字母a和b转换成大写字母A和B。从ASCII代码表中可以看到每一个小写字母比它相应的大写字母的ASCII码大32。C语言允许字符数据与整数直接进行算术运算。    运行结果:AB字符型数据字符型数据说明:有些系统(如TurboC)将字符变量定义为signedchar型。其存储单元中的最高位作为符号位它的取值范围是~。如果在字符变量中存放一个ASCII码为~间的字符由于字节中最高位为因此用d输出字符变量时输出的是一个正整数。如果在字符变量中存放一个ASCII码为~间的字符由于在字节中最高位为用d格式符输出时就会得到一个负整数。字符型数据字符型数据字符串常量字符串常量是一对双撇号括起来的字符序列合法的字符串常量:  “Howdoyoudo”,“CHINA”“a”“$”可以输出一个字符串如  printf(“Howdoyoudo”)字符型数据字符型数据‘a’是字符常量”a”是字符串常量二者不同。如:假设C被指定为字符变量:charcc=’a’c=”a”c=”CHINA”结论:不能把一个字符串常量赋给一个字符变量。字符型数据字符型数据C规定:在每一个字符串常量的结尾加一个“字符串结束标志”以便系统据此判断字符串是否结束。C规定以字符’\0’作为字符串结束标志。如:如果有一个字符串常量”CHINA”实际上在内存中是:它占内存单元不是5个字符而是6个字符最后一个字符为’\0’。但在输出时不输出’\0’。变量赋初值变量赋初值字符串常量()C语言允许在定义变量的同时使变量初始化如:inta=指定a为整型变量初值为3 floatf=指定f为浮点型变量初值为3charc=‘a’指定c为字符变量初值为‘a’变量赋初值变量赋初值()可以使被定义的变量的一部分赋初值。如:inta,b,c=表示指定a、b、c为整型变量但只对c初始化c的初值为5()如果对几个变量赋以同一个初值应写成:inta=,b=,c=表示a、b、c的初值都是3。不能写成inta=b=c注意:初始化不是在编译阶段完成的而是在程序运行时执行本函数时赋初值的相当于有一个赋值语句。各类数值型数据间的混合运算各类数值型数据间的混合运算整型(包括int,short,long)

用户评论(0)

0/200

精彩专题

上传我的资料

每篇奖励 +2积分

资料评价:

/822
0下载券 下载 加入VIP, 送下载券

意见
反馈

立即扫码关注

爱问共享资料微信公众号

返回
顶部