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结构,多个常量表达式可以共