C程序设计复习知识点整理.docx
- 文档编号:11484690
- 上传时间:2023-03-01
- 格式:DOCX
- 页数:27
- 大小:38.32KB
C程序设计复习知识点整理.docx
《C程序设计复习知识点整理.docx》由会员分享,可在线阅读,更多相关《C程序设计复习知识点整理.docx(27页珍藏版)》请在冰豆网上搜索。
C程序设计复习知识点整理
C语言概论
C源程序的结构特点
1.一个C语言源程序可以由一个或多个源文件组成。
2.每个源文件可由一个或多个函数组成。
3.一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。
4.源程序中可以有预处理命令(include命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。
5.每一个说明,每一个语句都必须以分号结尾。
但预处理命令,函数头之后不能加分号。
6.标识符,关键字之间必须至少加一个空格以示间隔。
若已有明显的间隔符,也可不再加空格。
C语言的字符集
字符是组成语言的最基本的元素。
C语言字符集由字母,数字,空格,标点和特殊字符组成。
在字符常量,字符串常量和注释中还可以使用汉字或其它可表示的图形符号。
1.字母 小写字母a~z共26个,大写字母A~Z共26个
2.数字 0~9共10个
3.其它字符如:
空格符、制表符、换行符等
4.标点和特殊字符
C语言词汇
在C语言中使用的词汇分为六类:
标识符,关键字,运算符,分隔符,常量,注释符等。
1.标识符
在程序中使用的变量名、函数名、标号等统称为标识符。
除库函数的函数名由系统定义外,其余都由用户自定义。
C规定,标识符只能是字母(A~Z,a~z)、数字(0~9)、下划线()组成的字符串,并且其第一个字符必须是字母或下划线。
以下标识符是合法的:
a,x,_3x,BOOK_1,sum5
以下标识符是非法的:
3s以数字开头s*T出现非法字符*-3x以减号开头bowy-1出现非法字符-(减号)
在使用标识符时还必须注意以下几点:
(1)标准C不限制标识符的长度,但它受各种版本的C语言编译系统限制,同时也受到具体机器的限制。
例如在某版本C中规定标识符前八位有效,当两个标识符前八位相同时,则被认为是同一个标识符。
(2)在标识符中,大小写是有区别的。
例如BOOK和book是两个不同的标识符。
(3)标识符虽然可由程序员随意定义,但标识符是用于标识某个量的符号。
因此,命名应尽量有相应的意义,以便阅读理解,作到“顾名思义”。
2.关键字
关键字是由C语言规定的具有特定意义的字符串,通常也称为保留字。
用户定义的标识符不应与关键字相同。
C语言的关键字分为以下几类:
(1)类型说明符
用于定义、说明变量、函数或其它数据结构的类型。
如前面例题中用到的int,double等
(2)语句定义符
用于表示一个语句的功能。
如:
ifelse就是条件语句的语句定义符。
(3)预处理命令字
用于表示一个预处理命令。
如前面用到的include。
3.运算符
C语言中含有相当丰富的运算符。
运算符与变量,函数一起组成表达式,表示各种运算功能。
运算符由一个或多个字符组成。
4.分隔符
在C语言中采用的分隔符有逗号和空格两种。
逗号主要用在类型说明和函数参数表中,分隔各个变量。
空格多用于语句各单词之间,作间隔符。
在关键字,标识符之间必须要有一个以上的空格符作间隔,否则将会出现语法错误,例如把inta;写成inta;C编译器会把inta当成一个标识符处理,其结果必然出错。
5.常量
C语言中使用的常量可分为数字常量、字符常量、字符串常量、符号常量、转义字符等多种。
在第二章中将专门给予介绍。
6.注释符
C语言的注释符是以“/*”开头并以“*/”结尾的串。
在“/*”和“*/”之间的即为注释。
程序编译时,不对注释作任何处理。
注释可出现在程序中的任何位置。
注释用来向用户提示或解释程序的意义。
在调试程序中对暂不使用的语句也可用注释符括起来,使翻译跳过不作处理,待调试结束后再去掉注释符。
数据类型、运算符、表达式
C语言的数据类型
1.基本数据类型
对于基本数据类型量,按其取值是否可改变又分为常量和变量两种。
在程序执行过程中,其值不发生改变的量称为常量,取值可变的量称为变量。
它们可与数据类型结合起来分类。
可分为整型常量、整型变量、浮点常量、浮点变量、字符常量、字符变量、字符串常量。
在程序中,常量是可以不经说明而直接引用的,而变量则必须先定义,后使用。
整型量
整型量包括整型常量、整型变量。
整型常量就是整常数。
在C语言中,使用的整常数有八进制、十六进制和十进制三种。
整型常量
1.八进制整常数八进制整常数必须以0开头,即以0作为八进制数的前缀。
数码取值为0~7。
八进制数通常是无符号数。
以下各数是合法的八进制数:
015(十进制为13) 0101(十进制为65) 0177777(十进制为65535)
以下各数不是合法的八进制数:
256(无前缀0)03A2(包含了非八进制数码) -0127(出现了负号)
2.十六进制整常数
十六进制整常数的前缀为0X或0x。
其数码取值为0~9,A~F或a~f。
以下各数是合法的十六进制整常数:
0X2A(十进制为42) 0XA0(十进制为160) 0XFFFF(十进制为65535)
以下各数不是合法的十六进制整常数:
5A(无前缀0X) 0X3H(含有非十六进制数码)
3.十进制整常数
十进制整常数没有前缀。
其数码为0~9。
以下各数是合法的十进制整常数:
237-568655351627
以下各数不是合法的十进制整常数:
023(不能有前导0) 23D(含有非十进制数码)
在程序中是根据前缀来区分各种进制数的。
因此在书写常数时不要把前缀弄错造成结果不正确。
4.整型常数的后缀在16位字长的机器上,基本整型的长度也为16位,因此表示的数的范围也是有限定的。
十进制无符号整常数的范围为0~65535,有符号数为-32768~+32767。
八进制无符号数的表示范围为0~0177777。
十六进制无符号数的表示范围为0X0~0XFFFF或0x0~0xFFFF。
如果使用的数超过了上述范围,就必须用长整型数来表示。
长整型数是用后缀“L”或“l”来表示的。
例如:
十进制长整常数158L(十进制为158)
八进制长整常数012L(十进制为10)077L(十进制为63)
十六进制长整常数0X15L(十进制为21)0XA5L(十进制为165) 0X10000L(十进制为65536)
长整数158L和基本整常数158在数值上并无区别。
但对158L,因为是长整型量,C编译系统将为它分配4个字节存储空间。
而对158,因为是基本整型,只分配2个字节的存储空间。
因此在运算和输出格式上要予以注意,避免出错。
无符号数也可用后缀表示,整型常数的无符号数的后缀为“U”或“u”。
例如:
358u,0x38Au,235Lu均为无符号数。
前缀,后缀可同时使用以表示各种类型的数。
如0XA5Lu表示十六进制无符号长整数A5,其十进制为165。
整型变量
整型变量可分为以下几类:
1.基本型
类型说明符为int,在内存中占2个字节,其取值为基本整常数。
2.短整量
类型说明符为shortint或short'C110F1。
所占字节和取值范围均与基本型相同。
3.长整型
类型说明符为longint或long,在内存中占4个字节,其取值为长整常数。
4.无符号型
类型说明符为unsigned。
无符号型又可与上述三种类型匹配而构成:
(1)无符号基本型类型说明符为unsignedint或unsigned。
(2)无符号短整型类型说明符为unsignedshort
(3)无符号长整型类型说明符为unsignedlong
各种无符号类型量所占的内存空间字节数与相应的有符号类型量相同。
但由于省去了符号位,故不能表示负数。
下面列出了TurboC中各类整型量所分配的内存字节数及数的表示范围。
类型说明符 数的范围 分配字节数
int -32768~32767 ■■
shortint -32768~32767 ■■
signedint -32768~32767 ■■
unsignedint 0~65535 ■■
longint -2147483648~2147483647 ■■■■
unsignedlong 0~4294967295 ■■■■
整型变量的说明
变量说明的一般形式为:
类型说明符变量名,变量名,...;例如:
inta,b,c;(a,b,c为整型变量)
longx,y;(x,y为长整型变量)
unsignedp,q;(p,q为无符号整型变量)
在书写变量说明时,应注意以下几点:
1.允许在一个类型说明符后,说明多个相同类型的变量。
各变量名之间用逗号间隔。
类型说明符与变量名之间至少用一个空格间隔。
2.最后一个变量名之后必须以“;”号结尾。
3.变量说明必须放在变量使用之前。
一般放在函数体的开头部分。
实型量
实型常量
实型也称为浮点型。
实型常量也称为实数或者浮点数。
在C语言中,实数只采用十进制。
它有二种形式:
十进制数形式指数形式
1.十进制数形式
由数码0~9和小数点组成。
例如:
0.0,.25,5.789,0.13,5.0,300.,-267.8230等均为合法的实数。
2.指数形式
由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。
其一般形式为aen(a为十进制数,n为十进制整数)其值为a*10n 如:
2.1e5(等于2.1*105),3.7E-2(等于3.7*10-2)
以下不是合法的实数345(无小数点) e7(阶码标志e之前无数字)53.-E3(负号位置不对) 2.7E(无阶码)
标准C允许浮点数使用后缀。
后缀为“f”或“F”即表示该数为浮点数。
如356f和356.是等价的。
实型变量
实型变量分为两类:
单精度型和双精度型,
其类型说明符为float单精度说明符,double双精度说明符。
在TurboC中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。
双精度型占8个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字;单、双精度均保留6位小数。
实型变量说明的格式和书写规则与整型相同。
例如:
floatx,y;(x,y为单精度实型量)
doublea,b,c;(a,b,c为双精度实型量)
字符型量
字符型量包括字符常量和字符变量。
字符常量
字符常量是用单引号括起来的一个字符。
例如'a','b','=','+','?
'都是合法字符常量。
在C语言中,字符常量有以下特点:
1.字符常量只能用单引号括起来,不能用双引号或其它括号。
2.字符常量只能是单个字符,不能是字符串。
3.字符可以是字符集中任意字符。
转义字符
转义字符是一种特殊的字符常量。
转义字符以反斜线"\"开头,后跟一个或几个字符。
转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。
常用的转义字符及其含义
转义字符 转义字符的意义
\n 回车换行
\t 横向跳到下一制表位置
\v 竖向跳格
\b 退格
\r 回车
\f 走纸换页
\\ 反斜线符"\"
\' 单引号符
\a 鸣铃
\ddd 1~3位八进制数所代表的字符
\xhh 1~2位十六进制数所代表的字符
广义地讲,C语言字符集中的任何一个字符均可用转义字符来表示。
\ddd和\xhh正是为此而提出的。
ddd和hh分别为八进制和十六进制的ASCII代码。
如\101表示字母"A",\102表示字母"B",\134表示反斜线,\XOA表示换行等。
字符变量
字符变量的取值是字符常量,即单个字符。
字符变量的类型说明符是char。
字符变量类型说明的格式和书写规则都与整型变量相同。
例如:
chara,b;每个字符变量被分配一个字节的内存空间,因此只能存放一个字符。
字符值是以ASCII码的形式存放在变量的内存单元之中的。
如x的十进制ASCII码是120,y的十进制ASCII码是121。
对字符变量a,b赋予'x'和'y'值:
a='x';b='y';实际上是在a,b两个单元内存放120和121的二进制代码:
a 01111000b 01111001
所以也可以把它们看成是整型量。
C语言允许对整型变量赋以字符值,也允许对字符变量赋以整型值。
在输出时,允许把字符变量按整型量输出,也允许把整型量按字符量输出。
整型量为二字节量,字符量为单字节量,当整型量按字符型量处理时,只有低八位字节参与处理。
字符串常量
字符串常量是由一对双引号括起的字符序列。
例如:
"CHINA","Cprogram:
","$12.5"等都是合法的字符串常量。
字符串常量和字符常量是不同的量。
它们之间主要有以下区别:
1.字符常量由单引号括起来,字符串常量由双引号括起来。
2.字符常量只能是单个字符,字符串常量则可以含一个或多个字符。
3.可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。
在C语言中没有相应的字符串变量。
但是可以用一个字符数组来存放一个字符串常量。
4.字符常量占一个字节的内存空间。
字符串常量占的内存字节数等于字符串中字节数加1。
增加的一个字节中存放字符"\0"(ASCII码为0)。
这是字符串结束的标志。
例如,字符串"Cprogram"在内存中所占的字节为:
Cprogram\0。
字符常量'a'和字符串常量"a"虽然都只有一个字符,但在内存中的情况是不同的。
'a'在内存中占一个字节,可表示为:
a
"a"在内存中占二个字节,可表示为:
a\
符号常量
在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。
符号常量在使用之前必须先定义,其一般形式为:
#define标识符常量
其中#define也是一条预处理命令,称为宏定义命令,其功能是把该标识符定义为其后的常量值。
一经定义,以后在程序中所有出现该标识符的地方均代之以该常量值。
习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。
变量的初值和类型转换
变量赋初值
在程序中常常需要对变量赋初值,以便使用变量。
C语言程序中可有多种方法,在定义时赋以初值的方法,这种方法称为初始化。
在变量说明中赋初值的一般形式为:
类型说明符变量1=值1,变量2=值2,……;例如:
inta=5,b=5,c=5;
floatx=3.2,y=3f,z=0.75;
charch1='K',ch2='P';
应注意,在说明中不允许连续赋值,如inta=b=c=5是不合法的。
变量类型的转换
变量的数据类型是可以转换的。
转换的方法有两种,一种是自动转换,一种是强制转换。
自动转换
自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。
自动转换遵循以下规则:
1.若参与运算量的类型不同,则先转换成同一类型,然后进行运算。
2.转换按数据长度增加的方向进行,以保证精度不降低。
如int型和long型运算时,先把int量转成long型后再进行运算。
3.所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。
4.char型和short型参与运算时,必须先转换成int型。
5.在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。
如果右边量的数据类型长度左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。
强制类型转换
强制类型转换是通过类型转换运算来实现的。
其一般形式为:
(类型说明符)(表达式)其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。
例如:
(float)a把a转换为实型(int)(x+y)把x+y的结果转换为整型。
在使用强制转换时应注意以下问题:
1.类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。
2.无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。
基本运算符和表达式
运算符的种类、优先级和结合性
C语言中运算符和表达式数量之多,在高级语言中是少见的。
正是丰富的运算符和表达式使C语言功能十分完善。
这也是C语言的主要特点之一。
C语言的运算符不仅具有不同的优先级,而且还有一个特点,就是它的结合性。
在表达式中,各运算量参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的制约,以便确定是自左向右进行运算还是自右向左进行运算。
这种结合性是其它高级语言的运算符所没有的,因此也增加了C语言的复杂性。
运算符的种类C语言的运算符可分为以下几类:
1.算术运算符
用于各类数值运算。
包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。
2.关系运算符
用于比较运算。
包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!
=)六种。
3.逻辑运算符
用于逻辑运算。
包括与(&&)、或(||)、非(!
)三种。
4.赋值运算符
用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。
6.条件运算符
这是一个三目运算符,用于条件求值(?
:
)。
7.逗号运算符
用于把若干表达式组合成一个表达式(,)。
8.特殊运算符
如:
括号()等。
优先级和结合性
C语言中,运算符的运算优先级共分为15级。
1级最高,15级最低。
在表达式中,优先级较高的先于优先级较低的进行运算。
而在一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。
C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。
例如算术运算符的结合性是自左至右,即先左后右。
如有表达式x-y+z则y应先与“-”号结合,执行x-y运算,然后再执行+z的运算。
这种自左至右的结合方向就称为“左结合性”。
而自右至左的结合方向称为“右结合性”。
最典型的右结合性运算符是赋值运算符。
如x=y=z,由于“=”的右结合性,应先执行y=z再执行x=(y=z)运算。
C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。
算术运算符和算术表达式基本的算术运算符
1.加法运算符“+”加法运算符为双目运算符,即应有两个量参与加法运算。
如a+b,4+8等。
具有左结合性。
2.减法运算符“-”减法运算符为双目运算符。
但“-”也可作负值运算符,此时为单目运算,如-x,-5等具有左结合性。
3.乘法运算符“*”双目运算,具有左结合性。
4.除法运算符“/”双目运算具有左结合性。
参与运算量均为整型时,结果也为整型,舍去小数。
如果运算量中有一个是实型,则结果为双精度实型。
双目运算具有左结合性。
参与运算量均为整型时,结果也为整型,舍去小数。
如果运算量中有一个是实型,则结果为双精度实型。
5.求余运算符(模运算符)“%”双目运算,具有左结合性。
要求参与运算的量均为整型。
求余运算的结果等于两数相除后的余数,符号与%前的数同。
自增1,自减1运算符
自增1运算符记为“++”,其功能是使变量的值自增1。
自减1运算符记为“--”,其功能是使变量值自减1。
自增1,自减1运算符均为单目运算,都具有右结合性。
可有以下几种形式:
++ii自增1后再参与其它运算。
--ii自减1后再参与其它运算。
i++ i参与运算后,i的值再自增1。
i-- i参与运算后,i的值再自减1。
在理解和使用上容易出错的是i++和i--。
特别是当它们出在较复杂的表达式或语句中时,常常难于弄清,因此应仔细分析。
算术表达式
是由算术运算符和括号连接起来的式子,以下是算术表达式的例子:
a+b (a*2)/c (x+r)*8-(a+b)/7 ++i sin(x)+sin(y) (++i)-(j++)+(k--)
赋值运算符和赋值表达式
简单赋值运算符和表达式,简单赋值运算符记为“=”。
由“=”连接的式子称为赋值表达式。
其一般形式为:
变量=表达式例如:
x=a+b
w=sin(a)+sin(b)
y=i+++--j赋值表达式的功能是计算表达式的值再赋予左边的变量。
赋值运算符具有右结合性。
因此:
a=b=c=5可理解为a=(b=(c=5))
在其它高级语言中,赋值构成了一个语句,称为赋值语句。
而在C中,把“=”定义为运算符,从而组成赋值表达式。
凡是表达式可以出现的地方均可出现赋值表达式。
例如,式子x=(a=5)+(b=8)是合法的。
它的意义是把5赋予a,8赋予b,再把a,b相加,和赋予x,故x应等于13。
但x=a=5+b=8是不合法的。
在C语言中也可以组成赋值语句,按照C语言规定,任何表达式在其未尾加上分号就构成为语句。
因此如x=8;a=b=c=5;都是赋值语句。
如果赋值运算符两边的数据类型不相同,系统将自动进行类型转换,即把赋值号右边的类型换成左边的类型。
具体规定如下:
1.实型赋予整型,舍去小数部分。
2.整型赋予实型,数值不变,但将以浮点形式存放,即增加小数部分(小数部分的值为0)。
3.字符型赋予整型,由于字符型为一个字节,而整型为二个字节,故将字符的ASCII码值放到整型量的低八位中,高八位为0。
4.整型赋予字符型,只把低八位赋予字符量。
复合赋值符及表达式
在赋值符“=”之前加上其它二目运算符可构成复合赋值符。
如:
+=,-=,*=,/=,%=等。
构成复合赋值表达式的一般形式为:
变量双目运算符=表达式它等效于变量=变量运算符表达式例如:
a+=5等价于a=a+5 x*=y+7等价于x=x*(y+7) r%=p等价于r=r%p
复合赋值符这种写法,对初学者可能不习惯,但十分有利于编译处理,能提高编译效率并产生质量较高的目标代码。
逗号运算符
C语言中逗号“,”也是一种运算符,称为逗号运算符。
其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。
其一般形式为:
表达式1,表达式2,…表达式n其求值过程是分别求n个表达式的值,并以表达式n的值作为整个逗号表达式的值。
说明三点:
1.逗号表达式一般形式中的表达式1和表达式2…等也可以又是逗号表达式。
2.程序中使用逗号表达式,通常是要分别求逗号表达式内各表达式的值,并不一定要求整个逗号表达式的值。
3.并不是在所有出现逗号的地方都组成逗号表达式,如在变量说明中,函数参数表中逗号只是用作各变量之间的间隔符。
C语言程序设计初步
C语言程序设计
本课介绍C语言程序设计的基本方法和基本的程序语句。
从程序流程的角度来看,程序可以分为三种基本结构,即顺序结构、分支结构、循环结构。
这三种基本结构可以组成所有的各种复杂程序。
C语言提供了多种语句来实现这些程序结构。
下面总结这些基本语句及其应用。
C程序的语句
C程序由函数构成。
执行部分是由语句组成的。
程序的功能也是由执行语句实现的。
C语句可分为以下五类:
1.表达式语句
2.函数调用语句
3.控制语句
4.复合语句
5.空语
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 复习 知识点 整理