大学C语言复习提纲
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C 语言复习提纲
第一章C语言概述
1.C语言的关键字有哪些?作了关键字就不能做标识符(如变量名、数组名,函数名、结
构体类型名)
2.C语言的运算符有哪些,掌握常用运算符的优先级、运算对象的个数及结合性。
参见附
录
3.C语言是完全模块化和结构化的程序设计语言。
函数是C语言程序的基本单位,一个程
序由一个或多个函数组成,其中必须有一个main()函数(也只能有一个),程序从main ()开始执行,执行完main()函数结束。
4.函数的首部:
5.函数体:用花括号括起来,一般包括两部分:声明部分和执行部分。
6.C语言的每个语句和数据声明后面必须有一个分号。
7.C语言本省没有输入输出语句,由库函数实现。
8. 了解运行C语言程序的过程,理解“源程序”、“目标程序”、“可执行程序”、“编译”、“连接”和“执行”的概念
第二章算法
1.什么是算法?什么是数据结构?
2.掌握求阶乘、判断闰年和判断素数的算法
3.C语言程序的3种基本结构:顺序、选择和
4.算法的表示:了解流程图法和N-S图法
5. 了解结构化程序设计思想。
第三章数据类型,运算符和表达式
1.了解C语言提供了哪些数据类型(P37),总结我们学过哪些数据类型?
2.了解常量和变量的区别
3.掌握由宏定义表示的符号常量
4.理解变量实质上对应一个内存单元,理解变量名、变量地址和变量值之间的区别。
5.变量必须先定义后使用,变量名的命名要符合标识符命名规范并却不能和系统关键字同
名。
C语言对大小写敏感。
掌握变量定义的格式。
6.变量的三要素是:类型,名字和当前值。
变量的值通过赋值方式改变,如iAge=20,其
中“=”叫做赋值符号,将其右边的数据存入左边变量名所表示的存储空间中。
变量在定义的同时赋值叫做初始化。
初始化不是在编译阶段完成的,(只有静态存储变量和外部存储变量的初始化是在编译阶段完成的),而是在程序运行时执行本函数是实现的。
7.理解整型变量在内存里的存放形式,掌握整型变量的分类,包括每一种整型变量在内存
中占字节数和取值范围。
8.理解浮点型数据在内存中的存放形式,掌握各类浮点型所占字节数,有效位数。
了解浮
点型数据的舍入误差
9.了解转义字符,特别是\”, \\, \’, \ddd, \xhh的含义。
10.掌握字符型变量在内存中的存储形式,掌握字符型数据和整形数据之间的关系。
C语言
字符型数据和整型数据在字符型数据的取值范围内通用。
即:一个字符型变量,可以赋以一个字符型变量,也可以赋以一个0~255之间的整数;输出时,可以用字符格式输出,也可以以整数格式输出;可以对字符型数据进行算术运算,此时相当于对其ASCII码进行运算。
11.理解字符串常量的存储形式,理解“a”和‘a’的区别。
12.掌握各类型数据之间的混合运算中的转换原则,明确哪些是自动的必定要进行的转换,
那些是不同类型数据混合运算进行的转换。
13.掌握算术运算符的优先级和结合性。
注意:两个整数参与运算,结果仍为整数,如5/9=0,
5/3=1。
14.了解强制类型转换运算符的用法。
15.掌握自增,自减运算符的用法,理解++j,--j, j++,j-- 的含义。
16.掌握赋值运算符和赋值表达式的用法,注意“=”与“==”的区别,注意赋值时要将等
号右边的值转换成等号变量的类型再赋值。
17.掌握逗号表达式的求值方法。
第四章最简单的C程序设计
1.掌握C语言的9种控制语句(P70页),包括各控制语句的使用方法和语法规范,掌握
switch语句的用法,理解break和continue的区别并能准确运用。
2.注意复合语句的概念和用法,注意在使用if,while,for等控制语句时,一组语句是否加
括号构成复合语句对语句执行顺序的影响。
3.输入输出由库函数实现,故使用前要#include <stdio.h>
4.掌握单字符输入输出函数putchar()和getchar()函数的调用方法。
5.掌握格式化输入输出函数printf()和scanf()的调用方法。
掌握常用的格式说明符的功能和
规则。
6.printf()中双括号括起来的内容除了%d等格式说明符外,其他字符原样输出,同样,格式
化输入函数scanf()中双引号括起来的内容除了%d等格式说明符外,其他字符照原样输入。
特别注意在输入数据时格式要和scanf中设定的格式说明符匹配。
第五章选择结构程序设计
1. 掌握各种关系运算符和逻辑运算符的用法,掌握关系表达式和逻辑表达式的值都是逻辑值“真”或者“假”。
C语言把整数0作为逻辑假,把任何非0值作为逻辑真。
2. 不要把关系运算符“==”误用为赋值运算符“=”。
比如,如果将判断x是否等于8的关系表达式“x==8”写成“x=8”,那么它永远为真(不管x的原值为多少)。
3. 要正确书写关系表达式。
如果表示“x大于等于5且小于等于20”,在数学上可写成式子:5≤x≤20, 但是如果在C语言中写成下面的表达式:5<=x<=20 则是错误的。
但这种错误是一种语义上的错误,而不是语法上的错误,编译器查不出来,不会报错。
但运行是,不论x 为何值(比如3或60)表达式的值都是“真”,所以这种错误比较“隐蔽”,不易被发现,希望引起注意。
正确的写法是x>=5&&x<=20
4. 混合运算时注意运算符的优先级,从而确定计算的次序。
优先级从高到低依次是:!(非)> 算术运算符> 关系运算符> && > || > 赋值运算符
6. 掌握单分支选择结构if语句和双分支选择结构if-else语句的使用。
注意:
1.if和else同属于一个if语句,else不能单独作为语句单独使用,它只是if语句的一
部分,与if配对使用。
因此程序中不可能没有if而只有else。
2.if-else语句在执行时,只能执行与if的分支语句或else的分支语句,不可能同时执
行两者。
3.if语句的表达式可以是任意类型的C语言的合法表达式,除常见的关系表达式或,
也可以是其他类型的数据,如整型、实型、字符型。
4.在if和else后面,可以是单条语句,也可以是复合语句。
是单条语句是,注意不要
忘记写分号“;”;是复合语句要注意用{}括号扩起来。
7. 条件运算符的结合性为“从右到左”。
比如表达式A>B?A:C>D?C:D, 相当于
A>B?A:(C>D?C:D)。
8. 条件表达式的一般形式(表达式1?表达式:表达式3)中“表达式1”、“表达式2”和“表达式3”的类型,可以各不相同。
表达式2和表达式3不仅可以是数值表达式,也可以是赋值表达式或函数表达式。
比如:
x>y? printf(“%d”,x):printf(“%d”,y)
8.嵌套if-else语句和switch语句都是用来实现多分支选择结构的,它们的应用环境不同,
嵌套if-else语句用于对多条件并列测试,从中取一的情形;switch语句用于但条件测试,从多种结果中选取一种的情形。
9.一般情况下用switch语句能解决的问题,用嵌套if-else也一样能解决,反之用嵌套if-else
语句能解决的问题用switch语句也能解决,在使用时要根据具体问题灵活运用。
10.如果多分支选择结构需要判断的逻辑关系只是是否相等,则最好使用switch语句,switch
语句的执行效率高于嵌套if-else语句。
11.掌握用switch语句编程,注意switch后面括号里表达式的值只能是整数或字符型,每个
case后面的“常量表达式”的值要各不相同。
注意break的使用。
注意:某些情况下,case 语句顺序改变对结果的影响。
第六章循环结构程序设计
1. 掌握while, do-while和for语句在循环结构程序设计中的应用,掌握while, do-while和for 三种循环语句的嵌套和互换。
2. 循环的3个要点:循环变量的初始值,循环条件和循环变量的增量。
在使用循环时,一定要仔细分析循环的3个要点,即从什么地方开始、什么情况下结束和反复做什么。
3. 如果循环体中包含两条或两条以上的语句,则两条语句形成复合语句,需要用{}将循环体括起来。
如果去掉{},则只对着第一条语句进行循环,容易出现死循环的状况。
所以当循环体只有一条语句是,{}可以省略;如果有多条语句,即复合语句是,一定要加{}。
4. while(表达式)语句的后面不需要分号;如果有分号,系统会认为循环没有循环体语句,即为空循环,则不执行任何循环操作。
5. 注意do-while和while语句的执行过程不同,do-while语句的循环体至少被执行一次。
6. do-while语句中while(表达式)语句后面的分号(;)必不可少。
7.理解break语句和continue语句的功能和使用方法。
注意:如果程序中包含双重循环语句时,如果再内层循环中使用break或continue语句,则只对内层循环起作用。
8. 掌握for语句的执行过程及编程运用。
for语句的3个表达式都可以省略,但是中间的分号不能省略。
省略的表达式的功能可以用其他语句去完成。
第七章数组
1. 掌握各种类型的数据的定义形式、在内存中的存储形式,初始化形式及对数组元素的访问。
注意:数组名是数组的首地址,是一个地址常量(不能对常量赋值)
2. 数组必须先定义,后使用。
数组的长度必须事先给定,或者根据初始值的个数给定,不允许动态定义。
数组元素的下标从0开始标记。
3. 掌握对数组元素的输入输出方法。
注意,不能对数组整体进行输入输出,必须使用循环结构逐个元素进行输入输出。
4. 注意,对数组元素初始化时,可以对全部元素初始化,也可以对部分元素进行初始化。
对部分元素初始化,则其他元素的值自动设为0。
5. 特别注意:对静态数组如果不在定义的时候初始化,则编译系统对数组全部元素赋初值为0;对动态数组如果不进行初始化,则其元素的初值不确定。
6. 掌握对二维数组的定义,在内存中的储存形式,初始化的形式,掌握对二维数组元素的引用和输入输出方法。
注意:二维数组元素下标的取值(行下标和列下标都是从0开始编号)。
注意:常用双重循环对二维数组的元素逐个进行存取操作。
8. 掌握字符数组的定义,初始化形式。
特别注意对字符数组进行初始化有哪些形式。
9. 掌握字符数组和字符串的输入输出方法, 如puts、gets,scanf和printf函数。
注意:对字符数组元素逐个输入\输出方法和对字符串进行整体输入输出的方法。
整体输入时使用gets ()或scanf()函数的差别是:scanf()以回车或空格结束输入,而gets()以回车作为输入结束符。
所以,如果想输入带有空格的字符串,应该使用gets()函数。
10. 熟悉常用的字符串处理库函数,理解各函数的工作原理。
注意:要使用这些库函数,需要包含其相关头文件:#include <string.h>
11. 本章特别注意掌握数组元素的排序算法,特别是冒泡法。
第八章函数
1. 函数就是对实现某一功能的函数进行封装,使其成为一个函数封装,可以通过参数和返回值与其它函数进行通信。
2. C语言程序有一个主函数和若干个其他函数组成。
由主函数可以调用其他函数,其他函数也可以互相调用。
3. 被调用的函数要先声明后调用,但若是定义位于调用前面,可省略声明。
为了统一或标准化起见,一般将自定义的所有函数都在程序前面予以声明。
4. 掌握有参函数与无参函数的定义方法。
能够根据题目要求,将实现某种功能的一段程序转换成函数的形式加以定义。
5. 掌握实参和形参的概念,理解形参为函数内定义的参数,为局部变量,只在函数执行时才有意义。
函数执行完毕后,即释放该参数。
6. 理解参数传递中值传递和地址传递的原理和本质。
值传递是单向传递,只能从实参向形参传递,而不能有形参传回实参。
实参和形参占有不同的内存单元,即使同名也互不影响。
7. 掌握函数的调用的方式:函数语句,函数表达式和函数参数的形式。
8. 掌握数组作函数参数的应用,主要有两种形式:
(1)数组元素作为实参使用,该方式与其它类型的普通变量作实参并没有区别,在发生函数调用时,把数组元素的值传递给形参,实现单向值传递;
(2)把数组名作为函数的实参和形参使用,要求形参和对应的实参都是必须是类型相同的数组(或者是指相同类型数组的指针变量),并且必须由明确的数组定义。
该方式实现的是地址传递,即把实参的地址传递给形参。
9. 理解函数嵌套调用的运行过程。
10. 理解递归函数的运行过程,掌握编写递归函数的两个要点:确定递归公式和递归结束的条件。
11. 理解内部变量(局部变量)和外部变量(全局变量)的定义和各自的作用范围。
12. 理解变量的存储类型,掌握自动变量(auto)和静态变量(static)的区别。
自动变量在动态存储区分配存储单元,其初始值是个不确定的致。
函数返回时,系统将放弃这些存储单元,其单元内的数据也随之消失了。
静态变量在静态存储区分配存储单元,初始值默认为0,因此函数调用结束后,它的值并不消失,可以保存到下一次函数调用。
第九章预处理命令
1. 预处理命令包含文件包含、宏定义和预编译命令三种。
2. 掌握文件包含和宏定义的正确形式。
3. 理解宏定义的本质就是字符串替换。
注意掌握带参数宏定义的宏展开的正确形式及其结果。
第十章指针
1. 明确指针就是内存的地址,所谓指针变量就是存放变量的首地址的变量称为指针变量。
2. 掌握指针变量的定义、初始化方法。
定义的指针变量一定要初始化,否则它可能只想不确定的存储单元,对其进行操作可能出现运行出错。
3. 掌握通过指向变量的指针对变量进行存取的方法。
4. 掌握指向数组的指针的定义和初始化方法。
掌握引用数组元素的指针法和下标法。
例如:int a[10],*p=a;其中p=a等价于p=&a[0];这对于数组元素a[i],有a[i]=p[i]=*(a+i)=*(p+i).
5. 根据课本10.8节小节进行复习。
6. 能够理解有关应用指针变量的程序。
第十一章结构体
1. 掌握使用结构体变量来处理“记录”类数据及使用结构体变量类数组来处理多个“记录”类数据。
2. 掌握在函数中使用结构体数组的方法。
3. 结构体类型必须先声明(给出一个模板),然后才能定义结构体变量或数组(生成实体,分配存储空间)。
掌握结构体变量和数组定义的几种形式。
4. 如果两个函数都用到一种结构体类型,则对结构体类型的声明要在这两个函数之前。
否则如果结构体类型声明在一个函数内部,则另一函数中就不能识别这种类型。
5. 掌握访问结构体变量的成员的访问方法。
如果指针pStr已指向结构体变量stPerson,则以下三种形式等价:stPerson.成员,(*pStr).成员,pStr->成员。
5. 注意对结构变量和数组元素不能整体输入输入,要访问到成员,对各成员分别输入输出。
第十二章文件
1. 掌握二进制文件和文本文件的区别。
2. 掌握以缓冲文件系统方式读写文件的步骤为:(1). 定义文件指针,(2). 打开文件,(3). 读写文件,(4). 关闭文件。
3. 掌握fopen函数和fclose函数的用法。
4. 掌握文件操作方式及含义。
5. 掌握fputc,fgetc,fread和fwrite函数的用法,明确其每个参数的含义。
本课程要求掌握的经典算法包括:求阶乘算法,判断素数算法、求最小公倍数和最大公约数算法、排序算法、求三个数最大值或最小值算法、将三个数按从大到小顺序输出的算法、大写字母改小写字母算法,计算字符串中单词的个数的算法、统计字符串中各类字符的个数等。