ImageVerifierCode 换一换
格式:DOCX , 页数:60 ,大小:47.15KB ,
资源ID:4127647      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4127647.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c程序设计语言复习提纲.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

c程序设计语言复习提纲.docx

1、c程序设计语言复习提纲c程序设计语言复习提纲 一. 数据的定义 (一)数据类型 1. 基本类型 基本类型指整型(int)、实型(float、double)和字符型(char)。 (1)常量 八进制整数:0123 十六进制整数:0x123 长整型常量:123l 实数的浮点表示法:123.0 实数的科学计数法:1.23e2 字符的转义序列:(换行)、5(a)、x61(a) 符号常量:#define pi 3.14 常用符号常量null(空值0)、eof(文件结束符-1) (2)变量 变量的定义:int a;变量名a为一个符号地址,编译连接时对应一个内存地址,该地址代表的内存单元能够存放一个整数。

2、变量的初始化:a=3;通过变量名a找到相应的内存地址,将数据3保存在此内存单元中。 2. 构造类型 构造类型包括数组和结构。 (1)数组 一维数组的定义:int a5; 一维数组的初始化:int a5=1,2,3,4,5; 二维数组的定义和初始化:int b23=1,2,3,4,5; 数组元素的引用:a0=1; b12=0; 一维字符数组(字符串):char c=”abc”;(4个元素,c3=post.content) 二维字符数组(字符串数组):char str320=“china”,”usa”,”russia”; (2)结构 结构类型的定义:struct rectanglefloat le

3、ngth;float width; 结构变量的定义和初始化:struct rectangle rec1=20.0,10.0; 结构变量成员的引用:rec1.length=25.0; 3. 指针 (1)指针和地址的概念 变量名 a p 指针变量 变量值(内存单元内容) 指针变量的值(地址) 内存单元地址 1000 (2)指针变量的定义和初始化 int a,*p; p=&a; (3)通过指针引用指向实体 *p=10; 4. 构造类型和指针类型的混和定义及应用 (1)指针、数组和地址间的关系 一维数组 int a5=1,2,3,4,5; int *p=a; /* p=&a0; 首地址*/ a、*(p

4、+i)、*(a+i)等价,&a、p+i、a+i等价。 二维数组 int a22=1,2,3,4,*p; 若p=&a00; /* p=a0; 第0行第0列地址*/,则 aj、*(a0+ i*2+j)、*(p+i*2+j)等价。 若p=a; /*数组首地址,第0行地址*/,则aj、*(a+j)、*(*(a+i)+j)、*(*(p+i)+j) 等价。 (2)指针数组 int *p4; /*由4个指向整型变量的指针组成的指针数组*/ int (*p)4; /*指向由4个元素组成的一维数组的指针变量*/ (3)结构数组 struct rectangle r3; (4)结构指针 struct rectan

5、gle *p; p=r; r0.length、(*p).length、p-length等价。 (5)结构中含指针或数组 struct student char name10; /* char *name */; (6)嵌套结构 struct student int num; float score; struct student *next; (7)指向指针的指针(二级) char *str=“china”,”usa”,”russia”; char *s=str; (8)单向链表 建立单向链表 建立头指针建立第一个节点头指针指向第一个节点建立第二个节点第一个节点的指针域指向第二个节点最后一个节

6、点指向null 遍历单向链表 p指向头指针p=p-next,p指向第一个节点p=p-next,p指向第二个节点p=p-next,p =null遍历结束。 在单向链表中插入一个节点 通过遍历确定插入位置(如在p之后)记录p节点的下一节点q(q=p-next)p指向新节点(p-next=new)新节点指向q(new-next=q)。 在单向链表中删除一个节点 通过遍历确定删除位置(如在p之后)p-next=p-next-next 5. 空类型 为使程序减少出错,保证正确调用,凡不要求带回函数值的函数,一般应定义为空类型(void)。 (二)变量的存储类别、作用域和生存期 (1)存储类别 存储类别是

7、指数据在内存中的存储方法,具体有以下四种: auto自动型:此类变量存放于内存的动态存储区。 static静态型:此类变量存放于内存的静态存储区。 extern外部参照型:此类变量存放于内存的静态存储区。 register寄存器型:此类变量存放于cpu中的寄存器。 (2) 作用域(空间角度) 局局变量:在函数内部定义,只在本函数范围有效。 全部变量:在函数外部定义,其有效范围从定义位置开始到源文件结束。 (3)生存期(时间角度) 静态存储:在程序运行期间分配固定的存储空间。 动态存储:在程序运行期间根据需要动态分配存储空间。 自动局部变量:在函数内部定义,离开函数,值消失。 静态局部变量:在函

8、数内部定义,离开函数,值仍保留,下次调用该函数可继续使用。 静态全局变量:只限于被本文件中的函数引用。 外部变量(extern):允许其它文件引用。 二. 运算及流程控制 1. 基本运算 (1)运算符的功能 c运算符范围很广,常用的有以下几类: 算术运算符(+ - * / %):运算结果为数值。 关系运算符( = 单目运算符算术运算符(先乘除求余,后加减)逻辑运算符(不包括!)条件运算符赋值运算符逗号运算符 结合性:规定了运算的结合方向,除单目运算符、条件运算符和逗号运算符为自右向左外,其余均为自左向右 目数:运算符所要求的运算对象的个数,条件运算符是唯一的三目运算符。 (3)隐式类型转换和强

9、制类型转换 隐式类型转换:系统会自动把不同类型的数据先先转换成同一类型,再进行运算,如10+a10+97107,3+6.53.0+6.59.5,又如float x; x=3+6.5x值为9。 强制类型转换:(类型名)表达式,如(int)6.5 % 36 % 30。 2. 表达式 (1)组成规则:按c语法规则,用运算符将运算对象(常量、变量、函数)连接起来。 (2)计算过程:先进行优先级高的运算,同一优先级的运算符的运算次序由结合性决定。 3语句 (1) 表达式语句、空语句、复合语句 表达式语句:在表达式最后加分号构成,函数调用语句就属于表达式语句。 空语句:只有一个分号的语句,什么也不做,有时

10、做循环体。 复合语句:用括起来的一些语句。 (2) 简单控制语句 break:提前结束整个循环或switch语句,接着执行循环或switch语句下面的语句。 continue:提前结束本次循环,接着进行下一次是否执行循环的判断。 return (表达式):将表达式的值作为函数值返回。若表达式值的类型与函数类型不一致,自动转换成函数类型。 (3) 选择控制语句 if:有单分支、双分支和多分支三种形式,注意同一程序的等价转换。 switch:根据表达式的具体值进行多分支选择。 (4) 重复控制语句 for:既可处理循环次数已知的循环,也可处理循环次数未知而只给出循环条件的循环。 while:当型循

11、环,先判断循环条件,再执行循环体。 do-while:直到型循环,先执行循环体,再判断循环条件。 三. 程序结构和函数 1.程序结构 (1)main函数与其它函数之间的关系 c程序由函数组成,一个c源程序至少包含一个main函数和若干个其它函数,每个函数实现一定的功能,从而实现程序的模块化设计。程序总是从main函数开始执行,在main函数中可以调用其它函数,其它函数间也可以相互调用。 (2)被调用函数 标准库函数:系统将一些常用的功能模块编写成函数,放在函数库中供用户直接选用。使用时应用#include命令将相应的头文件包含到本文件中。 自定义函数:用户为解决自己的专门需要而定义的函数。在主

12、调函数中对被调函数进行声明,形式“函数类型 函数名(参数类型列表)”。 2.函数的定义 (1) 函数定义的ansi c格式 类型名 函数名(形式参数列表)函数体 (2) 函数的参数及参数传递 形式参数:调用函数前不占内存单元,调用时才分配内存单元,调用结束后释放。 实际参数:可以是常量、变量或表达式。 指针参数:为使在被调用函数中改变的变量的值能被主调函数得到,应该用指针变量作为函数参数。 参数传递:是主调函数与被调用函数之间传递数据的主要途径,这种传递是“值传递”,即只能由实参传给形参,不能由形参传回给实参,因为实参与形参位于内存中不同的单元。注意实参与形参的类型应相同或赋值兼容。 (3)

13、函数的返回值 通过函数调用使主调函数获得一个确定的值。除了可能返回一个整型值、实型值、字符值外,也可以把指针(地址)作为函数的返回值,此时函数的定义形式为: 类型名 *函数名(参数表)函数体 3. 函数的调用 (1)函数调用的一般格式 通过函数名调用函数:形式“函数名(实参列表)”,位置出现在语句、表达式或实参。 通过函数指针调用函数:定义指向函数的指针变量“类型名 (*变量名)();”,给函数指针变量赋值“函数指针变量名=函数名;”,调用“(*函数指针变量名)(实参列表)”。 (2)函数的嵌套调用和递归调用 嵌套调用:一个函数体内不能包含另一函数的定义,即不允许嵌套定义,但允许调用另一个函数

14、,即嵌套调用。 递归调用:在调用一个函数的过程中直接或间接地调用该函数本身。 (3)熟练掌握标准库函数的调用 常用数学函数:cos、sqrt、pow、exp、fabs、log、log10。 常用字符函数:isalnum、isalpha、isdigit、islower、toupper。 常用字符串函数:strcpy、strcmp、strcat、strlen。 四.数据的输入和输出 1.文件 所谓文件是指存放在外存上的数据集合,一个c文件是一个字节流(ascii文件、文本文件)或二进制流(二进制文件),而不是由记录组成的。在c语言中对文件的存取是以字符(字节)为单位。 2.标准文件的输入和输出 键

15、盘和显示器被看作标准文件,通过键盘输入即从文件中读取数据,在显示器上显示即向文件中写数据。c语言不提供专门的输入输出语句,而是通过函数来实现输入输出操作,常用输入输出函数有:格式化输入输出函数(scanf、printf)、字符输入输出函数(getchar、putchar)、字符串输入输出函数(gets、puts)。 3.缓冲文件系统(文本文件) (1) 文件的打开和关闭 file *fp; fp=fopen(文件名,使用方式);fclose(fp); (2) 文件的基本读写操作 常用函数有:fscanf(从指定文件按格式读出数据)、fprintf(按格式向指定文件写入数据)、fgetc(从指定

16、文件读出一个字符)、fputc(向指定文件写入一个字符)、fgets(从指定文件读出一个字符串)、fputs(向指定文件写入一个字符串)。 (3) 文件的状态检测 feof(文件指针):若文件指针指向文件末尾,函数值为真(非0)。 五.编译预处理 1.编译预处理的基本概念 预处理命令并不属于c语言本身的组成部分,这些命令在编译前处理,主要用于改进程序设计环境,提高编程效率。主要有宏定义、文件包含和条件编译三种,这些命令都以#开头。 2.宏定义 用一个指定标识符代表一个字符串,形式为:#define 标识符 字符串,常用于定义符号常量。 3.文件包含 一个源文件将另一个源文件的全部内容包含进来,

17、形式为:#include ,常用于包含头文件。 六.面向对象程序设计初步 1. 类、对象和面向对象程序设计的基本概念 对象:客观世界中任何一个事务都可以看作一个对象,它们之间通过一定的渠道相互联系。一个对象应该包含两个要素:数据和操作。 类:每一个实体都是一个对象,具有相同结构和特性的对象属于同一类型,在c+中称为“类”,它代表某一批对象的共性和特征。类是对象的抽象,对象是类的具体实例。类是用来定义对象的一种抽象数据类型。 面向对象程序设计:程序设计者的任务包括设计对象(把数据和操作代码封装在一个对象中)和协调各种对象共同完成所需任务。 2.掌握类的定义 class stud int num;

18、 /定义数据成员 char name10; char sex; void display() /定义成员函数 cout”num:”numendl; cout”name:”nameendl; cout”sex:”sexendl; stud stud1,stud2; /定义对象 第二部分 c程序设计的常用算法 算法(algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等。通常使用自然语言、结构化流程图、伪代码等来描述算法。 一、计数

19、、求和、求阶乘等简单算法 此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。 例:用随机函数产生100个0,99范围内的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来。 本题使用数组来处理,用数组a100存放产生的确100个随机整数,数组x10来存放个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数。即个位是1的个数存放在x1中,个位是2的个数存放在x2中,个位是0的个数存放在x10。 void main() int a101,x11,i,p; for(i=0;i=11

20、;i+) x=0; for(i=1;i=100;i+) a=rand() % 100; printf(%4d,a); if(i%10=0)printf(); for(i=1;i=100;i+) p=a%10; if(p=0) p=10; xp=xp+1; for(i=1;in; (2) m除以n得余数r; (3) 若r=0,则n为求得的最大公约数,算法结束;否则执行(4); (4) mn,nr,再重复执行(2)。 例如: 求 m=14 ,n=6 的最大公约数. m n r 14 6 2 6 2 0 void main() int nm,r,n,m,t; printf(please input

21、two numbers:); scanf(%d,%d,&m,&n); nm=n*m; if (mn) t=n; n=m; m=t; r=m%n; while (r!=0) m=n; n=r; r=m%n; printf(最大公约数:%d,n); printf(最小公倍数:%d,nm/n); 三、判断素数 只能被1或本身整除的数称为素数 基本思想:把m作为被除数,将2int( )作为除数,如果都除不尽,m就是素数,否则就不是。(可用以下程序段实现) void main() int m,i,k; printf(please input a number:); scanf(%d,&m); k=sqr

22、t(m); for(i=2;i=k) printf(该数是素数); else printf(该数不是素数); 将其写成一函数,若为素数返回1,不是则返回0 int prime( m%) int i,k; k=sqrt(m); for(i=2;ik;i+) if(m%i=0) return 0; return 1; 四、验证哥德巴赫猜想 (任意一个大于等于6的偶数都可以分解为两个素数之和) 基本思想:n为大于等于6的任一偶数,可分解为n1和n2两个数,分别检查n1和n2是否为素数,如都是,则为一组解。如n1不是素数,就不必再检查n2是否素数。先从n1=3开始,检验n1和n2(n2=n-n1)是否

23、素数。然后使n1+2 再检验n1、n2是否素数, 直到n1=n/2为止。 利用上面的prime函数,验证哥德巴赫猜想的程序代码如下: #include math.h int prime(int m) int i,k; k=sqrt(m); for(i=2;i=k) return 1; else return 0; main() int x,i; printf(please input a even number(=6):); scanf(%d,&x); if (x6|x%2!=0) printf(data error!); else for(i=2;i=x/2;i+) if (prime(i)

24、&prime(x-i) printf(%d+%d,i,x-i); printf(验证成功!); break; 五、排序问题 1选择法排序(升序) 基本思想: 1)对有n个数的序列(存放在数组a(n)中),从中选出最小的数,与第1个数交换位置; 2)除第1 个数外,其余n-1个数中选最小的数,与第2个数交换位置; 3)依次类推,选择了n-1次后,这个数列已按升序排列。 程序代码如下: void main() int i,j,imin,s,a10; printf( input 10 numbers:); for(i=0;i10;i+) scanf(%d,&a); for(i=0;i9;i+) im

25、in=i; for(j=i+1;jaj) imin=j; if(i!=imin) s=a; a=aimin; aimin=s; printf(%d,a); 2冒泡法排序(升序) 基本思想:(将相邻两个数比较,小的调到前头) 1)有n个数(存放在数组a(n)中),第一趟将每相邻两个数比较,小的调到前头,经n-1次两两相邻比较后,最大的数已“沉底”,放在最后一个位置,小数上升“浮起”; 2)第二趟对余下的n-1个数(最大的数已“沉底”)按上法比较,经n-2次两两相邻比较后得次大的数; 3)依次类推,n个数共进行n-1趟比较,在第j趟中要进行n-j次两两比较。 程序段如下 void main() i

26、nt a10; int i,j,t; printf(input 10 numbers); for(i=0;i10;i+) scanf(%d,&a); printf(); for(j=0;j=8;j+) for(i=0;iai+1) t=a;a=ai+1;ai+1=t; printf(the sorted numbers:); for(i=0;i10;i+) printf(%d,a); 3合并法排序(将两个有序数组a、b合并成另一个有序的数组c,升序) 基本思想: 1)先在a、b数组中各取第一个元素进行比较,将小的元素放入c数组; 2)取小的元素所在数组的下一个元素与另一数组中上次比较后较大的元

27、素比较,重复上述比较过程,直到某个数组被先排完; 3)将另一个数组剩余元素抄入c数组,合并排序完成。 程序段如下: void main() int a10,b10,c20,i,ia,ib,ic; printf(please input the first array:); for(i=0;i10;i+) scanf(%d,&a); for(i=0;i10;i+) scanf(%d,&b); printf(); ia=0;ib=0;ic=0; while(ia10&ib10) if(aiabib) cic=aia;ia+; else cic=bib;ib+; ic+; while(ia=9) cic=aia; ia+;ic+; while(ib=9) cic=bib; b+;ic+; for(i=0;i20;i+) printf(%d,c); 六、查找问题 1顺序查找法(在一列数中查找某数x) 基本思想:一列数放在数组a1-an中,待查找的数放在x 中,把x与a数组中的元素从头到尾一一进行比较查找。用变量p表示a数组元素下标,p初值为1,使x与ap比较,如果x不等于ap,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1