资源描述
,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,大学计算机基础程序设计基础,大学计算机基础程序设计基础大学计算机基础程序设计基础,第十章 程序设计基础,算法,2,C,程序入门,3,3,程序与程序设计,3,1,数据类型和表达式,4,输入输出,3,5,2,10.1 程序与程序设计,程序与程序设计,3,1,程序设计语言的发展,3,2,常见的程序设计语言,3,3,3,软件,=,计算机程序,+,文档资料,10.1.1,程序与程序设计,计算机是依靠硬件和软件的配合进行工作的,硬件是计算机系统的基础,软件附着在硬件上,指挥和控制硬件工作。,那么,,软件是什么呢,?,计算机程序,(核心),文档资料,软件,软件安装说明书,用户使用手册,有关技术资料、服务信息等,10.1 程序与程序设计,4,计算机程序,=,一系列指令的集合,10.1 程序与程序设计,10.1.1,程序与程序设计,那么什么是,计算机程序,呢?,事实上,为了能让计算机解决实际问题并完成预定功能,人们需要按照解题步骤和功能要求,从计算机的指令系统中选出相关的指令并进行编排,(,称为编程,),,形成一组有序的指令集合。,所以,计算机程序就是计算机为完成某一任务所必须执行的一系列指令的集合。,而用程序设计语言,(,也称计算机语言,),来编写计算机程序的过程就叫程序设计。,5,10.1.2,程序设计语言的发展,计算机程序设计语言经历了从,机器语言、汇编语言,到,高级语言,的发展历程。,机器语言,汇编语言,高级语言,第,4,代语言,1GL,2GL,3GL,4GL,10.1 程序与程序设计,6,10.1.2,程序设计语言的发展,1.,机器语言,机器语言是计算机诞生和发展初期使用的语言。机器语言程序是,由和的二进制代码,按一定规则,组成,的,并能被机器直接理解和执行的指令集合。,例如,计算,A=8+12,的机器语言程序如下:,10110000 00001000,:,把,8,放入累加器,A,中,00101100 00001100,:12,与累加器,A,中的值相加,结果 仍放入,A,中,11110100,:,结束,停机,10.1 程序与程序设计,7,10.1.2,程序设计语言的发展,1.,机器语言,机器语言编写的程序不仅难读、难懂、难修改,而且不同机器使用的指令系统也不尽相同,所以现在已经,没有人使用,机器语言直接编程了。,当然,机器语言也有其优点,编写的程序代码不需要翻译,因此占用空间少,,执行速度快,。,10.1 程序与程序设计,8,10.1.2,程序设计语言的发展,2.,汇编语言,汇编语言开始于,20,世纪,50,年代初。为了克服机器语言的缺点,人们将,机器指令的代码用英文助记符来表示,,例如用,ADD,表示加、,JMP,表示程序跳转等。,例如,计算,A=8+12,的汇编语言程序如下:,MOV,A,8,:,把,8,放入累加器,A,中,ADD,A,12,:,12,与累加器,A,中的值相加,结果仍放入,A,中,HLT,:,结束,停机,10.1 程序与程序设计,9,10.1.2,程序设计语言的发展,2.,汇编语言,汇编语言克服了机器语言难读、难懂的缺点,同时又保持了其编程质量高,占存储空间少,执行速度快的优点。故在编写,系统软件和过程控制软件,时,,仍经常采用,汇编语言。,但汇编语言仍然是,面向机器,的语言。使用汇编语言编程需要直接安排存储,规定寄存器和运算器的动作次序等。此外,不同计算机的指令长度、寻址方式、寄存器数目等都不一样,所以汇编语言程序的通用性较差。,10.1 程序与程序设计,10,10.1.2,程序设计语言的发展,2.,汇编语言,汇编语言编写的程序,(,源程序,),,必须经过,汇编程序,(,一种语言处理程序,),翻译成计算机所能识别的机器语言后,才能被计算机执行。,10.1 程序与程序设计,11,10.1.2,程序设计语言的发展,3.,高级语言,从最初与计算机交流的痛苦经历中,人们意识到,应该设计一种这样的语言,它接近于数学语言或自然语言,同时又不依赖于计算机硬件,编出的程序能在所有计算机上通用。经过努力,,1954,年,,第一个完全脱离机器硬件的高级语言,FORTRAN,语言问世,了。,高级语言的表示,形式近似于自然语言,,对各种公式的表示近似于数学公式。而且,一条高级语言语句的功能往往相当于十几条甚至几十条汇编语言的指令,程序编写相对比较简单。因此,在,工程计算、数据处理,等方面,人们,常用,高级语言来编写程序。,10.1 程序与程序设计,12,10.1.2,程序设计语言的发展,3.,高级语言,用高级语言编写的程序称为高级语言源程序,也不能直接执行,必须经过语言处理程序的,解释或编译,后才能执行。,10.1 程序与程序设计,13,10.1.2,程序设计语言的发展,4.,非过程化的程序语言,人们称高级语言是,第代语言,,其特点是,面向过程。,面向过程是指用户在程序中不但要说明解决什么问题,还要告诉计算机如何去解决。,计算机技术的发展要求新一代的计算机语言能够根据用户说明的问题,,智能化,的去自动寻找解决方案,具有这种功能的语言称为,第,4,代语言,(Fourth,Generation Language,,,4GL),。,目前,4GL,尚未发展成熟,,主要,面向基于数据库应用的领域(,SQL),,还不适用于科学计算、高速实时系统和系统软件等的开发。,10.1 程序与程序设计,14,10.1.3,常见的程序设计语言,第一个高级程序设计语言是,FORTRAN,语言,它是由美国,IBM,公司在,20,世纪,50,年代开发出来的。之后,随着计算机应用的发展,先后出现了,COBOL,、,BASIC,、,PASCAL,、,C,、,C+,、,Java,等高级语言。,1.FORTRAN,语言,由美国著名的计算机先驱人物约翰,巴克斯,(John Wamer),于,1954,年提出。,FOUTRAN,是,FORmula TRANslator,的缩写,意思是“公式翻译机”。顾名思义,该语言,主要用于科学计算,。,FORTRAN,自推出之日起,版本不断更新,功能不断增强,目前在工程应用领域,,FORTRAN,仍然被广泛使用,。,10.1 程序与程序设计,15,10.1.3,常见的程序设计语言,2.COBOL,语言,COBOL,(COmmon Business Oriented Language,通用事务处理语言,),是在美国国防部推动下,由政府机构和工业界联合开发的一种语言,于,1960,年正式推出,主要,用于商业数据处理。,COBOL,语言曾经使用非常广泛,,20,世纪,70,年代近一半的程序是用,COBOL,语言编写的。当前,,在商业领域,,COBOL,语言仍然占有重要席位,。,10.1 程序与程序设计,16,10.1.3,常见的程序设计语言,3.BASIC,语言,BASIC,(Beginners All-purpose Symbolic Instruction Code,初学者的通用符号指令代码,),是,1964,年由美国的,John G.Kemeny,和,Thomas E.Kurtz,在,FORTRAN,语言的基础上开发的。由于,简单易学,,,BASIC,语言得到了广泛普及。,Microsoft,公司对,BASIC,可谓是一往情深,从早期微型机上内置的,BASIC,,到,80,年代产生的第一个编译版本,Quick BASIC,,直到目前,非常流行的,Visual Basic,,一直没有中断过对,BASIC,语言的的改进。,最新出现的,Visual Basic.NET,,是采用,Microsoft,的,.NET,技术的,Visual Basic,语言。,10.1 程序与程序设计,17,10.1.3,常见的程序设计语言,4.PASCAL,语言,PASCAL,是由瑞士计算机科学家,Niklaus Wirth,设计的一种语言,,1968,年提出后被全世界广泛接受。这个语言的名字是为了纪念著名的法国数学家,也是计算科学的先驱,Blaise Pascal,而起的。由于结构小巧、语法严谨、数据类型丰富,从,20,世纪,70,年代末往后的很长一段时间里,,PASCAL,成为世界范围的,计算机专业教学语言,。,20,世纪,80,年代,随着,C,语言的流行,,PASCAL,走向了,衰落,。目前,在商业上仅有,Borland,公司仍在开发基于,PASCAL,语言系统的,Delphi,,它使用了面向对象与软件组件的概念,主要用于开发商用软件。,10.1 程序与程序设计,18,10.1.3,常见的程序设计语言,5.C,与,C+,语言,是由美国贝尔实验室的,Kennet L.Thompson,和,Dennis M.Ritchie,于,1972,年设计开发的,当时主要用于编写,UNIX,操作系统。后来由于其功能丰富、使用灵活、执行速度快、可移植性强,迅速成为最广泛使用的程序设计语言之一。,C,语言既可以用来,开发系统软件,,也可以用来开发应用软件,应用领域很广泛。例如,在中国广泛使用的计算机辅助设计软件,AutoCAD,、数学软件系统,Mathematica,等,以及许多语言编译系统本身,其软件系统的全部或部分都是用,C,语言开发的。,C,语言已经,成为最重要的软件系统开发语言之一,。,10.1 程序与程序设计,19,10.1.3,常见的程序设计语言,5.C,与,C+,语言,1980,年,贝尔实验室的,Bjarne Stroustrup,对,C,语言进行了扩充,,加入了面向对象,的概念,并于,1983,年改名为,C+,。目前,,C+,已经成为应用最广的面向对象程序设计语言。,Microsoft,公司的,Visual C+,和,Borland,公司的,C+Builder,是,C+,语言最常用的开发工具,利用这些开发工具,可以高效率的开发出复杂的,Windows,应用程序。,最新出现的,C#,语言,使用了,C+,的语法和语义,是基于,Microsoft,公司推出的新一代软件开发环境,.NET,平台的高级程序设计语言。,10.1 程序与程序设计,20,10.1.3,常见的程序设计语言,6.Java,语言,Java,是,Sun,公司开发的一种跨平台的网络编程语言,于,1995,年正式发布。其语言风格,与,C+,接近,,但舍弃了,C+,中一些不常用或容易被误用的成分,如指针等。,Java,语言最主要的特点是,同一个,Java,程序不用重新编译就可以在不同平台的计算机上运行。,Java,在网络上的独特优势以及其跨平台的特点,使得它已经,成为,Internet,上最受欢迎的编程语言之一。,10.1 程序与程序设计,21,10.1.3,常见的程序设计语言,7.,网页设计类语言,目前,最常用的,3,种动态网页设计语言有,ASP,(,Active Server Pages,)、,JSP,(,Java Server Pages,)、,PHP,(,Hypertext Preprocessor,)。三者都提供在,HTML,代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。,ASP,是一个,Web,服务器端的开发环境,利用它可以产生和执行动态的、互动的、高性能的,Web,服务应用程序。,ASP,支持,VBScript,、,JScript,等脚本语言。,JSP,是用,Java,语言作为脚本语言的,并可以在,Servlet,和,JavaBean,的支持下,完成功能强大的站点程序。,PHP,是一种跨平台的服务器端的嵌入式脚本语言。它大量地借用,C,、,Java,和,Perl,语言的语法,并融合,PHP,自己的特性,使,Web,开发者能够快速地写出动态生成页面。,10.1 程序与程序设计,22,10.2 算法,算法的基本概念,3,1,算法的特征,3,2,算法的表示方法,3,3,算法的评价,3,4,常用算法,3,5,23,10.2 算法,10.2.1,算法的基本概念,广义的说,为解决一个问题而采取的方法和步骤,就称为“算法”。本书所关心的当然只限于“,计算机算法,”。所谓的计算机算法就是使用计算机来解决一个问题时所采取的特定,方法和步骤。,24,10.2 算法,10.2.1,算法的基本概念,例如,,,要求出,1+2+3+100,的和,可设计如下的计算机算法。,设两个变量:一个,变量,sum,用来存放求和的结果,另一个,变量,i,用来存放每次被加的数值;,S1,:使,0=sum;,S2,:使,1=i;,S3,:使,i,的值,累加,到,sum,中,即,sum+i=sum,;,S4,:使,i,的值加,1,,,i+1=i;,S5,:如果,i=100,返回,S3,继续执行,;,否则,算法结束。,最后得到的,sum,的值就是要求的和。,25,10.2 算法,10.2.1,算法的基本概念,算法设计完成后,用某种程序设计语言描述出来就是计算机程序了。,算法与程序设计语言及程序的,关系,如图所示。,26,10.2.2,算法的特征,1,确定性,算法的描述必须无歧义,以保证算法的执行结果是确定的。,2,可行性,算法中的每一步操作都必须是可执行的,也就是说算法中每一步都能通过手工或机器在有限时间内完成。,3,输入,一个算法有,0,个或多个输入,在算法运算开始之前给出算法所需数据的初值,这些输入取自特定的对象集合。,4,输出,作为算法运算的结果,一个算法产生一个或多个输出,输出是同输入有某种特定关系的量。,5,有穷性,一个算法总是在执行了有穷步的运算后终止,即该算法是可达的。,10.2 算法,27,10.2 算法,10.2.3,算法的表示方法,算法有很多种表示方法,常用的有,自然语言、流程图、,N-S,图、伪代码,等。,1.,自然语言,用人们日常使用的语言,即自然语言来描述算法通俗易懂,但存在以下缺陷:,(1),易产生歧义,往往要根据上下文才能判别其确切含义;,(2),语句繁琐、冗长,尤其是描述包含选择和循环的算法时,不太方便。,因此,,一般不用,自然语言来描述算法,除非是很简单的问题。,28,10.2 算法,10.2.3,算法的表示方法,2.,流程图,流程图是用如图所示的一些,图框、线条,以及文字说明来描述算法。,流程图表示的算法,形象、直观,便于交流。,因此被,广泛使用,。,29,10.2 算法,流程图,顺序结构,入口,分支结构,循环结构,P,条件,A,语句,1,B,语句,2,出口,A,B,出口,入口,n,P,A,B,y,P,当,型,出口,入口,n,y,A,直,到,型,P,出口,入口,n,y,A,30,真,假,要求出,1+2+3+100,的和,开 始,结 束,0s,1i,输出,s,i=n),。,真,假,假,真,47,10.2 算法,10.2.5,常用算法,4.,递推法,(,迭代法,),从初值出发,归纳出新值与旧值间的关系,利用循环来完成迭代,每次循环时都从旧值的基础上递推出新值,并由新值代替旧值。,例:,猴子吃桃子问题。小猴有桃若干,每天吃掉现有数的一半多一个,到第,7,天要吃时只剩下一个了,问小猴原有桃子多少个?,设第,n,天的桃子为,x,n,,它是前一天的桃子数的一半少,1,个,,递推公式,x,n-1,=(x,n,+1)2,48,10.2 算法,10.2.5,常用算法,4.,递推法,(,迭代法,),49,10.2 算法,10.2.5,常用算法,5.,求最值,如果要求最大值,在,n,个数中先假设第,1,个数为最大值并存入变量,max,,用变量,max,依次同第,2,、,3,、,、,n,个数据逐一比较,一旦某个数比,max,大,则用这个数来替换,max,中原有的值,所有数比较完,最大值也就获得(打擂法,),。,50,10.2 算法,10.2.5,常用算法,5.,求最值,例:,输入三个数,输出其中的最大值。,51,10.2 算法,10.2.5,常用算法,5.,求最值,例:,输入,n,个数,输出其中的最小值。,52,10.3 C程序入门,C,语言概述,3,1,C,程序结构,3,2,C,程序的上机步骤,3,3,53,产生背景,ALGOL 60CPL,语言,BCPLB,语言,写,UNIX,系统,产生过程,时间,:19721973,地点,:,美国贝尔实验室,目的,:UNIX,操作系统,设计人,:Ken.Thompson,和,Dennis.M.Ritchie,C,标准,标准,C:1978,年,K&R,合著,The C Programming Language,ANSI C:1983,年,87 ANSI C:1987,年,1990,年国际标准的,ANSI C,,,1994,年再次修订。,C,版本,Turbo C,或称,TC,Visual C+,VC,10.3.1 C,语言概述,54,C,语言的特点:,C,语言具有完善的功能和非常高的效率。,C,语言可以对硬件操作,是介于汇编语言和高级语言之间的一种语言。,C,语言是结构化的程序设计语言。,C,语言具有丰富的数据类型和运算类型。,C,语言具有良好的移植性。,C,语言书写灵活,表达简洁。,10.3.1 C,语言概述,55,表,1 C,语言与,Pascal,语言比较,通过表,1,我们可以得出结论:,C,比,Pascal,简练,因此源程序更短,编程效率高。,C,语言,PASCAL,语言,含义,if(e)S;,int i;,int a10;,int f();,int*p;,i+=2;,i+,+i;,BEGIN,END,IF(e)THEN S;,VAR i:INTEGER;,VAR a:ARRAY1.10 OF INTEGER;,FUNCTION f():INTEGER;,VAR P:INTEGER;,i=i+2;,i=i+1;,函数体、分程序、复合语句,条件语句,定义,i,为整形变量,定义,a,为一维数组,定义,f,为返回整形值函数,;,p,为指向整形变量的指针变量,;,赋值语句,使,i+2,赋给,I,i,自增值,1,,,i,加,1,赋给,I,56,/*example1.1 The first C Program*/,#include,main(),printf,(,“This is a c program.n”,),;,注释,编译预处理,主函数,语句,输出:,This is a c program.,例,.,第一个程序,This is a c program.,printf,语句中的,“,n,”,是,换行符,10.3.2 C,程序,结构,57,/*,例,求两个整数之和*,/,#include,/*,主函数 *,/,void main(),int a,b,sum;,/*,定义变量*,/,a=10;,b=24;,sum=add(a,b);,printf(”sum=,%d,n,sum);,/*,求两个数,x,,,y,之和的函数 *,/,int add(int x,int y),int z;,z=x+y;,return(z);,运行结果:,sum=34,函数,语句,预处理命令,注释,printf,语句中的,“,%d,”,是表示,“,十进制整数类型,”,58,例,从键盘输入两个整数,输出其中较大的数,#include,void main(),int max(int x,int y),int a,b,c;,scanf,(“%d,%d”,&a,&b,);,c=max(a,b);,printf(max=%d,c);,int max(int x,int y),int z;,if(xy)z=x;,else z=y;,return(z);,scanf,语句中,“,&a,”,的含义是,“,取地址,”,输入:,10,20,输出:,max=20,声明部分,定义变量,调用,max,函数,返回值赋给,c,定义,max,子函数,函数值、形参,x,、,y,为整型,通过,max,函数将,z,值带回调用处,59,多,用,小写,字母,大小写敏感,不使用行号,,无程序行,概念,可使用空行和空格,常用,锯齿形,书写格式,main(),.,.,.,.,.,.,.,main(),int i,j,sum;,sum=0;,for(i=1;i10;i+),for(j=1;j10;j+),sum+=i*j;,printf(“%dn”,sum);,优秀程序员的素质之一,:,使用,TAB,缩进,对齐,有足够的注释,有合适的空行,C,语言格式特点,60,C,语言结构特点,函数与主函数,程序由一个或多个函数组成,必须有且只能有一个主函数,main,(),,,可以放在程序中任一位置,程序执行从,main,开始,在,main,中结束,其它函数通过嵌套调用得以执行。,程序语句,C,程序由语句组成,用“,;,”作为语句终止符,注释,/*/,为注释,不能嵌套,VC,中也可以使用,/,不产生编译代码,例:,/*This is the main /*of example1.1*/*/,非法,编译预处理命令,61,编辑,链接,编译,执行,file.exe,程序代码的录入,生成源程序,*,.c,语法分析查错,翻译,生成目标程序,*,.obj,与其它目标程序或库,链接装配,生成可执行,程序,*,.exe,10.3.3 C,程序的上机步骤,62,VC+集成开发环境,打开,VC,。,单击“,file/new”,选择“,file”,选项卡,,C+source file,输入文件名(扩展名,.c),选择保存位置(,Lacation),。,单击“,OK”,.c,63,VC+集成开发环境,编译、链接和运行的命令项都处在菜单,Build,之中。,注意,在对程序进行编译、链接和运行前,最好先保存自己的工程,(,使用“,FileSave,All”,菜单项,),以避免程序运行时系统发生意外而使自己之前的工作付之东流。,首先选择执行菜单第一项,Compile,,此时将对程序进行编译。,若编译中发现错误,(error),或警告,(warning),,将在,Output,窗口中显示出它们所在的行以及具体的出错或警告信息,可以通过这些信息的提示来纠正程序中的错误或警告,(,注意,错误是必须纠正的,否则无法进行下一步的链接;而警告则不然,它并不影响进行下一步,当然最好还是能把所有的警告也“消灭”掉,),。当没有错误与警告出现时,,Output,窗口所显示的最后一行应该是:,“,Hello.obj-0,error(s,),0warning(s)”,。,64,VC+集成开发环境,选择菜单的第二项,Build,来进行链接生成可执行程序。,在链接中出现的错误也将显示到,Output,窗口中。链接成功后,,Output,窗口所显示的最后一行应该是:,“,hello.exe-0,error(s,),0,warning(s,)”,。,运行,(,执行,),程序,选择,Execute,项,(,该选项前有一个深色的感叹号标志“!”,.,VC6,将运行已经编好的程序,执行后将出现如图所示,其中的“,press any key to continue”,是由系统产生的,使得用户可以浏览输出结果,直到按下了任一个键盘按键时为止,(,那时又将返回到集成界面的编辑窗口处,),。,编译、链接和运行也可以使用工具按钮。,建立,C,的源程序也可以直接在,windows,新建一文本文件,然后将扩展名改为,.C,。,65,10.4 基本数据类型与运算符,C,的数据类型,3,1,表达式和运算符,3,2,66,C,语言是一种强类型的计算机语言,所有用到的数据,必须被说明为某种数据类型,数据类型是程序设计中的重要概念。数据类型确定数据在内存中占所空间的大小及存储形式。在,C,语言中,数据类型可分为:基本类型,构造类型,指针类型,空类型四大类。,10.4.1 C,的数据类型,67,10.4.1,C,的数据类型,C,数,据,类,型,基本类型,构造类型,指针类型,空类型,void,字符型,char,整 型,实 型(浮点型),单精度型,float,双精度型,double,数组类型,结构体类型,共用体类型,短整型,short,长整型,long,整型,int,数据类型决定:,1.,数据占内存字节数,2.,数据取值范围,3.,可以进行的操作,68,10.4.1,C,的数据类型,短整型,整型(,int,),整型,长整型,无符号(,unsigned short,),有符号,(short),无符号(,unsigned,),有符号,(int),无符号(,unsigned long,),有符号,(long),69,标识符,定义:标识变量名、符号常量名、函数名、数组名、文件名的字符串序列,名字,。,命名规则:,只能由,字母、数字、下划线,组成,且,第一个字符必须是字母或下划线,大小写字母含义不同,一般用,小写,不能使用,关键字,使用:,先定义、后使用,标识符应该,“,见名知意,”,,如,total,max,标识符应该,“,不宜混淆,”,,如,l,与,1,O,与,0,10.4.2,常量与变量,70,常量和符号常量,定义:程序运行过程中,其值不能被改变的量(常数),分类:直接常量、,符号常量,类型,示例,直,接,常,量,整型常量,12,、,0,、,-3,实型常量,4.6,、,-1.23,、,1.23e+5,字符常量,a,、,b,字符串常量,a,、,、,abc,、,10,符号常量,PRICE,、,PAI,71,符号常量,:,用,标识符,代表常量,一般用大写字母:,PRICE,、,PI,定义格式:,#define,符号常量 常量,其值在作用域内不能改变和再赋值。,例,符号常量举例,#define PRICE 30,#include,void main(),int num,total;,num=10;,total=num*PRICE;,printf(total=%dn,total);,total=300,运行结果:,符号常量的优点是:,见名知意、一改全改,72,变量,定义:其值可以改变的量。,定义格式:,数据类型 变量名;,变量应该有名字,并在内存中占据一定的存储单元。,变量名和变量值有不同的含义,变量实际代表一块内存存贮区域,变量名实为这个区域的标识,a,3,例 变量的使用,main(),int a;,a=3;,printf(“a=%d,a);,变量名,变量值,存储区域,73,整型常量(整常数)的三种表示方法,十进制整数:由数字,09,和正负号表示,.,如,123,-456,0,八进制整数:由数字,0,开头,后跟数字,07,表示,.,如,0,123,0,11,十六进制整数:由,0 x,开头,后跟,09,af,AF,表示,.,如,0 x,123,0 x,ff,八、十六进制数都是无符号数。,整数,数据,74,注意:,十进制数,10,的二进制形式为,1010,,不同的编译系统为整型数据分配的字节数是不相同的,,Turbo C 2.0,和,Turbo C+3.0,为一个整型变量在内存中分配,2,个字节的存储单元,,VC+6.0,则分配,4,个字节。,数值是以补码,(complement),表示的。,75,整型变量的分类:,共六种,有符号基本整型,有符号短整型,有符号长整型,无符号基本整型,无符号短整型,无符号长整型,(signed)int,(signed)short(int),(signed)long(int),unsigned int,unsigned short(int),unsigned long(int),注意:,括号表示其中的内容是可选的,.,76,整数类型的有关数据,(VC+),:,类型 类型说明符 长度 数的范围,基本型,int,4,字节,-2,31,2,31,-1,短整型,short 2,字节,-2,15,2,15,-1,长整型,long,4,字节,-2,31,2,31,-1,无符号整型,unsigned 4,字节,0,(,2,32,-1,),无符号短整型,unsigned short,2,字节,0,65535,无符号长整型,unsigned long,4,字节,0,(,2,32,-1,),77,整型变量的定义,:,定义整型变量的一般形式:,类型说明符 变量名,变量名,.;,在定义变量的同时给变量赋值称为变量初始化。变量初始化的格式为:,类型说明符 变量名,=,变量名,=,.;,78,【,例,】,分析以下程序的运行结果。,#include,main(),int a=1,b=2,c;,long x=29,y=2147483600;,c=a;,a=10;,printf(a+b=%d,,,x+y=%ld,,,c=%dn,a+b,x+y,c);,程序的运行结果为:,a+b=12,,,x+y=2147483629,,,c=1,79,【,例,】,分析以下程序的运行结果。,#include,main(),short d=-1;,printf(%hd,%hun,d,d);,程序的运行结果为:,-1,,,65535,80,【,例,】,分析以下程序的运行结果。,#include,main(),int i=65535;,short j=i;,printf(i=%d,j=%dn,i,j);,程序的运行结果为:,i=65535,,,j=-1,本例中,变量,i,是整型变量,在内存中占四个字节。,65535,在内存中存放形式为:,00000000 00000000 11111111 11111111,变量是,j,是短整型变量,在内存中只占两个字节,因此在将,i,赋给,j,时,只将低端的两个字节赋给,j,中内容为:,11111111 11111111,(,-1,的补码),所以输出的,i,为,65535,,,j,为,-1,。,81,浮点型常量的表示方法,两种表,示形式,小数,指数,0.123,3,e-3,注意,:,字母,e(,或,E),之前必须有数字,且,e,后面的指数必须为整数,1e3,、,1.8e-3,、,-123e-6,、,-.1e-3,e3,、,2.1e3.5,、,.e3,、,e,浮点型,数据(实型数据),82,浮点型变量,:,浮点型变量分为单精度,(float,型,),、双精度,(double,型,),。,浮点型数据在内存中的存放形式是用科学记数法(即指数的方式)存放的,在占用相同的存储空间时,浮点型数据可以存储更大范围的数据,但浮点型数据有有效位限制(精度)。,类型,类型说明符,数的范围(绝对值),字节数,有效位,单精度,float,0,和,1.210,-38,3.410,38,4,7,8,双精度,double,0,和,2.310,-308,1.710,308,8,15,16,83,【,例,】,分析以下程序的运行结果。,#include,main(),float x=101235342.98345678;,double y=422222222345.11223344556677889900;,printf(x=%f,,,y=%lfn,x,y);,程序的运行结果为:,x=101235344.000000,,,y=422222222345.112240,八个有效位,十六个有效位,84,在内存中存放字符时,所存放的是该字符的二进制代码(,ASCII,码),字符型,数据,字符,十进制代码,八进制,十六进制,二进制,换行,10,12,A,00001010,回车,13,15,D,00001101,空格,32,40,20,00010000,字符,0,9,48,57,60,71,30,39,00110000,00111001,字符,A,Z,65,90,101,132,41,5A,01000001,01011010,字符,a,z,97,122,141,172,61,7A,01100001,01111010,85,字符常量,(1),用单引号包含的一个字符是字符型常量,(2),只能包含一个字符,例,a,A,1,abc,、,“,a,”,字符型,数据,86,有些以,“,”,开头的特殊字符称为转义字符,转义字符,转义字符的意义,ASCII,码(十进制),n,回车换行符,将光标移到下一行开头,10,r,回车符,将光标移到本行开头,13,t,制表符,将光标横向跳到下一个制表位置,9,b,退格符,将光标移到前一列,8,f,换页符,将光标移到下一页开头,12,反斜杠字符,(),92,双引号字符,(),34,单引号字符,(),39,ddd,1,3,位八进制数所代表的字符,xhh,12,位十六进制数所代表的字符,87,【,例,】,分析以下程序的运行结果。,main(),int x=16,y=2008;,printf(y=%drx=%dn,y,x);,printf(%c%c%cb%.1fn,C,+,+,6.0);,程序的运行结果为:,x=1608,C+6.0,88,字符变量,字符型变量用来存放字符常量,注意只能放一个字符。,字符变量的定义形式如下:,char c1,c2;,一个字符变量在内存中占一个字节。,89,【,例,】,分析以下程序的运行结果。,#include,main(),char a=66;,int b=A;,printf(%d,%cn,a,a);,printf(%d,%cn,b,b);,程序的运行结果为:,66,B,65,A,90,【,例,】,以下程序实现大小写字母转换。,#include,main(),char a=x,b=Y;/*a,,,b,被说明为字符变量并赋值*,/,a=a-32;/*,把小写字母换成大写字母*,/,b=b+32;,printf(%c,,,%cn,a,b);,程序的运行结果为:,X,y,91,字符串常量,字符串常量是一对双引号括起来的字符序列,.,合法的字符串常量,:,“,How do you do.,”,“,CHINA,”,,,“,a,”,,,“,$123.45,”,可以输出一个字符串,如,printf(,“,How,do you do.,”,),;,字符串常量,92,是字符常量,,”,”,是字符串常量,二者不,同。,如:,假设被指定为字符变量,:,char c,c=a;,”,a”,;,c,”,CHINA”;,结论:,不能把一个字符串常量赋给一个字符变量。,93,规定:在每一个字符串常量的结尾加一个,“,字符,串结束标志,”,,以便系统据此判断字符串是否结束。,规定以字符,作为字符串结束标志。,如:,如果有一个字符串常量”,实际上在内存中是:,C,H,I,N,A,0,它占内存单元不是个字符,而是个字符,最后一个字符为。但在输出时不输出。,94,【,例,】,分析以下程序的运行结果。,#include,#include,main(),printf(%d,%dn,strlen(abcd),sizeof(abcd);,程序的运行结果为:,4,5,strlen,是用来计算字符串的长度,这是一个库函数,sizeof,是用来计算字符串所占存储空间的大小,这是一个运算符。,95,编程时,要在程序中写一些算式,这些算式就是表达式;一个表达式可能包含一个或多个操作,而连接这些操作对象的是运算符。如:,x+y-z/2,就是一个,C,语言表达式。,特殊的,在程序设计语言中,单个常量、单个变量、单个函数也算表达式。,C,语言运算符有:算术运算符、关系与逻辑运算符、赋值运算符、条件运算符、逗号运算符等。,10.4.2,运算符和表达式,96,算术运算符和算术表达式,基本算术运算符:,+,-,*/%,结合方向:从左向右,优先级:,-,-,*/%,-,+-,(2)(3)(4),说明:,“,-,”,可为,单目,运算符时,右结合性,两整数相除,结果为整数,%要求两侧均为整型数据,+-*/,运算的两个数中有一个数为实数,结果是,double,型,例,5/2 =,-5/2.0 =,例,5%2 =,-5%2 =,1%10 =,5%1 =,5.5%2,例,5/2 =,2,-5/2.0=,-2.5,例,5%2 =,1,-5%2 =,-1,1%10 =,1,5%1 =,0,5.5%2,(,),97,自增、自减运算符,+,作用:使变量值加,1,或减,1,种类:,
展开阅读全文