C语言程序设计期末总复习
- 格式:doc
- 大小:157.00 KB
- 文档页数:19
C语言程序设计期末总复习
一、 基本概念
※所谓词法记号,是指程序中具有独立含义的不可进一步分割的单位,具体地说,C语言的词法记号可分成5类:关键词、标识符、常量、运算符、分隔符。
※关键词是C语言中预定义的符号,他们有固定的含义,用户所定义的任何名字都不得与它们冲突。
※标识符是用户自行定义的符号。用来标识常量、变量、函数、标号等。C语言要求,所有标识符必须先定义/说明后使用。ANSI规定,标识符是由字母或下划线(_)开头,后跟零个或多个字母、下划线和数字中任何一个符号所组成的符号序列。
※C语言是区分大小写的,因此,int是关键词,而Int则是标识符。
※分隔符用于分隔各种词法记号,常用的分隔符有:[] () {} * . : = ; #。
※C语言中,为解决具体问题,要采用各种类型的数据,数据类型不同,它们所能表达的数据范围、精度和所占据的存储空间均不相同。
※有符号整数在内存中以补码表示,其最高位为1时表示负数,最高位是0时表示非负数。
※浮点型用来表示实型数据。浮点型分为两种:单精度和双精度,分别以float和double表示。
※字符型用char表示,一般用8位来存放一个字符,实际上存放的是该字符的ASCII码值。
在整型常数后跟有字母l或L时,表示该整型常量是长整型常量。
※字符型常量是用单引号括起来单一字符,一个字符常量的值就是该字符的ASCII码值。
※字符串常量是双引号括起来的零个、一个或多个字符的序列。编译程序自动地在每一个字符串末尾添加串结束符’\0’。一个字符串常量在程序正文中出现,即代表此字符串常量的首地址。
※一个变量由一个名字来标识,变量在内存中占据一定的存储单元,该存储单元存放变量的值。变量名与内存中的某一存储单元相联系,而变量值是指存放在该存储单元的数据的值。
变量被说明后,根据其类型的不同,拥有大小不同的存储单元。没有定义/说明的变量,就没有存储单元,因而不能使用。
※对于除法运算符(‘/’),若除数和被除数均为整数,则商只取整数部分,舍弃小数部分,如6/4=1;而若除数或被除数中,只要有一个为实数,则结果是double型的。如:6/4.0=1.5。
取模运算符%,它求出%两侧的两个整形数据整除后的余数。
※++、--运算符只能用于变量,而不能用于常量和表达式。++、--运算符可以作为变量的前缀,也可以作为变量的后缀,但用作前缀时,++和--表示先增加或减少再取其值,而用作后缀时,++和--表示先取其值再增加或减少。
※关系运算符有: >、>=、<、<=、== 、 !=,关系运算符的优先级低于算术运算符。
若关系成立,则表达式值为零非整数(系统实现时往往为1);若不成立,则表达式值为零。可见,在C语言中是用非0整数表示真,用0表示假。
※逻辑运算符有:&& 、 || 、!
逻辑与符号&&的运算规则:若左右两个操作数均为非零,则返回值为非零,否则返回值为假。
※逻辑或符号||的运算规则:若左右两个操作数有一个为非零,则返回值为非零,否则返回零。
逻辑非符号!的运算规则:把非零操作数转换为零,而把零操作数转换为非零。
※C语言中,&& 和 || 是短路运算符号 。即在从左向右求解一个或多个&&相连的表达式中,只要遇到一个操作数为零,就不再做后面的&&运算,整个表达式的结果为零。而在从左向右求解一个或多个||相连的表达式中,只要遇到一个操作数为1,就不再做后面的||运算,整个表达式的结果为1。
※赋值运算符:=
赋值表达式:由赋值运算符组成的表达式
一般形式为:
※条件表达式 :
一般形式 : ?:
含义:首先计算的值,若为非零,则表达式的值为,否则表达式的值为 。
举例:max=(a>b)?a:b /* 将a、b两数中的较大值送给max*/
※逗号运算符:
逗号表达式:一般形式为:, 如:
a=3*8,a+2 先求a=3*8,得24,然后求解a+2,得26。故表达式的值为26。
※类型转换
当表达式中出现不同类型的操作数时,要按规则将其转换成同一类型,再做运算。
转换规则是:精度低的操作数类型转换成精度高的操作数类型,占用内存少的操作数类型转换成占用内存多的操作数类型,数据范围小的操作数类型转换成数据范围大的操作数类型。这种类型转换是系统自动进行的,无需程序员参与。
※强制转换:其一般形式是:() 例如:(float) i;若i是整型,则(float)i 是float型,但i 仍然是整型,(float)i只是一个中间结果。
※允许在说明变量的同时对其初始化。例如:int sum=0;/*sum的类型为
整型,初始值为0*/
※赋值语句:由赋值表达式加上一个分号组成,如: sum=a+b;而sum=a+b 则是一个赋值表达式。
※格式输出函数printf
格式: printf(控制字符串,参数1, 参数2,……)
控制字符串:用双引号括起来的字符串。包括两种信息:
1.格式说明 :由"%"和转换字符组成,如:%d、%f等,其作用是将与其对应的数据按格式说明指定的格式输出。格式说明总是以”%”开头,以转换字符结束。要特别注意,格式串中格式说明的个数,必须与要输出的数据的个数相等,且数据的类型与相应的格式符一致。常见格式符的含义是:d:十进制整数;f:浮点小数;c:单个字符;s:字符串;u:无符号整数。
2.普通字符 :即按照原样输出的字符
※putchar函数:格式:putchar(c) 功能:输出字符变量c的值
※scanf函数: 格式: scanf(控制字符串,参数1,参数2,……)
控制字符串中包括普通字符和格式说明,控制字符串中还可以包含空格、制表符或换行符,但这些均被忽略。对控制字符串中的普通字符,在输入中要输入与这些字符相同的字符;控制字符串中的格式说明是由字符%开始,到转换字符(其含义与printf的含义相同)结束。控制字符串后面的所有参数都必须是地址形式的。
※getchar函数 格式:getchar( ),功能:接受用户从键盘输入的单个字符。
※一个C语言的程序在能正常运行之前,必须经过编辑、编译和连接这三个步骤。编辑是指利用文本编辑器,输入、修改C语言的源程序(这是一个文本文件),编译是指利用C语言的编译系统将C语言的源程序翻译成一个二进制的目标文件(目标文件仍然是不能运行的),连接是指利用C语言的编译系统将C语言的一个或多个目标文件和C语言本身的库文件连接成一个可执行文件。
※程序调试:通过运行程序,发现并改正程序中错误的过程称为程序调试。
通过了编译和连接的C语言源程序,应该说已经没有语法错误了,但很可能还有逻辑错误,任何编译系统都找不出逻辑错误,这只能靠程序员自己去发现并改正。
在TurboC2.0中,主要的程序调试手段有:单步执行、设置断点、设置观察窗口。单步执行程序可按F7或F8(按F7可将单步执行延伸到被调用函数的内部,按F8的单步执行仅限于主调函数内),按Ctrl+F7组合键可以添加多个变量到观察窗口,按Ctrl+F8组合键可以设置断点。
※语句可以分为五大类:
1.表达式语句: 表达式的后面加一个分号
⑴ 赋值语句
⑵ 自加减运算符构成的表达式语句
⑶ 逗号表达式语句
2.空语句:只有一个分号,作为语句结束符
3.复合语句:由"{"和"}"把一些变量说明和语句组合在一起,又称语句块。如:
{ int a=0,b=1,sum; sum=a+b; printf("%d",sum); } 4.函数调用语句:由一个函数调用加上一个分号组成,如:
printf("This is a function call");
5.控制语句,共有9种,即:
⑴ if语句
⑵ switch语句
⑶ while语句
⑷ do-while语句
⑸ for语句
⑹ break语句
⑺ continue语句
⑻ goto语句
⑼ return语句
※C语言提供两种分支判断语句:if语句和switch语句。其中if语句是单或双分支语句,switch语句是多分支语句,每一种分支语句都有各自的适用场合,编程时由程序员根据具体情况决定使用哪一种分支语句。
※if语句的一般形式:
if ()
[else
]
注:[ ]中的内容是可选的。即,if后面可以没有else,但else前面不能没有if。这里的语句1和语句2被称为if-else结构中的内嵌语句,内嵌语句与程序中的其它独立语句是有区别的,语句1和语句2可以是单条语句也可以是复合语句,整个if-else语句,在程序中被看成是一条语句。例如,可以充当循环语句的循环体而无需加上一对花括号。if后面圆括号中的表达式,可以是任何表达式,总之在C程序中是以非零为真,以零为假。表达式为真时执行语句1,否则执行语句2,语句1和语句2只能执行其中之一。
if语句是可以嵌套的,即if语句中的内嵌语句1和内嵌语句2仍然可以是if语句,这就构成了if语句的嵌套。而且C语言并不限制嵌套的层次。这时,尤其要注意if与else的配对关系,为了避免嵌套的if-else的二义性,C语言规定:else与其前最近的且尚未配对的if配对。有时,为了明确if与else的配对关系添加一对花括号是必要的,花括号内是一个相对独立的程序单元,花括号内的if与花括号外的else没有关系。
※switch语句的一般形式是:
switch ()
{case :
case :
:
:
case :
default:
}
case后面必须是常量表达式,而不能是包含变量的表达式,case和常量之间要有空格,case后面的常量之后有":",且所有的case和default包含在"{}"里,语句序列中的最后一条语句应该是break,以保证执行完某一语句序列后能跳出switch结构,多个常量表达式可以共