《C程序设计》复习资料知识点总结.docx
- 文档编号:24396171
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:21
- 大小:83.94KB
《C程序设计》复习资料知识点总结.docx
《《C程序设计》复习资料知识点总结.docx》由会员分享,可在线阅读,更多相关《《C程序设计》复习资料知识点总结.docx(21页珍藏版)》请在冰豆网上搜索。
《C程序设计》复习资料知识点总结
《C程序设计》知识点
都懂了,一定过!
第1章C语言概述
1.1.C语言属高级语言,区分字母的大小写,以函数为基本单位采用模块化程序设计,可直接访问内存,进而对硬件进行操作。
1.2.用C语言编写和程序称作C源程序,简称C程序,C程序可由若干个文本文件组成,文件扩展名为C(使用C++编译器时默认扩展名为CPP)。
C源程序经编译、连接后得到扩展名为EXE的可执行文件(目标程序)。
预处理编译、连接执行
若干个C程序文件----TC程序------T目标程序文件--T
1.3.C程序从主函数开始执行,每个C程序有且仅有一个主函数,因此,每个C
程序文件中至多有一个主函数。
1.4.C语句以分号结尾,用{}括起来的一组语句称作复合语句,复合语句可省略花括号之后的分号。
1.5.允许一行内写多个C语句,也允许一个C语句占用多行,但保留字和标识符不可拆行。
1.6.在C集成环境VC++6.0中,新建工程、保存当前程序文件、编译当前程序、
执行当前程序的快捷键依次为:
Ctrl+N、Ctrl+S、F7、Ctrl+F5。
第2章程序设计的灵魂一一算法
2.1.解决问题的方法和步骤称作算法。
算法和数据结构是程序的两个主要要素
2.2.算法具有确定性、有穷性、有效性等特点。
2.3.
算法可用自然语言、流程图、N-S图、计算机语言、伪代码等描述。
伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。
起止框
C)
输入输出框
判断框
O
处理框
注释框……
连接点
0
流程线
有向线段或折线
图2.1ANSI流程图符号
2.4.算法的基本结构分为:
顺序结构、选择结构、循环结构
2.5.由三种基本结构组成的程序称作结构化程序,结构化程序中的每个模块只有一个入口和一个出口。
结构化程序设计通常采用“自顶向下、逐步细化”的设计方法。
第3章数据类型、运算符与表达式
3.1.C的数据类型如下所示:
表3.1C语言的数据类型
数据类型
字节数
数值范围
基本类型
整
型
无符号短整型(unsignedshortint)
4
0〜216-1
有符号短整型(signedshortint)
2
-215〜215-1
无符号长整型(unsignedlongint)
4
0〜2-1
有符号长整型(signedlongint)
4
-231〜231-1
实型
单精度实型(float)
41
长37位,6位有效
「双精度实型(double)
8
长307位,15位有效
长双精度实型(longdouble)
10
长4931位,18位有效
字符型(char)
1:
0〜28-1
空类型(void)
1
构造类型
枚举类型
2「
指针类型
2
数组类型
结构体类型
共用体类型
3.9.转义字符'\n'、'\t'、'\\'、'\''、'\"'分别表示回车符、制表符、反斜杠、单引号、双引号。
3.10.转义字符整数'、'\x整数’(或'\X整数')中的整数分别为八进制、十六进制,表示以此整数为ASCII码的字符。
3.11.用双引号括起来的一串字符称作C字符串型常量,串中字符数称作串长,可以
为0。
字符串的存储形式为:
依次存储字符串中字符的ASCII码,并追加一个
空字符'\0'(1字节无符号整数0)。
3.12.字符型、整型、实型数据统称数值型数据,不同类型的数值型数据可以混合运算,低精度数据被自动强制转换为高精度数据后方参与运算。
另外,字符常量为有符号短整数,两个字符型数据间的运算按有符号短整数处理。
3.13.如果将数值型数据赋给不同类型的数值型变量,则数值型数据将被自动强制转换为变量的数据类型。
3.14.C允许定义变量的同时赋初值。
3.15.C运算符及其优先级、结合性如附录C(教材第365页)所示。
3.16.强制数据类型转换的一般形式为:
(类型名)数据
3.17.自增++、自减--运算只能作用于变量,作用于右侧时,返回变量自增、自减前的值。
3.18.赋值表达式的格式为:
变量=表达式或变量0卩=表达式
其中,op为运算符+、-、*、/、%、>>、VV、&、八、|中某一个。
前者将右边表达式的值赋给左边的变量,后者将左边变量的当前值与右边表达式的值作相应运算后仍赋给左边的变量。
整个赋值表达式取左边变量所赋的新值。
3.19.用逗号分隔的一组表达式称作逗号表达式,其一般形式为:
表达式,表达式,…,表达式
其功能为:
从左至右依次计算各表达式的值,并以最后一个表达式的值为整个逗号表达式的值。
3.20.将数学式改为C表达式时应注意:
(1)乘号*不可省略;
(2)正确改写脚码、运算符、括号等;
(3)正确书写函数名;
(4)把握好运算优先级,分数线改为/时,分子、分母相应加括号;
(5)正确拆分不等式组;
(6)区分整数除法和实数除法。
第4章顺序结构程序设计
4.1.表达式后缀分号称作表达式语句,即,
表达式;
4.2.putchar、getchar、printf、scanf等输入输出函数的原型在头文件stdio.h中。
4.3.函数putchar和getchar的格式和功能如下:
⑴putchar
格式:
putchar(表达式)
功能:
向标准输出设备输出以指定表达式的值为ASCII码的字符,并以
该值为函数值(自动强制转换为int型)。
(2)getchar
格式:
getchar()
功能:
从标准输入设备输入一个字符,并以该字符为函数值。
注意:
getchar可提取空格及回车、Tab等部分控制字符,而且只提取输入中相应位置上的一个字符,因此,输入字符间无须分隔,否则也被视为输入字符。
4.4.printf函数的格式和功能如下:
格式:
printf(格式控制串,输出表列)
功能:
(1)从右至左依次计算输出表列中各表达式的值;
(2)从左至右依次输出格式控制串中的字符,其中,%引导的格式控制符由输
出表列中相应表达式的值所取代。
输出表列是一组用逗号分隔的表达式(又称输出项,可以为0项)。
格式控制
串为字符串型数据(可以是表达式)。
其中,格式符用于控制输出表列中相应表达式的输出格式。
格式符及其功能如下表所示:
表4.1printf格式字符
格式符
说明
d或i
有符号十进制短整数(不输出正号)
u
无符号十进制短整数
o
无符号八进制短整数(无前缀0)
x或X
无符号十六进制短整数(无前缀0x,数字的大小写与x相冋)
c
字符
s
字符串
f
定点数(默认6位小数)。
e或E
浮点数(浮点数中e的大小写与格式符e的大小写相冋)
g或G
%f和%e中输出宽度较短者(e与g的大小写相同)
附加格式符
说明
l
插在%和d、i、u、o、x、X之间,表示输出相应长整数。
整数
插在%和其它格式符之间,前一个整数的绝对值为输出数据的宽度,后一个整数控制实际输出位数:
①输出整数时,指定输出位数,不足左补0,超出保留;②
输出实数时,指定输出小数位数,不足右补0,超出四舍五入;③输出字符串时,
指定输出字符数。
另外,第一个整数为负时,输出数据左对齐,否则右对齐。
.整数
整数.整数
4.5.scanf函数的格式和功能如下:
格式:
scanf格式控制串,地址表列)
其中,格式控制串为字符串型数据(可以是表达式),地址表列是一组用逗号分隔的地址。
功能:
(1)右至左依次计算地址表列中各表达式的值;
(2)从标准输入设备提取数据,并从左至右依次存储到所指定的存储单元。
(3)地址表列中的地址可用表达式表示,通常形式为:
&变量
其中&是地址运算符,它表示取其后变量的存储(起始)地址。
说明:
(1)scanf函数格式符与printf函数的格式符的功能相似。
scanf的合法格式符不区分大小写、实型格式符均等效,另外,
表4.2scanf的附加格式符说明
附加格式符
说明
正整数
指定输入数据的最大宽度(插在%与其它格式符之间)
*
跳过当前一个数据(插在%与其它格式符之间)
*正整数
跳过当前指定个字符(插在%与其它格式符之间)
(2)如果格式控制串中有非格式符,则输入数据中对应位置上必须是该字符,且被跳过,这为指定数据间分隔符提供了方便。
⑶printf和scanf格式控制串中的每对%%(从左至右结合)按一个普通字符%对待。
第5章选择结构程序设计
5.1.C逻辑值为短整数(int),真、假分别为1、0。
另外,字符、数、指针作为逻辑量时,非0、非空为真(即1),0、空为假(即0)。
逻辑运算如下表所示:
表5.1逻辑运算真值表
左兀
右元
!
右元
左兀&&右兀
左元|右元
假(0)
假(0)
真⑴
假(0)
假(0)
假(0)
r真(非0)
假(0)
假(0)
「真⑴
真(非0)
假(0)
真⑴
假(0)
真⑴
真(非0)
「真(非0)
假(0)
真⑴
真⑴
52对于形如
口II口II…
的逻辑式,从左至右计算□的逻辑值,遇到真则提前终止。
5.3.对于形如
□&&3&&…
的逻辑式,从左至右计算□的逻辑值,遇到假则提前终止。
5.4.算术、关系、逻辑运算的优先级参见附录C(教材第365页)。
5.5.if语句的格式和功能如下:
(1)格式一:
if(条件)语句
功能:
如果条件成立,方执行语句。
(2)格式二:
if(条件)语句1else语句2
功能如果条件成立,执行语句1,否则执行语句2。
注意:
else不可独立使用,它与其前最近一个尚未配对的if配对,为避免
歧义,通常只在else中嵌套if语句。
5.6.条件表达式的格式和功能如下:
格式:
条件?
表达式1:
表达式2
功能:
如果条件成立,取表达式1的值,否则取表达式2的值。
说明:
条件表达式可以嵌套,与其前最近一个尚未配对的if配对。
5.7.switch语句的格式和功能如下:
格式:
switch(表达式)
{
case常量i:
语句组i
default:
语句组n+1
}
功能:
如果表达式的值等于常量i,则从语句组i开始执行,否则执行语句组
n+1。
说明:
(1)“表达式”的值和“常量”为整型(包括字符型)。
(2)switch中的每个语句组称作一个分支,为使各分支独立,通常以break、return、exit等语句结尾。
另外,“default:
语句组n+1”可以缺省。
5.8.break语句的格式和功能如下:
格式:
break;
功能:
结束本层switch语句或本层循环语句。
说明:
break语句只能用于switch语句和循环。
第6章循环结构程序设计
6.1.while语句的格式和功能如下:
格式:
while(表达式)循环体
功能:
当表达式的值为真时,重复执行其后循环体。
说明:
循环体是循环语句的内嵌语句,可以是空或复合语句(下同)o
6.2.do-while语句的格式和功能如下:
格式:
do循环体while(表达式)
功能:
重复执行循环体,直到表达式的值为假。
说明:
do-while循环至少执行一次循环体。
6.3.for语句的格式和功能如下:
格式:
for(表达式1;表达式2;表达式3)循环体
功能:
(1)计算表达式1;
(2)当表达式2的值为真时,重复执行循环体和计算表达式3o
说明:
表达式1、表达式2、表达式3均可缺省,但保留分号。
6.4.continue语句的格式和功能如下:
格式:
continue;
功能:
跳过循环体中其后程序段(结束本次循环)o
说明:
continue语句只能用于循环。
6.5.掌握以下算法:
累加、阶乘、判断素数、分解整数数字、递推数列、打印字符图形。
第7章数组
7.1.同一类型数据的序列称作数组,数组中数据用相应下标变量访问,因此,数组亦可视为由下标变量组成的序列。
72定义数组语句的一般格式和功能为:
格式:
数据类型名数组名[第1维长度]…[第n维长度]
功能:
为数组分配连续内存单元,用于存储数组中的下标变量(低维优先),并
将起始地址(又称基址)赋给数组名。
说明:
数组长度只能为整型常量或整型常量表达式。
7.3.数组的要素有:
数据类型、数组名、维数及各维的长度。
各维的长度必须是常量,可用常量表达式表示,其值的整数位有效一一截断取整。
7.4.下标变量的格式为:
数组名[第1维下标]•••[第n维下标]
7.5.下标从0开始,可用表达式表示,其值的整数位有效。
下标最大值比长度小1。
7.6.下标变量的使用与普通变量相同。
7.7.定义数组的同时可对数组中的下标变量赋初值。
格式:
数据类型名数组名[第1维长度]…[第n维长度]={数据表}
功能:
定义数组的同时将数据表中数据依次赋给数组中下标变量,未赋值下标变量的初值为相应数据类型的0。
说明:
数据表中的数据必须是常量,可用表达式表示。
第1维长度可省略,如
果省略,其长度由数据表和其它维长度确定一一存储所需的最小长度。
7.8.以字符为数据元素的数组称作字符数组,它由一组字符型下标变量组成。
除赋值外,字符数组名的使用与字符串变量相似。
字符数组也可用字符串初始化。
7.9.标准函数库提供许多用于处理字符串的函数。
表7.1常用字符串处理函数
格式
功能
头文件
puts(串)
依次输出串中字符,遇到’\0'终止,然后换行。
stdio.h
gets(串)
读入一行字符,依次存入所分配的内存空间,并追加'\0'。
strcat(串1,串2)
将串2复制、连接到串1的第一个'\0'处。
string.h
strcpy(串1,串2)
将串2复制到串1。
strcmp(串1,串2)
比较串1和串2的大小。
strlen(串)
求字符串的长度。
strlwr(串)
将串中大与字母均转换为相应小与字母。
strupr(串)
将串中小与字母均转换为相应大与字母。
注意:
输出字符串及处理字符串的函数,均忽略字符串中第一个'\0'及其后的字符。
7.10.掌握冒泡排序。
第8章函数
61.自定义函数的格式为:
函数值类型函数名(带类型声明的形参表列){函数体}
62.函数值的默认数据类型为into
63.如果函数有返回值,则用return语句返回,其格式为:
return表达式;或return(表达式);
64.如果函数无返回值,即函数值类型为void,亦可用格式:
return;
结束本函数并返回调用者。
&5.函数一般调用格式为:
函数名(实参表列)
其中,实参表列为一组逗号分隔的表达式。
实参按从右至左的次序计算并传递给相应形参。
8.6.如果函数调用在其定义之前,调用前应作相应声明,声明格式为:
函数值类型名函数名(形参及其类型声明表列);
其中,形参可省略。
8.7.函数不可嵌套定义,但允许嵌套调用,亦可直接或间接调用自身(称作递归函
数)o
if(递归条件)语句1
else语句2
或
if(!
递归条件)语句1else语句2
&8.递归函数的函数体的一般格式为:
(B班同学不作要求)
/*递归时,如何递归*/
/*非递归时,如何处理*/
/*非递归时,如何处理*/
/*递归时,如何递归*/
8.9.形参及函数内定义的变量称作局部变量,它从定义处生效,且只在该函数内有效。
因此,不同函数中的局部变量可以同名,但同名不同义。
&10.在所有函数之外定义的变量称作全局变量,它从定义处生效。
8.11.如果局部变量与全局变量同名,则同名全局变量被屏蔽。
8.12.局部变量的存储方式分为:
自动(auto,默认)、静态(static卜寄存器(register)
&13.存储方式和数据类型是变量的两个重要属性,必须在定义变量时一并声明,关键字的排列顺序没有限制。
变量的默认数据类型为int,默认存储方式为auto,
但关键字auto和int不可同时缺省。
8.14.auto型局部变量占用动态数据区,当函数调用结束时释放所占内存。
register
占用CPU中的寄存器,但寄存器不够用时,占用动态数据区。
&15.全局变量和static型局部变量占用静态数据区,默认初值为相应数据类型的0
8.16.static型局部变量的声明和初始化只执行一次。
8.17.如果全局变量被声明为static型,则其它程序文件不能使用该全局变量。
否则,
其它程序文件也可使用该全局变量,但使用前应作extern声明。
8.18.被声明为static型的函数,只在本程序文件中有效,不能被其它程序文件调用
否则,其它程序文件也可调用此函数,但调用前应作extern声明。
8.19.常用数学函数在头文件math.h中。
掌握基本初等函数。
第9章预处理命令
9.1.预处理命令在程序编译前执行,其主要功能是“文本置换”。
92不带参数宏定义的格式和功能如下:
格式:
#define宏名文本
功能:
在预处理时,将程序中宏名用相应的文本置换。
9.3.带参数宏定义的格式和功能如下:
格式:
#define宏名(形参表列)文本
功能:
在预处理时,将程序中带参数的宏用相应的文本置换,且文本中的形参被相应的实参所置换。
注意:
形参无须且做类型声明。
9.4.终止宏定义的格式如下:
格式#undef宏名
9.5.宏定义可以引用已有的宏,亦可重新定义所代表的文本。
9.6.预处理命令无须以分号结尾,否则分号也参与置换。
9.7.#include命令的格式和功能如下:
格式一:
#include"文件名"
格式二:
#include<文件名>
功能:
在预处理时,用指定文件置换本命令一一加载文件。
置换后,被包含文件成为本文件的一部分,其函数、全局变量等均可在本文件中直接使用,无须作extern声明。
前一种格式先在当前目录中找指定文件,如果未找到,方到存放C头文件的目录中查找。
后一种格式直接到存放C头文件的目录中查找指定文件。
9.8.条件编译命令的格式和功能如下:
格式一:
#ifdef宏名程序段1#else程序段2#endif
功能:
在预处理时,如果指定的宏名已定义,则用程序段1置换本命令,否则
用程序段2置换本命令。
当程序段2为空时,#else可省略(下同)。
格式二:
#ifndef宏名程序段1#else程序段2#endif
功能:
在预处理时,如果指定的宏名未定义,则用程序段1置换本命令,否则
用程序段2置换本命令。
格式三:
#if常量表达式程序段1#else程序段2#endif
功能:
在预处理时,如果指定常量表达式的值为真(非0),则用程序段1置换本命令,否则用程序段2置换本命令。
9.9.
注释命令的格式如下:
注释命令在预处理时被删除,不影响源程序和目标程序
/*注释内容*/
第10章指针
10.1.内存的基本单位是字节,每个字节都有相应的编号,称作地址或指针。
借助于指针,C语言可以直接访问内存,从而对硬件进行操作。
10.2.变量所占用内存的大小由其数据类型决定,变量所占用内存的第1个字节的地
址称作该变量的地址或指针,表为:
&变量名
10.3.指针所指向数据的类型称作该指针的基类型,它所指向数据用
*指针
访问,可作为普通变量使用。
10.4.指针本身也是一种数据类型,占用2字节内存,可作为无符号整数输出和参与
关系运算、逻辑运算,但指针的其它运算不同于整数运算。
10.5.指针运算可简单地分为以下五类:
(1)单目运算有六个:
!
、&、*、++、--、sizeo。
(2)双目运算有四种:
-、关系运算、逻辑运算、赋值运算。
(3)指针与整数间的运算有三个:
+、-、[]。
(4)强制类型转换运算:
()。
(5)结构体成员运算:
->。
其中,+、-、++、--、+=、-=均以基类型数据为基本单位。
10.6.一维数组的数组名可作为指针调用,它指向数组中的第一个元素,以数组中元素的类型为基类型。
数组名的值不可修改,且sizeof数组名)的值为整个数组所占内存的字节数。
10.7.对于一维数组来说,
基址+i和&基址[i]
均指向数组中的第i+1个元素(i>=0);
*(基址+i)和基址[i]
均表示数组中的第i+1个元素(i>=0)。
10.8.n维数组可看作是以n-1维数组为元素的一维数组,数组名可看作是指向数组中的第一个n-1维数组的指针。
10.9.下标变量可作为实参,但不可作为形参,实际上,它被误认为指针。
10.10.探C源程序经编译后,系统为源程序中的每个函数均分配一个入口地址,
称作函数指针。
在C源程序中,函数指针用函数名表示,其值不可修改。
以函数指针为值的变量称作函数指针变量,其定义格式为:
函数类型名(*函数指针变量名)();
可用下述格式代替函数名:
(*函数指针)
10.11.探函数返回值可以是指针,定义函数的一般格式为:
基类型*函数名(形参列表){函数体}
10.12.不允许将非0数直接赋给指针变量,须做强制转换。
当指针变量的值为0时,称之为空指针。
10.13.探以指针为元素的数组称作指针数组。
10.14.探以指针为基类型的指针称作指向指针的指针,以指向指针的指针为值的变量称作指向指针的指针变量,其定义格式为:
存储方式关键字基类型名**指向指针的指针变量名
10.15.探C源程序经编译、连接所得目标程序(exe文件)可作为DOS外部命令使用,命令行的一般式为:
路径目标程序文件名参数1参数2…参数n
10.16.探C主函数main可带两个形参,前者为int型,用于接收命令行中字符串个数,后者为字符串指针数组,用于接收命令行中各字符串。
带参主函数的格式为:
voidmain(int形参1,char*形参2[]){函数体}
其中,
形参1=参数个数+1
形参2[0]="路径目标程序文件名"
形参2[i]="参数i",i=1,2,…,n
第11章结构体与共用体
11.1.声明结构体语句的一般格式为:
struct标识符{成员表列};
其中,成员表列为一组声明变量的语句,这些变量称作该结构体的成员,又称数据项、分量、域、字段等。
语句结尾处的分号不可缺省,标识符可以省略,如果不省略标识符,则新增一个数据类型(名):
struct标识符
11.2.定义结构体变量的一般格式为:
struct标识符变量表列;
也可在声明结构体的同时定义变量:
struct标识符{成员表列}变量表列;
11.3.结构体变量可在定义时赋初值,类似于数组赋初值。
11.4.结构体变量的整体使用有以下四种:
(1)赋值:
结构体变量=同类型结构体变量
(2)求存储量:
sizeof结构体变量)
(3)取地址:
&结构体变量
(4)初始化一一与数组初始化相似。
11.5.结构体中成员可作为普通变量使用,成员的访问格式为:
结构体变量名.成员名或结
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C程序设计 程序设计 复习资料 知识点 总结