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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

打印一下C语言期末复习资料可编辑修改word版.docx

1、打印一下C语言期末复习资料可编辑修改word版第一部分:C 中的数据期末复习首先,从主调函数和被调函数(模块间)要处理的任务数据的角度来总结数据的知识点:C 语言中所讲授的数据有基本类型(整型、实型和字符型)和构建类型(数组、结构体、共用体、链表结点)之分。构建类型是由基本类型构建而成,因此我们有必要对基本类型的数据做以更细致的研究。一基本类型的数据程序中的数据无非是以常量和变量两种形式描述。在这里我们不妨思考两个问题:(1)为什么要用变量?(2)常量经常用在什么地方?(一)常量对于基本类型常量我们要掌握:常量分几类?每类的书写规则是什么?(1)整型常量:有十、八、十六进制三种表示形式。(3.

2、3.1、3.3.3)(2)实型常量:有小数和指数两种表示形式.(3.4.1、3.4.3)(3)字符型常量:有普通字符(可以是 ASCII 码表中的任何一个字符)、转义字符(表示控制命令的转义字符和用八进制十六进制描述的转义字符)(3.5.1)(4)字符串常量(3.5.4)(5)符号常量:实际上是不带参数的宏定义(3.2.1 、9.1.1)对于常量部分的考察无非是辨别书写形式,字符类的常量特别注意转义字符的辨认。这就要求我们熟记书写规则。例如以下题目:t-1:下面哪个是正确的整型常量表示A)019 B)0X34g C)-123 D)o56 E) 12,000t-2: 下面哪个是错误的实型常量表示

3、A).23 B)3.8E-4.5 C)45E12 D)92.45t-3: 下面哪个是正确的字符常量表示:A)”b” B) C)34 D)0x9 E)0123t-4: 下面那个是正确的字符串常量表示:A)abc B)“” C)“ ” D)“0x120” E)”abRT0”F)”A”t-5: 字符串“ab0340tv012”存储需要多少个字节?先组合转义字符,11 个字节t-6: puts(“ab0340tv012”);的结果是 ab034?strlen(“ab0340tv012”)的值是 5?(二)变量对于基本类型的变量,我们知道要使用变量必须先定义变量,定义的基本格式是: 数据类型 变量名;要

4、正确定义变量就必须清楚两点(1)什么样的变量名才是合法的?(3.2.2)(2)如何用类型符来描述所要定义的变量,这就涉及到变量所分配的字节数、存储特点、有无符号及各自表示的数值范围等。变量的三大类:(1)整型变量(3.3.2)分配字节:2 字节(int/short) 4 字节(long)(TC2.0)存储特点:存储的是数值的补码形式符号标识:signed unsigned表示数值范围:表 3-1(2)实型变量(3.4.2)分配字节:4 字节(float) 8 字节(double) 16 字节(long double) 存储特点:图 3-7表示数值范围:表 3-2(3)字符型变量(3.5.2、3

5、.5.3)分配字节:1 字节(char)存储特点: 存储字符的 ASCII 值符号标识:signed unsigned表示数值范围:signed char: -128+127Unsigned char: 0255基本类型变量这部分知识主要的考察形式:(1)变量名(标识符)的正确与否鉴别(2)变量类型标识符的识别与应用(3)变量定义语句中对变量进行初始化的形式正确与否鉴别(3.6) 例如以下题目:t-7: 以下正确的变量标识符是:A)3sum B)INT C)_3max D)case E)p&sum F)s_m_at-8: 以下正确的变量类型声明是:A)signed int B)int long

6、 C)unsigned long D)short longt-9: 下面程序段在 tc2.0 和 cfree3.0 运行时的输出各为-1 / 65535?unsigned int a=65535; printf(%d,a);t-0: 以下正确的定义语句是:A)int a=b=5 ; B)char ch=97 ; C)unsigned int x, y=-5; D)inta=3,b=5; E)int c=3(二)建构类型的数据程序给出的任务数据可以是基本类型的,也可以是集合性质的。集合中的所有数据可以是同类型的即数组(7.1.17.1.3、7.2.17.2.3、7.3.17.3.4),也可以是不

7、同类型的(例如学生记录)即结构体(11.111.5)。在这部分知识中主要考察的形式有:(1)数组及结构体的定义、初始化和引用(2)计算集合(数组、结构体变量)存储所需要的空间(3)数组定义时缺省形式的一些规则:在定义一维数组时,若给出了所有初始值则一维中括号内的数值可以省略,由初始值的个数来确定其值。但若没有给出初始值,则不能省略中括号内的值。例如:int a=1,2,3; int b=3;都对。int a; 不对。 二维数组的第 2 维列数任何情况下都不能缺省,第 1 维中的数值若在给出初始值的按情况下可以缺省。例如 int a2=1,23,4不对。int a2=1,2,3,4,5;正确。(

8、4)只有在数组定义时可以给数组整体赋值,不能单独用赋值运算“=”给数组整体赋值,特别是字符串数组。例如 int a3; a=1,2,3; char b10; b=”china”; char c210; c0=”chian”;c1=”japan”都不对, 只能是int a3=1,2,3;char b10=”china”; charc210=“china”,”japan”;(5)函数体内定义的数组名是地址常量,而由数组名表示的一些表达式也是常量表达式。如 int a3=1,2,3; a,a+i 都是常量。int b33=.; b,b0,b+i,*(b+i)也都是常量形式。常量形式意味着该式只能出现

9、在等号的右边,而不能作为左值。例如以下题目:t-11: 以下正确的数组定义形式是:A)int n; scanf(“%d”,&n) ; int an ;B)#define N 10 int aN; C)int b34;D)char b 4;t-12: 以下不正确的数组定义和初始化形式是:A)int a=1,2,3; B) int a=0; C) int a3=1,2,3,4;D)int a22=1,1,2,2,3,3 E) char a10=“hello”; F) chara=”hello”;G)int a2=1,1,2,2; H) char a10; a=”hello” ;I)char a21

10、0; a0=”hello ” ;a1=”tom” ; J) char a210=“hello”,“tom”;t-15: 若有数组 int a22=1,2,3,4,则能引用数组元素 4 的形式为:A) a12 B) *(a+1) C) *(*(a+1)+1) D) *(a+3) E) a11F) *(a1+1)t-6: 若有数组 int a3=1,2,3;则能引用数组元素 2 的形式为:A)a1 B) *(a+1) C) &a1 D) a+1t-11: 以下正确的数组定义形式是:A)int n; scanf(“%d”,&n) ; int an ;B)#define N 10 int aN;C)i

11、nt b34;D)char b 4;t-17: 若有如下程序段,则对于“TOM”串中首字符 T 的正确引用形式为: struct Aint age;char name10;;Struct A t2=1,”TOM”,2,”MIKE”,*p=t;A)(*p).name B) t2.name C)t1.name0 D)p-name0第二部分:数据的输入输出讨论完 C 中的数据我们再讨论各种数据的输入与输出。如果数据输入不当再完美的程序也不可能显示出预期的结果。这部分作业的输入出现的问题较多,我们要熟记输入规则但不能死记硬背。下面的这三对函数都包含在文件“stdio.h“中,因他们的输入输出终端是标准

12、设备-键盘和显示器,因此称为标准的 IO 函数,标准 IO 函数的使用与缓冲区有密切的联系。学习本部分时最重要的是要理解输入缓冲区中数据流和输入函数格式匹配的输入机制(参见本章手册中的参考资料)C 中的输入输出是调用系统库函数来实现的,常见有三对库函数:(1)scanf()/printf(): 可输入输出任何类型的数据。一次函数调用可以实现多个数据的 IO。(2)gets()/puts(): 只对字符串数据进行输入输出操作。一次函数调用只可实现一个串的 IO。(3)getchar()/putchar():只对字符数据进行输入和输出操作。一次函数调用只可实现一个字符的 IO。对于这几对函数的使用

13、主要考察:(1)scanf、printf 的使用规则(4.5,可参考本章教学目标)(2)getchar 和 putchar 的使用格式(4.4)(3)gets 与 scanf 的使用区别例如以下题目:t-18:若有程序段 int a; float x; char c10;scanf(“%2d%f%s”,&a,&x,c);当程序执行时从键盘输入 23456.78abcd ,a=23 x=456.78、和 c=”abcd”t-19:若 有定义 int a ;float b ; 则 scanf(“a=%d;b=%f”,&a,&b) ;的输入形式是a=3 ;b=4.5t-20:若有定义 float x

14、 ;则语句 scanf(“%5.2f”,&x)是否正确?不正确t-21:若有定义 char a,b ;对于 scanf(“%c%c”,&a,&b );若输入 A B,则 a=Ab=空格?t-2:若用 getchar()函数输入一个字符存储到字符变量 ch 中再将其输出,则以下正确的写法是:A)getchar(ch) ; B) ch=getchar() ; C) ch=putchar(); D) putchar(ch);t-23: 若有语句 scanf(“%s”,a); 程序运行时若输入 hello tom!,则存储到 a 中的串是“hello”t-24: 若 有 int a=97; float

15、 x=34.56; char c=B ; 则 语 句 printf(“ %c %d%d”,a,x,c )的输出是 a 34 66t-25: 若有程序段:char a, b , s10,t10; a=getchar();b=getchar(); gets(s);gets(t); printf(a=%c,b=%c,s=%s,t=%s,a,b,s,t); 程序运行时若输入 ABHello TOM程序输出是 a=A,b= ,s=B,t=HELLOt-26: 若有如下定义 ,写出每个变量对应的格式符。int a ; %d long int b; %ld unsigned longc; %lufloat

16、x; %f long double y; %lf char ch; %ct-7: 若要分别输入两个串“hello”和“tom”至数组 s 和 t 中,下面四个程序段运行结果是否一样?可以有什么样的推论?若运行后输入的两个串以回车为结束符程序段 1:程序段 2:程序段 3:char s10,t10;chars10,t10;chars10,t10;gets(s);gets(t); scanf(“%s”,s); gets(t); gets(s); scanf(“%s”,t);程序段 4:char s10,t10; scanf(“%s”,s); scanf(“%s”,t); 程序段 2 结果不一样。S

17、canf 和 gets 连用时对回车符的处理不同。Scanf 将回车符留在缓冲区中,而 gets 的回车符带走。第三部分:函数之间对任务数据的处理方法在编写多模块程序也即存在函数调用这样的程序时,我们必须首先设计模块之间任务数据的交接方法,即主调函数如何让被调函数得到要访问的任务数据。部分初学者对此不解,不明白为什么在子函数中不能通过直接引用主调函数中的变量名来访问主调函数中的任务数据,例如这样的题目:在 main 函数中定义了变量 x 和变量 y 并赋予值,而子函数 sum 的任务就是对主函数中的这两个数据求和,部分初学者也许认为在 sum 函数中直接用表达式 x+y 就可以求出主调函数中这

18、两个变量的和了。要明白这个错误的原因我们还是要对程序的模块化设计思想做以分析。这个思想的设计起因很简单,正如我们可以理解为什么学校里要划分院系,而院系里再分班; 也正如为什么公司里都划分各个职能部门一样。变量的作用域属性和存储属性也就是这个设计思想规则的体现。模块之间只能通过接口(实参/形参 返回值)来互通信息。为了保证模块内部信息(数据)的隐藏性,规定模块内部定义的变量也只能在本块内被引用,这就是作用域规则下的局部变量。在某些时候可能几个模块需要共享一些数据,这些数据可以被多个模块访问,这就是作用域规则下的全局变量。例如在战争游戏中,指挥部和后勤部都会需要战士的人数,指挥部用这个数目来调兵遣

19、将,后勤部用这个数目来供给口粮和装备。不同的模块之间存在信息共享(全局变量),而同一个模块的多次调用之间也可以共享某些信息(静态局部变量)。对于作用域和存储类型这两部分内容要掌握:(1)完整的变量定义格式:存储类型符 数据类型符 变量名;(2)能根据变量的定义位置来判断哪些是局部变量,哪些是全局变量,他们各自的作用域范围是什么。(3)能根据变量定义中的存储类型符来判断变量的存储类型,从而确定变量在内存生存期的起点和终点。(4)所有的全局变量都是静态存储的,也即存储类型符只能是 static/extern 两种之一,这两个的区别是前者限定这个全局变量只能被当前文件所使用,而后者声明的变量可以被其

20、他文件所使用。若全局变量缺省存储类型符则默认为 extern。(5)静态变量在使用前都应有初始值,若未显示赋值则系统有默认值-0 或者NULL。(6)局部变量有静态类型也有动态类型,若存储类型符缺省则应默认为 auto。常见题型:t-28:读程序写结果: #include int fun(int);int n=1;void main() int x=2, y=3; printf(1:x=%d,y=%d,n=%dn,x,y,n); int x=7; printf(2:x=%d,y=%d,n=%dn,x,y,n);y=fun(x); printf(3:x=%d,y=%d,n=%dn,x,y,n);

21、 y=fun(x); printf(4:x=%d,y=%d,n=%dn,x,y,n);int fun(int x) static m=3; m+;n+=x; printf(5:x=%d,m=%d,n=%dn,x,m,n); return m+n;因变量作用域的限制使得接口传递信息时采取一种机制:将主调函数的实参值进行复制,形参到的是实参的副本,即传值调用的机制。但这种机制在处理集合数据时带来问题,我们不可能将集合中的每一个数据都做为一个实参,为了解决这个问题考虑将集合数据在内存中存储的首地址(是一个地址值)拷贝给子函数,这样子函数就需要定义指针变量来接收传递来的地址值,这种处理机制称传址调用,

22、子函数能利用指针变量间接访问到主调函数中的数据。对于返回结果是集合性质的数据也采用相同的处理方法,即返回这个结果集合的首地址,也即返回值是指针的函数功能。若主调函数要子函数处理的是多个同类型的数据集合,例如多个一维整型数组, 或者多个串,那么为了传递简便通常在主调函数中先对这多个数据集合做些处理,例如将这几个集合的首地址存储在一个指针数组中,这样传递实参时只要将这个指针数组的首地址传递给子函数,而子函数将定义一个二级指针来存放指针数组的首地址, 继而通过这个二级指针来间接访问到这多个数据集合。例如 char a10=”.”,b10=”.”,c10=”.”; char *p3=a,b,c; 有函

23、数调用 fun(p,3),则形参定义相应为:(char *pp, int n ).例如如下题型:请分析下面函数调用表达式中的实参来写出对应的子函数中形参变量的定义,并说出这种调用形式下数据的访问方法(传值调用还是传址调用):t-29:根据实参写出对应的形参变量的定义(1)主调函数中若有定义:int x=2,y=3;函数调用: fun(x,y);形参定义:(2)主调函数中若有定义:int x=2,y=3; 函数调用:fun(&x,&y);形参定义:(3)主调函数中若有定义:char x=A,y=B; 函数调用:fun(x,y);形参定义:(4) 主调函数中若有定义:int a5=1,2,3,4,

24、5;函数调用:fun(a0); 形参定义:(5) 主调函数中若有定义:int a5=1,2,3,4,5;函数调用:fun(&a0);或者 fun(a);形参定义: 利用形参变量对数组元素的间接访问形式(6) 主调函数中若有定义:int a33=1,2,3,4,5,6;函数调用:fun(a22); 形参定义:(7) 主调函数中若有定义:int a33=1,2,3,4,5,6;函数调用:fun(&a22);形参定义: 利用形参变量对数组元素的间接访问形式(8) 主调函数中若有定义:int a33=1,2,3,4,5,6;函数调用:fun(a,3,3); 形参定义:(9) 主调函数中若有定义:int

25、 a33=1,2,3,4,5,6;函数调用:fun(*a,9);或者 fun(&a00,9);或者 fun(a0,9)形参定义: 利用形参变量对数组元素的间接访问形式(10)主调函数中若有定义:char a310=“hello”,”jack”,”tom”;函数调用:fun(a,3);形参定义: 利用形参变量对数组元素的间接访问形式(11)主调函数中若有定义:int a5=1,1,1,1,1;int b5=2,2,2,2,2;int c5=3,3,3,3,3;int *p3=a,b,c;函数调用:fun(p,3);形参定义: 利用形参变量对数组元素的间接访问形式(12)主调函数中若有定义:cha

26、r a5=”hello”; char b5=”jack”;char *p2=a,b,c;函数调用:fun(p,2);形参定义: 利用形参变量输出串 jack(13)主调函数中若有定义:char a310=”hello”, ”jack”,”tom”;char *p3=a0,a1,a2;函数调用:fun(p,3);形参定义: 利用形参变量输出串 jack(14)主调函数中若有定义:Struct A Int x;Char n10;Struct A m=1,”mike”;函数调用:fun(m); 形参定义:Struct A a3=1,”mike”,2,”jack”,3,”tom”;函数调用:fun(a

27、,3); 利用形参变量输出串 mike形参定义:函数调用:fun(a0)形参定义:在多模块的程序中应能写出或者找出函数的三要素-函数调用、函数声明(原型)、函数定义,函数声明根据情况可以缺省。或者给出其中一个要素能写出其它的两个要素,例如以下题目:t-0:函数原型: double fun(int,float);函数调用:函数定义头部:t-31:函数原型: char *fun(char *,char ) ;函数调用:函数定义头部:t-32:函数原型: int fun(int , int) ;或者 int fun(int *, int) ;函数调用:函数定义头部:t-33:函数原型: int fu

28、n(int (*)3, int,int) ;函数调用:函数定义头部:t-34:函数原型: int fun(int *, int,int) ;函数调用:函数定义头部:t-35:函数原型:函数调用: p=fun(a,b) ; /* 若以有定义 char *p ,a10 ,b10 ;*/函数定义头部:t-36:函数原型:函数调用: sum=fun(a,5) ; /* 若以有定义 int sum,a5=. ;*/函数定义头部:t-37:函数原型:函数调用: sum=fun(a,5,5) ; /* 若以有定义 int sum,a55=. ;*/函数定义头部:t-38:函数原型:函数调用: fun(p,3

29、) ; /* 若以有定义 char (*p)3=“.”,“.”,“.”*/函数定义头部:t-39:函数原型:函数调用: sum=fun(&a00,9) ; /* 若以有定义 int sum, a33=.*/函数定义头部:t-40:函数原型:函数调用: fun(x) ; /* 若以有定义 struct A x=.*/函数定义头部:t-41:函数原型:函数调用: fun(a,3) ; /* 若以有定义 struct A a3=.*/函数定义头部:t-42:函数原型: 函数调用:函数定义头部:int sum(int (*p)3,int m,int n) t-43:函数原型: 函数调用:函数定义头部:int *sum(int *p)在这部分内容中,对于给出的程序我们要非常明确程序采用的调用方式是传值还是传址,两个模块的接口处实参和形参的匹配,子函数返回值和主函数接收值的匹配。第四部分:模块内部的任务实现(算法:解题思路)多数题目在解题的过程中可能都会用到选择和循环,因此我们有必要首先对程序的这两种结构进行讨论。选择结构的应用比较简单,只是把我们思维中的选择逻辑依葫芦画瓢的用计算机语句翻译出来就可

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

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