1、循环体 YN 图2.6 顺序结构 图2.7 选择结构 图2.8 当循环 图2.9 直到循环2.5. 由三种基本结构组成的程序称作结构化程序,结构化程序中的每个模块只有一个入口和一个出口。结构化程序设计通常采用“自顶向下、逐步细化”的设计方法。第3章 数据类型、运算符与表达式3.1. C的数据类型如下所示:表3.1 C语言的数据类型数据类型字节数数值范围基本类型整型无符号短整型(unsigned short int)40216-1有符号短整型(signed short int)2-215215-1无符号长整型(unsigned long int)0232-1有符号长整型(signed long
2、int)-231231-1实型单精度实型(float)长37位,6位有效双精度实型(double)8长307位,15位有效长双精度实型(long double)10长4931位,18位有效字符型(char)1028-1空类型(void)构造类型枚举类型指针类型数组类型结构体类型共用体类型3.2. C符号常量名、变量名、函数名等统称标识符,标识符的命名规则为:以字母或下划线开头,由字母、数字、下划线组成,超出32个字符部分被忽略(最好不超过8个字符)。3.3. 以0开头的整数为八进制整数,以0X或0x开头的整数为十六进制无符号整数。3.4. -3276832767为int型,0U65535U为u
3、nsigned型,65536U4294967295U和0UL4294967295UL为unsigned long型,-2147483648-32769、327682147483647和-2147483648L2147483647L为long型。后缀U和L不区分大小写和次序。3.5. 数据的存储字节数可用运算符sizeof()查询,括号内可是数据、表达式或类型名。3.6. 有符号整数(int和long)按补码存储,因此,-65535U-1U与1U65535U依次相等,-4294967295UL-1UL与1UL4294967295UL依次相等。3.7. 定点数(含小数点数)和浮点数统称C实型常量,
4、浮点数的一般形式为:尾数e除码 或 尾数E除码其含义为:尾数10除码其中,尾数为定点数或整数,除码为整数。标准浮点数的小数点在第1位非0数字之后。后缀L或l的实型常量为长双精度,无后缀实型常量为双精度。3.8. 用一对单引号括起来的单个字符称作C字符常量,其值为该字符的ASCII码(1字节无符号整数)。3.9. 转义字符n、t分别表示回车符、制表符、反斜杠、单引号、双引号。3.10. 转义字符整数x整数(或X整数)中的整数分别为八进制、十六进制,表示以此整数为ASCII码的字符。3.11. 用双引号括起来的一串字符称作C字符串型常量,串中字符数称作串长,可以为0。字符串的存储形式为:依次存储字
5、符串中字符的ASCII码,并追加一个空字符0(1字节无符号整数0)。3.12. 字符型、整型、实型数据统称数值型数据,不同类型的数值型数据可以混合运算,低精度数据被自动强制转换为高精度数据后方参与运算。另外,字符常量为有符号短整数,两个字符型数据间的运算按有符号短整数处理。3.13. 如果将数值型数据赋给不同类型的数值型变量,则数值型数据将被自动强制转换为变量的数据类型。3.14. C允许定义变量的同时赋初值。3.15. C运算符及其优先级、结合性如附录C(教材第365页)所示。3.16. 强制数据类型转换的一般形式为:(类型名)数据3.17. 自增+、自减-运算只能作用于变量,作用于右侧时,
6、返回变量自增、自减前的值。3.18. 赋值表达式的格式为:变量=表达式 或 变量op=表达式其中,op为运算符 +、-、*、/、%、&、| 中某一个。前者将右边表达式的值赋给左边的变量,后者将左边变量的当前值与右边表达式的值作相应运算后仍赋给左边的变量。整个赋值表达式取左边变量所赋的新值。3.19. 用逗号分隔的一组表达式称作逗号表达式,其一般形式为:表达式, 表达式, , 表达式其功能为:从左至右依次计算各表达式的值,并以最后一个表达式的值为整个逗号表达式的值。3.20. 将数学式改为C表达式时应注意:(1) 乘号*不可省略;(2) 正确改写脚码、运算符、括号等;(3) 正确书写函数名;(4
7、) 把握好运算优先级,分数线改为/时,分子、分母相应加括号;(5) 正确拆分不等式组;(6) 区分整数除法和实数除法。第4章 顺序结构程序设计4.1. 表达式后缀分号称作表达式语句,即,表达式;4.2. putchar、getchar、printf、scanf等输入输出函数的原型在头文件stdio.h中。4.3. 函数putchar和getchar的格式和功能如下:(1) putchar格式:putchar(表达式)功能:向标准输出设备输出以指定表达式的值为ASCII码的字符,并以该值为函数值(自动强制转换为int型)。(2) getchargetchar()从标准输入设备输入一个字符,并以该
8、字符为函数值。注意:getchar可提取空格及回车、Tab等部分控制字符,而且只提取输入中相应位置上的一个字符,因此,输入字符间无须分隔,否则也被视为输入字符。4.4. printf函数的格式和功能如下:printf(格式控制串, 输出表列)(1) 从右至左依次计算输出表列中各表达式的值;(2) 从左至右依次输出格式控制串中的字符,其中,%引导的格式控制符由输出表列中相应表达式的值所取代。输出表列是一组用逗号分隔的表达式(又称输出项,可以为0项)。格式控制串为字符串型数据(可以是表达式)。其中,格式符用于控制输出表列中相应表达式的输出格式。格式符及其功能如下表所示:表4.1 printf格式字
9、符格式符说明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,超出四舍五入;输出字符串时,指定输出
10、字符数。另外,第一个整数为负时,输出数据左对齐,否则右对齐。.整数整数.整数prove 证明 proved proved / proven4.5. scanf函数的格式和功能如下:understand 了解 understood understood格式:scanf(格式控制串, 地址表列)其中,格式控制串为字符串型数据(可以是表达式),地址表列是一组用逗号分隔的地址。(1) 右至左依次计算地址表列中各表达式的值;(2) 从标准输入设备提取数据,并从左至右依次存储到所指定的存储单元。(3) 地址表列中的地址可用表达式表示,通常形式为:&变量fly 飞 flew flown其中&是地址运算符,它
11、表示取其后变量的存储(起始)地址。drive 驾驶 drove driven说明:(1) scanf函数格式符与printf函数的格式符的功能相似。scanf的合法格式符不区分大小写、实型格式符均等效,另外,表4.2 scanf的附加格式符说明spit 吐出 spat / spit spat / spit附加格式符3. 以n结尾的词,在词后加t。如:meanmeant, burnburnt, learnlearnt说明bend 使弯曲 bent bent正整数spread 传播 spread spread指定输入数据的最大宽度(插在%与其它格式符之间)sink 下沉 sank / sunk s
12、unk / sunken*跳过当前一个数据(插在%与其它格式符之间)*正整数跳过当前指定个字符(插在%与其它格式符之间)(2) 如果格式控制串中有非格式符,则输入数据中对应位置上必须是该字符,且被跳过,这为指定数据间分隔符提供了方便。(3) printf和scanf格式控制串中的每对%(从左至右结合)按一个普通字符%对待。第5章 选择结构程序设计5.1. C逻辑值为短整数(int),真、假分别为1、0。另外,字符、数、指针作为逻辑量时,非0、非空为真(即1),0、空为假(即0)。逻辑运算如下表所示:表5.1 逻辑运算真值表左元右元!左元&左元|右元假(0)真(1)真(非0)5.2. 对于形如|
13、的逻辑式,从左至右计算的逻辑值,遇到真则提前终止。5.3. 对于形如&的逻辑式,从左至右计算的逻辑值,遇到假则提前终止。5.4. 算术、关系、逻辑运算的优先级参见附录C(教材第365页)。5.5. if语句的格式和功能如下:(1) 格式一:if(条件) 语句如果条件成立,方执行语句。(2) 格式二:if(条件)语句1 else 语句2功能 如果条件成立,执行语句1,否则执行语句2。else不可独立使用,它与其前最近一个尚未配对的if配对,为避免歧义,通常只在else中嵌套if语句。5.6. 条件表达式的格式和功能如下:条件?表达式1:表达式2如果条件成立,取表达式1的值,否则取表达式2的值。说
14、明:条件表达式可以嵌套,与其前最近一个尚未配对的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语句只能用于swit
15、ch语句和循环。第6章 循环结构程序设计6.1. while语句的格式和功能如下:while(表达式)循环体当表达式的值为真时,重复执行其后循环体。循环体是循环语句的内嵌语句,可以是空或复合语句(下同)。6.2. do-while语句的格式和功能如下:do 循环体 while(表达式)重复执行循环体,直到表达式的值为假。do-while循环至少执行一次循环体。6.3. for语句的格式和功能如下:for(表达式1; 表达式2; 表达式3) 循环体(1) 计算表达式1;(2) 当表达式2的值为真时,重复执行循环体和计算表达式3。表达式1、表达式2、表达式3均可缺省,但保留分号。6.4. cont
16、inue语句的格式和功能如下:continue;跳过循环体中其后程序段(结束本次循环)。continue语句只能用于循环。6.5. 掌握以下算法:累加、阶乘、判断素数、分解整数数字、递推数列、打印字符图形。第7章 数组7.1. 同一类型数据的序列称作数组,数组中数据用相应下标变量访问,因此,数组亦可视为由下标变量组成的序列。7.2. 定义数组语句的一般格式和功能为:数据类型名 数组名第1维长度第n维长度为数组分配连续内存单元,用于存储数组中的下标变量(低维优先),并将起始地址(又称基址)赋给数组名。数组长度只能为整型常量或整型常量表达式。7.3. 数组的要素有:数据类型、数组名、维数及各维的长
17、度。各维的长度必须是常量,可用常量表达式表示,其值的整数位有效截断取整。7.4. 下标变量的格式为:数组名第1维下标第n维下标7.5. 下标从0开始,可用表达式表示,其值的整数位有效。下标最大值比长度小1。7.6. 下标变量的使用与普通变量相同。7.7. 定义数组的同时可对数组中的下标变量赋初值。数据类型名 数组名第1维长度第n维长度=数据表定义数组的同时将数据表中数据依次赋给数组中下标变量,未赋值下标变量的初值为相应数据类型的0。数据表中的数据必须是常量,可用表达式表示。第1维长度可省略,如果省略,其长度由数据表和其它维长度确定存储所需的最小长度。7.8. 以字符为数据元素的数组称作字符数组
18、,它由一组字符型下标变量组成。除赋值外,字符数组名的使用与字符串变量相似。字符数组也可用字符串初始化。7.9. 标准函数库提供许多用于处理字符串的函数。表7.1 常用字符串处理函数格式功能头文件puts(串)依次输出串中字符,遇到终止,然后换行。stdio.hgets(串)读入一行字符,依次存入所分配的内存空间,并追加。strcat(串1, 串2)将串2复制、连接到串1的第一个处。string.hstrcpy(串1, 串2)将串2复制到串1。strcmp(串1, 串2)比较串1和串2的大小。strlen(串)求字符串的长度。strlwr(串)将串中大写字母均转换为相应小写字母。strupr(串
19、)将串中小写字母均转换为相应大写字母。输出字符串及处理字符串的函数,均忽略字符串中第一个及其后的字符。7.10. 掌握冒泡排序。第8章 函数8.1. 自定义函数的格式为:函数值类型 函数名(带类型声明的形参表列) 函数体8.2. 函数值的默认数据类型为int。8.3. 如果函数有返回值,则用return语句返回,其格式为:return 表达式; 或 return(表达式);8.4. 如果函数无返回值,即函数值类型为void,亦可用格式:return;结束本函数并返回调用者。8.5. 函数一般调用格式为:函数名(实参表列)其中,实参表列为一组逗号分隔的表达式。实参按从右至左的次序计算并传递给相应
20、形参。8.6. 如果函数调用在其定义之前,调用前应作相应声明,声明格式为:函数值类型名 函数名(形参及其类型声明表列);其中,形参可省略。8.7. 函数不可嵌套定义,但允许嵌套调用,亦可直接或间接调用自身(称作递归函数)。8.8. 递归函数的函数体的一般格式为:(B班同学不作要求)if(递归条件)语句1 /*递归时,如何递归*/else 语句2 /*非递归时,如何处理*/或if(!递归条件)语句1 /*非递归时,如何处理*/else 语句2 /*递归时,如何递归*/8.9. 形参及函数内定义的变量称作局部变量,它从定义处生效,且只在该函数内有效。因此,不同函数中的局部变量可以同名,但同名不同义
21、。8.10. 在所有函数之外定义的变量称作全局变量,它从定义处生效。8.11. 如果局部变量与全局变量同名,则同名全局变量被屏蔽。8.12. 局部变量的存储方式分为:自动(auto,默认)、静态(static)、寄存器(register)。8.13. 存储方式和数据类型是变量的两个重要属性,必须在定义变量时一并声明,关键字的排列顺序没有限制。变量的默认数据类型为int,默认存储方式为auto,但关键字auto和int不可同时缺省。8.14. auto型局部变量占用动态数据区,当函数调用结束时释放所占内存。register占用CPU中的寄存器,但寄存器不够用时,占用动态数据区。8.15. 全局变
22、量和static型局部变量占用静态数据区,默认初值为相应数据类型的0。8.16. static型局部变量的声明和初始化只执行一次。8.17. 如果全局变量被声明为static型,则其它程序文件不能使用该全局变量。否则,其它程序文件也可使用该全局变量,但使用前应作extern声明。8.18. 被声明为static型的函数,只在本程序文件中有效,不能被其它程序文件调用。否则,其它程序文件也可调用此函数,但调用前应作extern声明。8.19. 常用数学函数在头文件math.h中。掌握基本初等函数。第9章 预处理命令9.1. 预处理命令在程序编译前执行,其主要功能是“文本置换”。9.2. 不带参数宏
23、定义的格式和功能如下:#define 宏名 文本在预处理时,将程序中宏名用相应的文本置换。9.3. 带参数宏定义的格式和功能如下:#define 宏名(形参表列) 文本在预处理时,将程序中带参数的宏用相应的文本置换,且文本中的形参被相应的实参所置换。形参无须且做类型声明。9.4. 终止宏定义的格式如下:格式 #undef 宏名9.5. 宏定义可以引用已有的宏,亦可重新定义所代表的文本。9.6. 预处理命令无须以分号结尾,否则分号也参与置换。9.7. #include命令的格式和功能如下:格式一:#include 文件名格式二:#include 在预处理时,用指定文件置换本命令加载文件。置换后,
24、被包含文件成为本文件的一部分,其函数、全局变量等均可在本文件中直接使用,无须作extern声明。前一种格式先在当前目录中找指定文件,如果未找到,方到存放C头文件的目录中查找。后一种格式直接到存放C头文件的目录中查找指定文件。9.8. 条件编译命令的格式和功能如下:#ifdef 宏名 程序段1 #else 程序段2 #endif在预处理时,如果指定的宏名已定义,则用程序段1置换本命令,否则用程序段2置换本命令。当程序段2为空时,#else可省略(下同)。#ifndef 宏名 程序段1 #else 程序段2 #endif在预处理时,如果指定的宏名未定义,则用程序段1置换本命令,否则用程序段2置换本
25、命令。格式三:#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) 单目运算有六个:、*、+、-、sizeof。(2) 双目运算有四种:-、关系运算、逻辑运算、赋值运算。(3) 指针与整数间的运算有三个:+、-、 。(4) 强制类型转换运算:( )。(5) 结构体成员运算:-其中,+、-、+、-、+=、-=均以基类型数据为基本单位。10.6. 一维数组的数
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1