资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,C语言课件(精华版),第一章,C语言的发展、特点与程序结构,第二章,基本数据类型、运算符和表达式,第三章,基本语句与顺序结构,第四章,选择结构,第五章,循环结构,第六章,数组,第七章,函数,第八章,指针,第十章,结构体,第十二章,文件,C 语 言 程 序 设 计,推荐参考书:,谭浩强主编程序设计(第二版),北京:清华大学出版社,第一章 C语言,的发展,、,特点与程序开发基本知识,1,.,1,C语言的发展与特点,1,.,2,程序设计的基本方法,1,.,3,算法的概念及其表示,1,.,4,C语言的基本结构,1,.,5,应用程序的开发步骤和运行过程,下一章,目 录,习题,C,语言是一门优秀的程序设计语言,C,语言是在1973年由美国贝尔实验室开发的。,1983年,ANSI为C语言制定了新的标准,称为ANSIC,并于1989年最终完成。,目前使用较多的版本有,ANSI C,Borland C,Turbo C,Microsoft C/C+,Visual C+,等。,C语言的发展,WUCC,C语言是结构化程序设计语言,功能强大,,具有丰富的数据类型及,运算符,。,简洁紧凑,使用方便灵活。,C语言具有自我扩充能力,C语言具有汇编语言的功能,可移植性好,WUCC,C语言的特点,程序的概念,程序是计算机解决问题所需的一系列指令的集合。,著名计算机科学家Nikiklaus Wirth 提出了,“,算法,数据结构,程序,”的公式,程序就是在数据的某些特定的表示方式和结构的基础上,对抽象算法的具体描述。,1.2 程序设计的基本方法,程序数据结构算法程序设计方法语言工具,数据结构是数据的类型和数据的组织形式。,算法是为解决一个问题而采用的方法和有限的步骤。,程序设计方法,确定语言和编程环境,WUCC,面向过程的程序设计,所谓面向过程的程序设计,是指利用面向过程的语言工具,(,如Pascal,、,Fortran和C语言等,),进行程序开发的各项活动,。,基本思想:,把一个需要求解的复杂问题分为若干个模块来处理,每个模块处理一个子问题;设计时遵循自顶向下、逐步细化、模块化设计和结构化编码的原则。,优点:,编程简单、结构性强、可读性好;,遵循这种结构的程序只有一个入口和一个出口。,缺点:,存在数据与程序模块的分离和程序的可重用性差等问题。,WUCC,面向对象的程序设计,Program Design in C Language,面向对象的程序设计将一些新的理念和结构化程序设计中好的思想相融合,提供了一种全新的程序设计方法。,基本思想,将一个需要解决的问题分解为一系列实体(对象),然后围绕这些对象建立数据和函数;函数的功能决定了该对象的行为。规定一个对象的函数可以访问另一对象的函数,但一个对象的数据不能应用于另一对象的函数中。,几个基本概念:三类机制:,类、对象、属性、事件、方法 封装、继承、多态,1.3,算法及其表示,算法的特性,有穷性,一个算法的操作步骤应当是有限的,;,确定性,算法中的每一个步骤应当有确定的意义,不能,有二义性,;,有效性,算法中的每一个步骤应当正确,、,可行,并且能,有效地执行,;,有零个或多个输入,执行算法时需要从外界获取的信息,;,有一个或多个输出,执行算法后应当得到正确的结果。,算法举例,【,例,1.1,】,输入三个数,然后输出其中最大的数。,(1),输入变量 x,y,z的值,(2),比较x和y,如果xy,则x送max,;,否则y送max,。,(3),比较max与z,如果 z max,则将z送max。,(4),输出max,max,即为最大数。,算法,对同一个问题,算法是不唯一的,例如,:,求和,1+2+3+,+100,(1),=,(,(1+2)+3)+4)+,+100,),(2),=,(,1+100,),50,一个好的算法应该是,:,正确、易读、效率高。,算法的表示方法,常用的算法描述方法有,:,自然语言描述,、,伪代码,、,流程图,、,N-S图,、,PAD,图,等。,1.,自然语言,就是用人们日常使用的语言来描述或表示算法的方法。,英语和程序设计语言混合使用称为伪代码。,Begin,算法开始,input x,y,z,if xy,then max=x,else max=y,if zmax,then max=z,print max,end ,算法结束,2.,用伪代码表示算法,用一些图框和方向线表示算法的图形表示法。,特点,:直观形象,易于理解,便于检查和交流。,常用流程图符号及含义如下:,起止框,处理框,判断框,输入或输出框,流程线,连接点,3.,用流程图表示算法,流程图,:,【,例,1.1,】,对任意给定的三个整数 x,y,z,求出其最大值。,开始,读入,x,y,z,max,x,max,z,max,y,z,max,?,输出,max,结束,T,F,x,y,?,T,F,读入,x,y,z,x,y,F,T,max,x,max,y,T,F,z,max,max,z,打印,max,单元的值,例,:,对任意给定的三个整数 x,y,z,求出其最大值。,4.,用N-S流程图表示算法,结构化程序设计,C,语言是结构化程序设计语言,有三种基本结构。,顺序结构,选择结构,循环结构,实践证明,任何复杂的算法都可以用这三种基本结构来描述。,程序设计的目标在正确的前提下,其重要性排列次序依次为,:,可读,、,可维护,、,可移植和高效,。,顺序结构,矩形框 用于表示顺序结构,。,执行时按语句的先后顺序执行。,先执行语句A,再执行语句B。,A,B,A,B,顺序结构的流程图,顺序结构的N-S图,选择结构(分支结构),根据条件的真或假选择执行不同的操作内容。,当条件成立执行语句A,否则执行语句B。,条件,A,B,T,F,条件,T,F,A,B,选择结构的流程图,选择结构的N-S图,循环结构,(1),当型(,while,型循环),当条件成立,执行循环体,否则跳出循环体。,条件,语句块,条件,语句块,T,F,L形框用于表示循环结构,(2),直到型循环(,do-while,型循环),首先执行循环体,若条件不成立继续执行循环体,直到条件成立为止。,语句块,条件,语句块,条件,F,T,【,例,1.2,】,在屏幕上显示一行文字,“,Welcome to C!,”,。,#include,void,main,(),/,*,定义主函数,*,/,printf,(,“,Welcome to C,!,n,”,);,程序运行结果:,Welcome to C!,函数,(,Function,),C,程序包含一个或多个函数,其中必须有一个,main,(),圆括号指示一个函数,包含函数体,表示,main,函数结束,printf,(,“,Welcome,”,);,printf,(,“,to,C,!,n,”,);,printf,(,“,Welcome,n,to,n,C!,n,”,);,程序运行结果:,Welcome to C!,程序运行结果:,Welcome,to,C!,注释,/,*,文本,*,/,或,/,不被执行,以提高程序的可读性,语句,(Statement),必须以,;,结尾,格式输出函数,printf,()。,调用标准函数,显示引号中的内容,。,#include,void,main,(),int a,b,sum,;,/,声明部分,定义变量类型,a=123,;,b=456,;,/,执行部分,赋值语句,sum=a+b,;,/,执行部分,赋值语句,printf,(,“sum=%dn”,sum,);,/,执行部分,输出语句,程序运行结果:,sum=579,赋初值,计算,输出,定义变量,【,例,1.3,】,求两个整数的和,函数体,包括变量说明部分,语句执行部分,/,文件包含,预处理命令,/,将标准输入输出头文件包含到源程序中,预编译命令,void,main,(),主函数,函数体开始,声明部分,执行部分,函数体结束,#include,void main,(),int a,b,c,;,/,定义变量类型,printf,(“,input two numbers,:,n,”);,/,提示,scanf,(“,%d,%d,”,&,a,&,b,);,/,输入变量,c=max,(,a,b,);,/,/,调用,求最大值的,函数,printf,(“,max=%d,n,”,c,);,int max,(,x,y,),int x,y,;,int z,;,if,(,x,y,),z=x,;,else z=y,;,return,(,z,);,【,例,1.4,】,求两个数中的较大值,程序由两个函数组成:,main,函数和,max,函数,。,运行程序,屏幕显示提示信息;,键盘输入a、b的值;,屏幕显示c的值。,input two numbers,:,123,456,max,=456,一个C程序由一个或多个函数组成,其中必须有一个主函数,main,(),。,程序,执行时总是从主函数开始,,main(),可以置于程序的任何位置。,程序中需有预处理命令(如,#include,),预处理命令通常放在程序的最前面。,分号,是C语句结束的标志,每个语句和数据定义后必须有一个分号。预处理命令、函数头和花括号“,”之后不能加分号。,1.4.2,C语言程序基本结构,C程序书写灵活,,一行可以写几个语句,一个语句可以写在,多个程序行上。,#include,void main,(),int a,b,sum,;,a=123,;,b=456,;,sum=a+b,;,printf,(,“sum=%d,n”,sum,);,C语言本身没有输入输出语句,输入输出的操作是由库函数 scanf()和printf()等函数完成的。,1.4.2,C语言程序基本结构,C,程序严格区分大小写。,一般变量、语句等用小写字母书写;符号常量等用大写字母书写。,标识符、保留字之间必须至少加一个空格以示分隔。,函数,C,语言的函数有,两种,:,标准库函数和用户定义的函数。,用户自定义函数,可有可无,数目不限。,如例,1.4,中的,int max,(,int x,int y,),C,语言提供的库函数,如输出函数,printf,(),和输,入函数,scanf,(),。,函数定义,:,函数头,+,函数体,函数头,:,说明函数的类型,、,名字,、,参数及参数的类型。,int max,(,int x,int y,),#include,void main,(),int a,b,sum,;,a=123,;,b=456,;,sum=a+b,;,printf,(,“sum=%d,n”,sum,);,函数体,函数头,函数体,:,由,“,”,括起,,包括变量声明和执行部分。,函数定义,1.4.3 C语言的字符集、关键字和标识符,字符集,:,C语言允许使用字符的集合,字符集,的组成:,26,个小写字母,abcdefghi.z,26,个大写字母,ABCDEFG.Z,10,个数字,0,9,其他符号,+-,*,/=,.,_,:,;,?”|&,!,%#,(),空格,(SPACE),制表符,(Tab),C语言的关键字,关键字,:,C语言中预定的具有特定含义的词,也称,保留字,。共有32个。,分四类,:,类型说明,:,int,long,,,float,,。,语句定义,:,if,else,while,for,。,存储类,:,auto,,,static,,,。,长度运算符,:,sizeof,标识符,标识符,:,用来标识变量,、,符号常量,、,数组,、,函数的名字,。,组成,:,只能由英文字母、数字和下划线组成。,第一个字符不能是数字,只能是字母或下划线。,VC6,.,0中有效长度为,1255,个字符。,例如,:,x,,,m1,,,average,,,k123,,,_1,,,5AN,WA-11,a lot,$11,注意:,标识符严格,区分大小写,例如,:,ABC,,,abc,是不同的标识符,不能和C语言的关键字,、,用户定义的函数名以及系统库函数同名。,C的“,.,h”头文件中经常使用,以下划线开头的内部变量名,因此用户最好避免使用这类标,识,符。,取名应尽可能见名知意。如,:,alfa,aver,pi,bata,等。,例,:,以下各标识符组中,合法的用户标识符分别为,:,(1),A),PAd,B),scanf,C),void,D),4a,P#D a10 max temp,(2),A),b-b,B),CCP,C),hiy,D),_isw,abc,float,INT,(3),A),_0123,B),del_word,C),list,D),keep%,ssiped,signed,*,jer wind,分隔符,分隔符,分隔符主要有逗号和空格两种。,逗号用于分隔变量或参数,空格用于分隔单词,(在关键字和标识符之间必须用空格分隔),。,例如,:,int,a,b,c,;,max,(,x,y,z,),1.5 应用程序的开发过程,应用程序开发阶段:,分析解决问题的性质、特点、目标以及数据来源及其特征等。,需求分析,确定解决问题的方法和步骤,建立数学模型和确定相应的求解方法。,确定算法,确定应用程序结构,设计出每个模块的数据结构和算法,画出流程图等。,程序设计,根据确定的算法,用计算机语言(如 C语言)编写源程序。,编写程序,在一定的开发环境下调试和运行程序,得出程序运行结果。,调试程序,1.5 应用程序的开发过程,编辑,编译,连接,运行,编辑器,file,.,c,file,.,cpp,编译器,file,.,obj,连接器,file,.,exe,Libraries,CPU,装载程序,RAM,建立、修改、保存源文件,生成目标文件,生成可执行文件,运行可执行文件,1.5 应用程序的开发过程,在,Visual C+6.0,环境下,开发和运行程序的步骤如下,:,1,.,启动,VC,“开始”“程序”“,Microsoft,Visual C+6.0,”,即可启动,VC,6.0,。,2,.,编辑、建立源文件。,3,.,编译、连接,和,运行源程序。,习题,1.,一个,C语言程序是由组成,a),主程序,b),子程序,c),函数,d),过程,2.,一个完整的C语言的程序,a),至少包含一个主,函数,b),至少包含一个主,函数,与一个子,函数,c),必须由一个主,函数,与一个以上的子,函数,组成,d),必须由一个主,函数,与一个子,函数,组成,习题,3.,C语言程序的执行总是从,。,a),main,函数的入口开始,b),编译预处理命令开始,c),源程序的第一个函数开始,d),源程序的第一行语句开始,习题,4,.,在C语言的源程序中,主函数的位置。,a),必须在源程序的最后,b),任意,c),必须在源程序的开头,5,.,一个函数一般由两部分组成,它们分别是和,。,6,.,函数体使用_符号开始,使用_符号结束。,函数头,函数体,习题,7,.,C程序的每条语句的结束标志是_符号。,8,.,在C程序中,注释以_符号开始,使用_符号 结束。,9,.,算法是 _,_,。,10,.,表示算法的常用方法有 _,、,_,、,_等,。,11,.,结构化程序的三种基本结构是,_,、,_,、,_,。,;,/,*,*,/,解决某一问题所采取的方法和步骤,自然语言,流程图,伪代码,顺序结构,选择结构,循环结构,12,.判断下述说法是否正确,。,如不正确,说明理由,。,a),printf,函数总是从新行的起始位置开始打印。,b),计算机会把,/*,和,*/,之间的注释文本打印到屏幕上。,c),所有的变量在使用前都必须予以声明。,d),C,语言认为变量,number,和,NuMbEr,是相同的。,e),声明语句可放在函数体中的任何位置。,f),打印三行输出的,C,语言程序必须用三条,printf,语句。,g),printf,函数的格式控制串中使用转义字符,n 会把光标定位到屏幕上下一行的开始位置。,2,.,1,数据与数据类型,2,.,2,常量、变量和标准函数,2,.,3,基本,运算符及其表达式,第二章,数据类型,、,运算符和表达式,下一章,上一章,目 录,习题,整型:,包括有、无符号的基本整型、短整型、长整型,实型,:,包括,单精度实型、双精度实型,float,double,字符型,:,用于表示和存储,ASCII,字符。,char,2.1 数据类型,基本类型,构造类型,指针类型,空类型,自定义,是C语言数据类型的基本型,其值不可再分解为其他类型,。,一种特殊的数据类型,其值为某个量的内存地址。,一种无返回值函数的数据类型。,void,用新的类型名替代已有类型名使用。,用,typedef,定义,一种由单种或多种数据类型构造而成的数据类型,。,数组,结构,共用体,枚举类型,C语言的基本数据类型,2.2 常量、变量和标准函数,2,.,2,.,1,常量,2,.,2,.,2,变量,2,.,2,.,3,标准函数,下一节,第二章,目 录,习题,2.2.1 常量,常量,在程序执行期间其值保持不变的量,C,语言有以下几种类型的常量,:,整型常量,实型,(,浮点型,),常量,字符常量,字符串常量,有三种形式,:,十进制整数,:,八进制整数,:,由数字,0,开头,十六进制整数,:,由前缀,0 x,或,0X,开头,1,.,整型常量,如,:,0,14 -,0,11,0,177777,如,:,0 x,11,0X,AFBDE,0X,00FFH,如,:,11,-13,0,65535,1,000,21,/,3,10,4,54,.,10,*,3,01 9 9,整,数又可分为,:,长整型整数,:,用后缀,L,/,l,表示。,012,L,65536,L,0XC,L,无符号整数,:,用后缀,U,/,u,表示。,017,u,,,0 xfdb,U,无符号长整数,:,用后缀,UL,/,ul,表示。,15,uL,实型常量又称实数,指带有小数部分的数,。,C语言中的实数是以十进制表示的,有两种表示形式,:,十进制小数形式,:,由数字、数符和,小数点,组成。,例,:,0,.,123,.,123,123,.,,0,.,0,-2,.,5,,指数形式,:,又称科学记数法,。用,E,(,或e,),表示以,10,为底的,指数,。,如:,100000000 110,8,1E+8,0,.,0000125 1,.,2510,-5,1,.,25E-05,0,.,9110,-3,0,.,91,E-03,尾数部分,指数部分,字母E/e前必须有,数字,而E后面的阶码必须为,整数,。,2.,实型常量,浮点数,例,:,下列,不合法,的指数形式,:,单独的小数点和单独的指数部分,如,:,.,E-5 E10,阶码,只能是整数,不能带小数点。,如,:,1234E1,.,5,2,.,E,6,.,5e,(2*3)E-3,5*E4,10,12,不能写成,E12,,必须写成:,1E12,1.0E12,3,.,字符常量,字符常量,:,是用单引号括起来的一个字符,如,:,a,,,A,9,,,+,,,?,合法,“,a,”,,99999,,,非法,在内存中,字符,常量以,ASCI I码存储,一个字符占一个字节,。,由于字符常量是按整数存储的,可以像整数一样在程序中参与相关的运算。如,:,a,3 2,;,/,执行结果9 7-32=65,9,9,;,/,执行结果5 7-9=48,以“,”开头的字符序列,有特定的含义。,如,:,表示输出一个反斜杠符,”,表示输出一个双引号,ddd,(ddd表示八进制的ASCII码),x,hh,(hh表示十六进制的ASCII码),例,:,n,(,回车换行,),12,xa,A,101,x41,注,:,0,或,000,是代表ASCII码为0的字符,即,空字符,(NULL),表示整数0。,转义字符,【,例,2.1,】,转义字符的应用,#,include,void,main,(),printf,(“,a,tb,nc,bd,100,x40,n,”);,a,b,d,输出到显示屏,字符串常量:用一对双引号括起的字符序列。例,:,“,CHINA,”,“,a,”,“,$,12,.,5,”,“”,“,w,x,53,np,103,q,”,字符串长度,:,字符串中所有字符的个数,系统自动在每个字符串的末尾加上一个空字符NULL,即,0,作为字符串的结束。,0,是一个ASCII码为0的字符。,例:“,CHINA”,在内存中所占的字节为:,4,.,字符串常量,字符常量由,单,引号括起来,字符串常量由,双,引号括起来。,字符串常量和字符常量的主要区别:,字符常量只能是单个字符,字符串常量可以含有多个字符。,字符常量占一个字节,字符串常量占的字节数等于字符个数加1。,比较:,A,与,”,A,”,的区别,若输出的字符串中含双引号(,”,),则要使用转义字符,(,”),。,例,:,printf,(,“,he said,“,I am a student,.,”,n”,),;,输出:,he said,“,I am a student,.,”,A,A,占一个字节,“,A,”,A,占两个字节,0,5.,符号常量,符号常量,:,用标识符表示的常量,格式,:,#,define,标,识,符,常量,功能,:,用该,标识符,代表后面的常量值,例,:,#define,PI,3,.,1415926,#define,STAR,*,预处理命令#define也称为宏定义,一个#define命令只能定义一个,符号常量,用一行书写,不用分号结尾。,#include,#define,PI,3,.,1415926,/用预处理命令定义符号常量,void main,(),float r,area,l,;,/定义变量类型为实型,scanf,(“,%f,”,&r,);,/输入r的值,area,=,PI,*,r,*,r,;,l,=,2,*,PI,*,r,;,printf,(“,area,=,%f,nl,=,%f,n,”,area,l,);,【,例,2.2,】,求半径为,r,的圆面积和圆周长,说明,:,符号常量名习惯用大写字母表示,该命令通常放在文件头,在程序中,符号常量不允许重新赋值。,例,:,#,define,PI,3,.,1415926,PI,=,5,.,6,;,或,scanf,(“,%f,”,&,PI,);,5.,符号常量,2.2.2 变量,变量,概述,整型变量,实型变量,字符型变量,变量的初始化,int,x,=,23,;,23,FF02,2Bytes,RAM,变量概述,变量:在程序执行期间其值可以改变的量,变量在使用之前必须被声明,每一个变量有名字,类型,长度和值。,对变量赋值过程是“覆盖”过程,用新值去替换旧值,。,从内存中读出变量的值,该变量保持不变。,90,x=90,;,printf,(“,%d,”,x,);,定义变量的形式,:,类型说明符 变量名表,;,例:,int a,b;,/*定义两个整型变量a和b*/,char c;,/*定义字符型变量c*/,float f1,f2,;,/定义单精度实型变量,f1,和,f2,变量概述,变量类型,(type),变量名,(name),是一个标识符,1,.,整型变量,用来存放整型数据的变量,整型变量的分类表,类型名称,类型说明符,字节数,数值范围,基本整型,int,2,-3276832767,短整型,short,int,2,-3276832767,长整型,long,int,4,-2147483648 2147483647,无符号基本整型,unsigned,int,2,065535,无符号短整型,unsigned short,int,2,065535,无符号长整型,unsigned long,int,4,04294967295,与操作系统、编译系统、机器字长有关。,有符号的整数,最高位是符号位,正整数在内存中以二进制,原码,形式存放。,负整数在内存中以二进制,补码,的形式存放。,有符号正整数,10,0 0 0 0 0 0 0 0,0 0 0 0 1 0 1 0,符号位,00000000,00001010,RAM,有符号负整数,-10,1 1 1 1 1 1 1 1,1 1 1 1 0 1 1 0,符号位,11111111,11110110,RAM,-10的原码,1 0 0 0 0 0 0 0,0 0 0 0 1 0 1 0,1 1 1 1 1 1 1 1,1 1 1 1 0 1 0 1,1 1 1 1 1 1 1 1,1 1 1 1 0 1 1 0,按位取反,加1后得到-10的补码,无符号整数,无符号整数的所有二进制位全部用来存放数值,不能存放负数。,无符号整数,65535,u,1 1 1 1 1 1 1 1,1 1 1 1 1 1 1 1,11111111,11111111,RAM,例,:,求50的三次方,#,include,void main,(),short int,x,;,x,=,50,*,50,*,50,;,printf,(“,%,d,n,”,x,);,程序运行结果为,:,-6072,(错),将以上程序改为:,#,include,void main,(),int x,;,x,=,50,*,50,*,50,;,printf,(“,%,d,n,”,x,);,运行结果:,125000,因此,在定义整型变量时,要注意数据类型允许的数值范围。,用来存放实型数据的变量,分单精度型、双精度型和长双精度型三类,2,.,实型变量,#include,void main,(),float f,;,/f,为单精度实型变量,double d,;,/d,为双精度实型变量,f=33333,.,33333,;,d=33333333333333,.,333333,;,printf,(,“,f=%f,nd=%f,n,”,f,d,),;,输出结果:,f=33333,.,332031,d=33333333333333,.,332000,【,例,2.3,】,实型变量的使用,无,效,数,字,f,;,3,.,字符变量,用来存放字符常量的变量,例,:,char,c1,c2,c3,;,c1,=,A,;,c2,=,n,;,c3,=,97,;,每个字符变量分配一个字节用于存放一个字符。,(存放的是字符的,ASCII,码值),字符数据与整型数据可,相互赋值,,,直接运算,。,可以把字符变量按整型量输出,也允许把整型量按字符量输出。,A的ASCII码,(,值,),为65,n的ASCII码,(,值,),为10,0 1 0 0 0 0 0 1,0 0 0 01 0 1 0,c1,c2,#include,void main,(),int,a,=,b,;,/,给一个整型变量赋一个字符值,char,c1,=,97,;,/,给一个字符变量赋一个整数值,c1,=,c1-32,;,/,将小写字母转换为大写字母,printf,(,“,%,d,%,d,n,”,a,c1,),;,printf,(,“,%c%,c,n,”,a,c1,);,输出结果:,98 65,b A,【,例,2.4,】,字符型变量的使用,注意:,只能将一个字符常数赋给一个字符变量,不能把一个字符串常量赋予字符变量。,例,:,char,c,=,“,abc,”;,在C语言中没有字符串变量,(但可以用一个字符数组来存放一个字符串常量),4,.,变量的初始化,在说明变量的同时给变量赋初值,格式,:,类型说明符 变量=常数,;,例,:,int,a,=,5,;,/,定义并初始化,char,c1,=,a,c2,=,B,;,double area,r,=,23,.,e-2,;,i,nt,x,=,10,y,=,10,z,=,10,;,/,不能写成int x=y=z=,10,;,int a,;,a=5,;,/,赋初值,2.2.3 标准函数,C,编译系统提供的库函数,包括,:,输入输出函数、数学函数、字符和字符串函数等。,数学函数,x为弧度,double x,double sin,(,x,),cos,(,x,),sin,(,x,),cos,(,x,),exp,(,x,),log,(,x,),log10,(,x,),fabs,(,x,),pow,(,x,y,),sqrt,(,x,),area=,s(s-a)(s-b)(s-c),s,=(a+b+c)/2,#include,#include,【,例,2.5,】,求三角形面积,/预编译命令,将系统提供的数学函数,/作为头文件包含到用户源文件中,void main,(),double a,b,c,s,area,;,scanf,(“,%,l,f,%,l,f,%,l,f,”,&,a,&,b,&,c,);,s=,(,a+b+c,),/,2,;,area=sqrt,(,s,*,(,s-a,),*,(,s-b,),*,(,s-c,);,printf,(“,the area is%6,.,2f,n,”,area,);,运行,本节,介绍,算术运算符,赋值运算符,逗号运算符,逻辑运算符,条件运算符,求字节运算符,位逻辑运算符,位移动运算符,位自反运算符,强制类型转换运算符,指针运算符,下标运算符,分量运算符,基本运算符,位运算符,特殊运算符,C运算符,2.3 运算符和表达式,2,.,3,.,1,算术运算符与算术表达式,2,.,3,.,2,不同数据类型的转换与运算,2,.,3,.,3,关系运算符与关系表达式,2,.,3,.,4,逻辑运算符与逻辑表达式,2,.,3,.,5,条件运算符与条件表达式,2,.,3,.,6,赋值运算符与赋值表达式,2,.,3,.,7,逗号运算符与逗号表达式,2.3 基本运算符及其表达式,1,.基本,算术运算符,算术运算符用于各类数值运算。,包括基本算术运算符、自增运算符、自减运算符。下表为基本算术运算符。,1,在C语言中,规定了运算符的,优先级,和,结合性,。,优先级,:,语言中,运算符的优先级共分为15级。1级最高,15级最低。表达式求值时,先做优先级高的操作。,如,:,d=a+b,*,c,;,当运算符的优先级别相同时,运算次序由,结合性,决定。,结合性,:,左,结合性(先左后右)例,:,d=3,*,5,/,4,;,右,结合性(先右后左)例,:,d=a=3,;,运算符,整数相除截去余数,此运算为整除。,5,/,2=2(2,.,5)1,/,3+1,/,3+1,/,3=0,对于浮点数则为通常意义的除法,5,.,0,/,2,.,0=2,.,5 1,.,/,3+1,.,/,3+1,.,/,3=1,%,模运算符,用于计算两个数相除后,得到的余数。,如,:,a,b,求,a,除以,b,以,后得到的余数。,运算对象只能是整型量,其结果也是整型量。,如,:,5%2=1 3%3=0 3%5=3,A,%2=1 3,.,0+,10,.,0,%5,所得结果的符号与运算符,左,侧操作数的符号相同,-5%2=-1 5%-2=1,2.,自增,、,自减运算符,含义,运算符,优先级,结合性,功能,自增,+,2,右结合,使变量的值增,1,自减,-,2,右结合,使变量的值减,1,使用形式,+i,或,-i,变量i先自增或自减1,再引用i,。,i+,或,i-,先使用变量i,再自增或自减1,。,例,:,x=10,;,y=,+,x,;,此时,y=11,若,:,x=10,;,y=,x,+,;,则 y=10,在这两种情况下,x都被置为11。,K=3,;,j=5,;,i=3,;,m=,(,+k,),*,j,;,n=,(,i+,),*,j,;,例:,m=k=,20,4,n=i=,15,4,【例2,.,7】自增、自减运算符的使用。,#include,void main,(),int i=6,a,b,;,printf,(“,%d,n,”,+i,);,printf,(“,%d,n,”,i+,);,a=-i,;,printf,(“,%d,n,”,a,);,b=i-,;,printf,(“,%d,n,”,b,);,printf,(“,%d,n,”,-i+,);,printf,(“,i=%d,n,”,i,);,i=?,7,7,7,7,-6,7,注意:,自增、自减运算只能用于,变量,不能用于常量和表达式。,例,:,i+,为合法的运算,+6,+,(,a+b,),为非法的运算,自增、自减运算符是两个,+,或两个,-,的一个整体,中间不能有空格。如果有多于两个+或两个-连写的情况,则编译首先识别,前两个,+或-为增量或减量运算符。,表达式,x+y 等价于,(,x+,),+y,自增、自减运算符的,运算顺序,是,右,结合,因此对-,i,+应理解为,:,-,(,i+,),,而,(,-i,),+,是非法的。,例,:,i=3,;,printf,(,“,%d,”,-i,+),;,输出,:,-3,【,例,2.8,】,自增、自减运算符的使用,#,include,void main,(),int i,j,k,;,i=1,;,j=1,;,k,=i+j,;,printf,(“,i=,%d,j=,%d,k=,%d,n,”,i,j,k,);,程序运行结果:,i=2,j=1,k=2,k=,(,i+,),+j,;,由算术运算符和括号将运算对象(如常量、变量、函数等)连接起来的一个有值的式子。,例,:,A,*,2-sqrt,(,4,.,),/,-d,(,d=2,),表达式求值的优先次序,:,(),函数,+,、,-,*,、,/,、,%+,、,-,高 低,3.,算术表达式,“,/,”号,如:,(a+b),/,(c+d),“*”不能省略,如,:,2,(,a,+,b,),2,*,(,a,+,b,),括号只能使用圆括号,且成对出现,,,不能使用,和,。,如:,a,x,+,b,(,y,+,c,),a,*(,x,+,b,*(,y,+,c,),书写问题:,LN(-X),例,:,将下列数学式子写成C算术表达式,log,(,sqrt,(,a,+,x,*,x,),-,x,),a,e,-st,abs,(,a,),*,exp,(,-,s,*,t,),sqrt,(,f,abs,(,sin,(,x,*,3,.,14,/,180,),x,y,pow,(,x,y,),A,3,*,xn/,(,2,*,x,-1),B,3,*,x,*,n/,(,2,*,x,-1),C,3,*,pow,(,x,n,),*,(1,/,(,2,*,x,-1),D,3,*,pow,(,n,x,),/,(,2,*,x,-1),例:与数学式子,3,乘以,x,的,n,次方除以(,2x,-1)对应的C语言表达式是_。,2.3.2 不同数据类型间的转换与运算,在C程序中,当不同类型的量进行运算时,要转换成同一种类型然后再进行运算。,例,:,10,+,a,+,1,.,5,-,8765,.,1234,*,b,转换方式,:,自动转换,:,数据类型自动由低级向高级转换。,强制转换,:,将表达式的运算结果强制转换成指定的数据类型。,自动类型转换,这种类型转换由编译系统自动完成,转换规则,:,float,double,long,unsigned,int,char,short,低,高,说明,:,1,.,横向的箭头表示必定的转换,。,2,.,纵向的箭头表示当运算对象,类型不同时
展开阅读全文