复旦课件2013期终复习_第1页
复旦课件2013期终复习_第2页
复旦课件2013期终复习_第3页
复旦课件2013期终复习_第4页
复旦课件2013期终复习_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

1、期终复习期终复习ReviewReview 程序设计基础程序设计基础 数据与运算数据与运算 程序结构程序结构 数组和指针数组和指针 函数和预处理函数和预处理 结构和链表结构和链表 文件操作文件操作Fudan UniversityFudan University第一章第一章Fudan UniversityFudan University 常量、变量常量、变量 标识符标识符: :标识符就是用户自己定义的一标识符就是用户自己定义的一个名字。个名字。第二章第二章 基本数据类型基本数据类型Fudan UniversityFudan UniversityC C数数据据类类型型基本类型基本类型构造类型构造类型

2、指针类型指针类型空类型空类型voidvoid自定义自定义typedeftypedef数值类型数值类型字符类型字符类型charchar枚举类型枚举类型enumenum整整 型型浮点型浮点型单精度型单精度型floatfloat双精度型双精度型doubledouble短整型短整型shortshort长整型长整型longlong整型整型intint数组数组结构体结构体structstruct共用体共用体unionunion由基本类型,数组、指针和结构等构造类型可以组合成各种丰富的数据类型。变量和常量 在程序运行过程中,其数值可以改变的量称为变量,其数值不可以改变的量称为常量。 变量 存储单元:在内存储

3、器(简称内存)中存放某个数据所占用的空间称为存储单元。占4个字节的变量00011010 01011000 10011101 11100010占2个字节的变量11010100 01010110占1个字节的变量10101010存放一个数据的存储单元 变量名;变量值;变量地址;变量访问;变量的使用(引用)数据运算小结数据运算小结 根据运算分量的数量分类 单目运算+(取正)、-(取负)、+(自增)、-(自减)、 sizeof()(求字节数) 、!(逻辑非)、()(圆括号) 、(位非)、 (下标)、&(取址)、*(取值)、 .(结构分量)、 -(结构指针分量)sizeof运算形式: sizeof(变量名

4、) 或者 sizeof 变量名 sizeof(类型名) 或者 sizeof 类型名 双目运算+(加)、-(减)、*(乘)、/(除)、%(求余)、(小于)、(大于)、=(大于等于)、= =(相等)、!=(不相等)、& (逻辑与)、| (逻辑或)、=(赋值)、&(按位与)、|(按位或)、(按位异或)、(右移)、=(复合赋值)、,(逗号)复合赋值运算:记为某个双目运算符,复合赋值运算 x = e注意:/(除)除法运算:整除运算需要注意的是:两个整数相除结果也是整数,而且将会把除不尽的小数部分舍去。例如:7/4 的结果为1,1/2 的结果为0。 1/2.的结果为0.5(%): 求余运算求余运算又可称为

5、求模运算。求余运算符(%)要求参与运算的两个运算分量(操作数)均为整型数据。 三目运算? :(条件)条件运算e1?e2:e3; 运算符的优先级和结合方向输入输出函数输入输出函数 %d%d、%f%f、%c%c、%s%s强制类型转换强制类型转换(type)e(type)e混合运算中数据类型转换的法则混合运算中数据类型转换的法则 隐式转换隐式转换 显式转换显式转换( (强制转换强制转换) )第三章第三章 结构化程序结构化程序Fudan UniversityFudan University3.1.1 3.1.1 结构化程序的特点结构化程序的特点 主要特点主要特点 只有一个入口 结构内的每个部分都有机会

6、被执行到 结构内不存在“死循环”循环结构循环结构whilewhile、do-whiledo-while、forfor 采用采用whilewhile的情况:的情况: 当某个条件成立时,循环执行某个计当某个条件成立时,循环执行某个计算;特点是先判后做算;特点是先判后做, , 循环体可能一次也没有执行。循环体可能一次也没有执行。 采用采用do-whiledo-while的情况:的情况: 循环执行某个计算,直至条件不成立时结束循环;特点循环执行某个计算,直至条件不成立时结束循环;特点 是是先做后判先做后判, , 循环体至少执行一次。循环体至少执行一次。 采用采用forfor的情况:的情况: 某个变量从

7、初值开始循环变化,当某个条件成立时,循环执行某个变量从初值开始循环变化,当某个条件成立时,循环执行某个计算某个计算. .特点和特点和whilewhile语句相同语句相同要区别判断条件要区别判断条件k=0,k=0k=0,k=0要特别注意死循环问题:例如:要特别注意死循环问题:例如:for(; i=0;) if(i)break;for(; i=0;) if(i)break;continue,breakcontinue,breakbreak:break:用于循环语句中,提前结束整个循环;用于循环语句中,提前结束整个循环;或者用于或者用于switchswitch语句中,结束整个语句中,结束整个swit

8、chswitch。通常和通常和ifif语句一起使用。语句一起使用。continue:continue:语句只能用于循环结构中。语句只能用于循环结构中。作用:结束本次循环,即跳过循环体中某些作用:结束本次循环,即跳过循环体中某些还没有被执行的语句,开始新的一次循环。还没有被执行的语句,开始新的一次循环。与与breakbreak比较:比较: continuecontinue仅结束本次循环,仅结束本次循环,而而breakbreak是结束整个循环语句的执行。一般和是结束整个循环语句的执行。一般和ifif配合使用。配合使用。第四章数组、字符串、指针及其应用第四章数组、字符串、指针及其应用 数组的定义数组

9、是一种由若干个同类元素组成的构造型数据。一维数组 type name C ;二维数组 type name R C ;二维数组定义了由 R 行(Row) x C 列(Column)组成的存储空间。int a4; 一维数组a,4 个元素int b34; 二维数组b,3 行4 列12 个元素 二维数组元素brc的地址:&brc = 数组首址 + n * sizeof(数组元素类型)其中,n = r * C + c数组排序指针的含义 什么是指针指针是一个变量,所以指针又称指针变量。 指针的用途指针的用途是用来存放存储单元的地址,该地址所指向的存储单元称为指针的目标(对象,object)。 指针目标的获

10、得 指向空: int *p=NULL; 指向已有的存储单元:int a=1,2,3,4,b=1,c,*p=a; *(p+),*(-p),*(p-) p=&b;c=*p;等价于c=b;也可c=*&b; 指向动态分配的存储单元 用malloc,或calloc函数取得内存分配及变量数值的获得 变量的存储空间及变量数值的获得变量的数值获得,可以通过三种途径获得:1)用输入函数输入或者用赋值语句获得数值2)通过变量初始化获得数值3)内存动态分配后赋值 内存分配函数 malloc() 或calloc() free()常用的字符类函数 求字符串长度函数strlen() 字符串拷贝函数strcpy(),str

11、ncpy() 字符串连接函数strcat(),strncat() 字符串比较函数strcmp()方案二:用指针法实现函数int strlen(char *str)int k;for(k=0; *str; str+, k+); return(k);方案一:用下标法实现函数int strlen(char *str)int k = 0;while(strk)k+;return(k); 指针数组及特点short *pc3;指针数组pc的3个元素pc0、pc1、pc2都是指针,将分别指向short类型的目标。1)每个指针的目标可以3种不同的方式之一获得指向已定义的存储单元;赋空值;通过内存分配指向动态变

12、量或动态数组。2)各个目标的长度可以不一样。3)各元素指向目标的数据类型必须相同。p1p2p0shortshort类型的目标类型的目标shortshort类型的目标类型的目标shortshort类型的目标类型的目标p1p2p0shortshort类型的目标类型的目标NULL动态数组pc0 = (short *)malloc(n1 * sizeof(short);pc1 = (short *)malloc(n2 * sizeof(short);pc2 = (short *)malloc(n3 * sizeof(short);表示指针数组p可以分别从内存中申请3个动态数组,数组长度分别为n1,n2

13、和n3。显然,n1,n2和n3可以相同,也可以不相同。如果n1,n2和n3不相等,即指针数组的3个指针元素指向数量不同的short对象。Fudan UniversityFudan University字符、字符串、字符数组字符、字符串、字符数组int , char int , char 可以通用可以通用例如例如: char a=99, b=0 ; : char a=99, b=0 ; printf(%d,%cn,b,a); printf(%d,%cn,b,a); char c=99; char c=99; char x10= AB12cd34CD,char x10= AB12cd34CD,*

14、*y=x;y=x;* *y y = = * *y y - A + a; - A + a; / /大写变成小写大写变成小写* *y y= =* *y y-a+A;-a+A; / /小写变成大写小写变成大写例如例如: : for(; for(;* *y;y+)y;y+) if( if(* *y=a&y=a&* *y=z)y=0&y=0&* *y =9)sum=sumy p-成员名成员名; ; ( (* *p).p).成员名成员名; ;/第种第种, ,圆括号是必要的。圆括号是必要的。printf(%d,%dn,printf(%d,%dn,x.xx.x,s1.next);,s1.next);p=s;p

15、=s;for(i=0;i3;i+,p+)for(i=0;ix); printf(%dt,p-x);for(i=0;i3;i+)for(i=0;i3;i+) printf(%dt,si.x); printf(%dt,si.x); 结构的存储空间#define A struct dateA short a8; A *b; ;A的存储空间=20字节sizeof(A)= sizeof(8*short) + sizeof(A *) = 16 + 4 = 20链表链表 链表链表 首结点首结点( (首表元首表元)/)/终结点终结点( (尾表元尾表元) ) 首指针首指针/ /尾指针尾指针 当前指针当前指针/

16、/前一指针前一指针( (前驱指针前驱指针) ) 哨兵哨兵( (前置空结点,前置空表元前置空结点,前置空表元) )单向链表头表尾表尾指向空数据成员指针成员11001100n021002100n131003100n211001100nn表头表头表尾表尾双链表结构示意图双链表结构示意图NULL NULL 121216162020NULLNULLheadhead 结点插入操作 结点删除操作 表头删除 表中删除 表尾删除 设置哨兵 释放被删结点第八章数据文件处理技术输入和输出输入和输出(I/O: In (I/O: In 和和Out)Out)输入输入将输入来源的数据读入到存储器中。将输入来源的数据读入到存

17、储器中。输出输出将存储器中的数据写到输出目标中去。将存储器中的数据写到输出目标中去。标准输入输出函数标准输入输出函数scanfscanf函数函数printfprintf函数函数 getchargetchar函数函数 gets gets函数函数 putcharputchar函数函数 putsputs函数函数8.1 8.1 文件概述文件概述文件指针文件指针 定义定义 FILE FILE 类型的文件指针,然后用这个文件指针与文件名类型的文件指针,然后用这个文件指针与文件名挂钩挂钩( (建立联系建立联系) )。例如:。例如:FILE FILE * *fp;fp;文件的打开和关闭文件的打开和关闭 文件被

18、打开,随后才能读写文件中的数据。文件被打开,随后才能读写文件中的数据。 fp=fopenfp=fopen( filename,filename, r/wr/w); ;读写操作函数读写操作函数(fgetcfgetc、fputc,fscanf,fprintf,fgetsfputc,fscanf,fprintf,fgets)完成读写后,需要释放文件指针,称为关闭文件。完成读写后,需要释放文件指针,称为关闭文件。关闭文件函数关闭文件函数fclose(fclose(文件指针文件指针); );常用文件操作函数fopen函数fscanf函数fgetc函数 fgets函数fclose函数fprintf函数 fputc函数fputs函数feof函数程序设计总思路【理解程序和编写程序的三步曲】1) 阅读关于程序的算法描述,并且理解算法。2) 从顶层函数开始,按照函数调用的顺序理顺算法与程序的对应关系。3) 将算法与程序技术相对应,从而解决程序的编写。数据空间问题数据空间问题1) 常量/变量/数组/指针/结构。2) 内部数据:静态(定义语句)/动态(内存分配、释放)。3) 外部数据:文件。4) 数组元素表示:下标法/指针法。5) 指针的目标:6) 数据存储量已知:(静态)数组(一维数组/二维数组)。7) 数据存储量

温馨提示

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

评论

0/150

提交评论