二级C讲座第一部分

上传人:pu****.1 文档编号:573288037 上传时间:2024-08-14 格式:PPT 页数:180 大小:1.86MB
返回 下载 相关 举报
二级C讲座第一部分_第1页
第1页 / 共180页
二级C讲座第一部分_第2页
第2页 / 共180页
二级C讲座第一部分_第3页
第3页 / 共180页
二级C讲座第一部分_第4页
第4页 / 共180页
二级C讲座第一部分_第5页
第5页 / 共180页
点击查看更多>>
资源描述

《二级C讲座第一部分》由会员分享,可在线阅读,更多相关《二级C讲座第一部分(180页珍藏版)》请在金锄头文库上搜索。

1、二级二级C考前冲刺培训考前冲刺培训1为什么要选择二级为什么要选择二级Cv给给C语言平反:语言平反: C语言并不难,只是很灵活而已。语言并不难,只是很灵活而已。vC语言的特点:语言的特点:语言简洁、紧凑、灵活语言简洁、紧凑、灵活运算符和数据类型丰富运算符和数据类型丰富程序设计结构化、模块化程序设计结构化、模块化生成目标代码质量高生成目标代码质量高v对工科的学生的职业发展有利对工科的学生的职业发展有利v学会了学会了C语言,再学习其他语言容易多了语言,再学习其他语言容易多了2提纲提纲v0.二级二级C简介简介v1.如何复习如何复习v2.考试大纲(考试大纲( 依照大纲复习)依照大纲复习)v3.模拟软件模

2、拟软件30.二级二级C简介简介v0.0 考试形式及题型考试形式及题型v0.1 年全国计算机等级考试调整方案年全国计算机等级考试调整方案二级C讲座 二级C讲座 4v 二级二级C C考试包括笔试和上机两部分。只有考试包括笔试和上机两部分。只有一门合格的,下次考试合格的一门可以免一门合格的,下次考试合格的一门可以免考,两部分考试均合格者,由教育部颁发考,两部分考试均合格者,由教育部颁发合格证书。合格证书。v 笔试笔试:每年两次,三月的最后一个星期:每年两次,三月的最后一个星期六和九月最后一个星期六六和九月最后一个星期六。v 上机上机:从笔试当天下午开始,考点根据:从笔试当天下午开始,考点根据考生数量

3、和设备情况安排。考生数量和设备情况安排。v 0.1 考试时间考试时间5v 笔试笔试:v 9090分钟,满分分钟,满分100100分,含公共基础分,含公共基础3030分。分。v 4040个个选择选择题,共题,共7070分;分;v 1515个个填空填空题,共题,共3030分。分。v 上机上机:v 9090分钟,满分分钟,满分100100分。分。v 填空填空,3030分,分,3 3个空;个空;v 改错改错,3030分,分,2 23 3个错;个错;v 编程编程,4040分,分,1 1个编程。个编程。0.2 考试内容考试内容6二级二级C语言章节分布语言章节分布C概述概述1运算符运算符2循环结构循环结构5

4、数组数组6函数函数7预处理预处理8顺序结构顺序结构3指针指针9构造类型构造类型10位运算位运算11文件文件12选择结构选择结构471.如何复习如何复习v(1)读透读透 C语言课本,至少读语言课本,至少读2遍遍,关键的章节(指针,关键的章节(指针,结构体等)要读结构体等)要读4遍,遍,对书上的重要算法要背下来,如:对书上的重要算法要背下来,如:最大公约数和最小公倍数,求闰年等等。最大公约数和最小公倍数,求闰年等等。 排序:选择排序、冒泡排序排序:选择排序、冒泡排序 判断素数的算法判断素数的算法 计算倒序数的算法:如输入计算倒序数的算法:如输入4321,则转换成:,则转换成:1234 最大值、最小

5、值求法最大值、最小值求法书上所有关于书上所有关于字符串操作字符串操作的例子,要非常熟悉,字符串是重的例子,要非常熟悉,字符串是重点考察的地方点考察的地方指针:理解各种指针操作。(常考)指针:理解各种指针操作。(常考)链表的操作(建立,插入,删除等)也要背下来链表的操作(建立,插入,删除等)也要背下来81.如何复习如何复习v(2)适当的完成书后的习题,并加强)适当的完成书后的习题,并加强上机实践上机实践。学习语言最好的方法就是上机编程。做错的题也学习语言最好的方法就是上机编程。做错的题也要要上机调试上机调试。v(3)历年的真题务必要认真完成。历年的真题务必要认真完成。考察自己掌考察自己掌握的程度

6、,如果还是很生疏,再看书,直到理解握的程度,如果还是很生疏,再看书,直到理解了知识点为止。了知识点为止。v(4)善于总结,把错误的题记在本子上,以后)善于总结,把错误的题记在本子上,以后就不会犯同样的错误就不会犯同样的错误v归结如下:归结如下:v看书看书 做题做题 上机上机 看书看书 总结总结92.考试大纲考试大纲v一:一:C语言程序的结构语言程序的结构v二:数据类型及其运算二:数据类型及其运算v三:基本语句三:基本语句v四:选择结构程序设计四:选择结构程序设计v五:循环结构的设计五:循环结构的设计v六:数组的定义和引用六:数组的定义和引用v七:函数七:函数v八:编译预处理八:编译预处理v九:

7、指针九:指针v十:结构体十:结构体v十一:位运算十一:位运算v十二:文件操作十二:文件操作10第一章第一章 程序设计基本概念程序设计基本概念v 什么是什么是C程序?程序?高级语言高级语言 机器语言机器语言源程序源程序 目标程序目标程序 编译程序11第一章第一章 程序设计基本概念程序设计基本概念v C语言编译语言编译“三部曲三部曲”C源程序源程序 目标文件目标文件 可执行文件可执行文件 .C .obj .exe编译连接12第一章第一章 程序设计基本概念程序设计基本概念v 程序设计过程程序设计过程1.确定数据结构(输入输出)确定数据结构(输入输出)2.确定算法(解决问题的方法和步骤)确定算法(解决

8、问题的方法和步骤)3.编码。(算法代码化)编码。(算法代码化)4.调试程序。(改错和修正)调试程序。(改错和修正)5.整理和写文档。整理和写文档。13第一章第一章 程序设计基本概念程序设计基本概念v 结构化程序的三种结构结构化程序的三种结构1.顺序结构(先后顺序执行)顺序结构(先后顺序执行)2.选择结构(执行不同分支的语句)选择结构(执行不同分支的语句)3.循环结构(重复执行多次或一次不执行循环结构(重复执行多次或一次不执行)14第一章第一章 程序设计基本概念程序设计基本概念v模块化结构模块化结构由一个个功能模块构成的程序结由一个个功能模块构成的程序结构为模块化结构。构为模块化结构。15一:一

9、:C语言程序的结构语言程序的结构v考点考点1:C程序结构特征:程序结构特征:v(1) main是主函数名,是主函数名,C语言规定必须用语言规定必须用main作作为主函数名。其后的为主函数名。其后的“()()”可以是空的,但不可以是空的,但不能省略。一个能省略。一个C程序可以包含任意多个不同的函程序可以包含任意多个不同的函数,但是数,但是必须有且只有一个主函数必须有且只有一个主函数。v(2) 函数体由一对大括号函数体由一对大括号“ ”括起来的语句集括起来的语句集合构成。函数体中一般包含变量定义语句和执行合构成。函数体中一般包含变量定义语句和执行语句,且语句,且执行语句必须放在定于语句之后执行语句

10、必须放在定于语句之后v(3) 每个语句和变量定义的最后必须要有一个每个语句和变量定义的最后必须要有一个分分号号16一:一:C语言程序的结构语言程序的结构v考点考点1:C程序结构特征程序结构特征v(4) #include “stdio.h”通常称为命令行,必通常称为命令行,必须以须以“#”号开头,最后不能加号开头,最后不能加“;”,“stdio”是系统提供的文件名,该文件中包含是系统提供的文件名,该文件中包含着有关输入着有关输入/输出函数的信息。输出函数的信息。调用不同的库函调用不同的库函数,应当包含不同的头文件数,应当包含不同的头文件17vC程序的构成和格式程序的构成和格式 任何函数(包括主函

11、数main())都是由函数说明和函数体两部分组成。 其一般结构如下: 函数类型 函数名(函数参数表) /*函数说明部分*/ 说明语句部分; /*函数体部分*/ 执行语句部分; 18vC程序的构成和格式程序的构成和格式v C C语言是由函数组成的语言是由函数组成的 一个一个C C源程序可由一个源程序可由一个mainmain函数和若干个函数和若干个其他函数组成,其中必须有一个且只能有其他函数组成,其中必须有一个且只能有一个一个mainmain函数。函数。 C C程序总是从程序总是从mainmain函数开函数开始执行。始执行。 19vC程序的构成和格式程序的构成和格式v C C程序语句和数据定义必须

12、以分号程序语句和数据定义必须以分号“;”;”结束。结束。 C C语言中,分号是程序语句的结束标志,语言中,分号是程序语句的结束标志,也是也是C C语句的必要组成部分。语句的必要组成部分。 20vC程序的构成和格式程序的构成和格式vC C语言严格区分大小写。语言严格区分大小写。如变量如变量a a和变量和变量A A系统认定为两个不同的变量。系统认定为两个不同的变量。21vC程序的构成和格式程序的构成和格式vC C语言数据输入和输出是由库函数实现的。语言数据输入和输出是由库函数实现的。 C语言本身没有输入输出语句。输入和输语言本身没有输入输出语句。输入和输入操作是由库函数入操作是由库函数scanf和

13、和printf等函数来等函数来实现的。实现的。 所以一般所以一般C程序都要使用命令行程序都要使用命令行语句语句 #include 注意:命令行以注意:命令行以# #开头,行尾不能加开头,行尾不能加 ; ; 号号22vC程序的构成和格式程序的构成和格式vC C语言用语言用/*/*注释内容注释内容* */ /形式进行程序注释形式进行程序注释在在“/*”和和“*/”之间的所有字符都为注释之间的所有字符都为注释符,符,C系统不对注释符进行编译。(另外系统不对注释符进行编译。(另外可以用可以用/用于单行注释)用于单行注释)注意:注释不能嵌套使用。如注意:注释不能嵌套使用。如/* /*/*/* /*/*/

14、23vC程序书写格式建议程序书写格式建议1. C1. C程序书写格式自由。程序书写格式自由。 对于短语句可以多条语句书写在同一行,也对于短语句可以多条语句书写在同一行,也可以将长语句分写在多行。但需要注意,分行时不能将一个单词分开,可以将长语句分写在多行。但需要注意,分行时不能将一个单词分开,也不能将双引号引起来的字符串分开。我们提倡一行一条语句的风格。也不能将双引号引起来的字符串分开。我们提倡一行一条语句的风格。2.C2.C程序书写采用缩进格式。程序书写采用缩进格式。根据语句的从属关系,程序书写时采用缩根据语句的从属关系,程序书写时采用缩进格式,使程序语句的层次结构清晰,提高程序的可读性。同

15、一层次语进格式,使程序语句的层次结构清晰,提高程序的可读性。同一层次语句要左对齐,不同层次的语句要缩进若干个字符,这样程序层次清楚,句要左对齐,不同层次的语句要缩进若干个字符,这样程序层次清楚,便于阅读和理解。便于阅读和理解。 3.3.程序中适当使用注释信息。程序中适当使用注释信息。在书写程序时,适当地加入注释同样可在书写程序时,适当地加入注释同样可增加程序的可读性。增加程序的可读性。 24v考点考点2:标识符:标识符v要求:能正确区分出要求:能正确区分出标识符是否合法标识符是否合法,此考点经,此考点经常考,常考, 09年年3月试题的第月试题的第11题,题,09年年9月试题的第月试题的第12题

16、题25v标识符标识符是由字母或下划线开头,后面跟是由字母或下划线开头,后面跟着字母、数字或下划线的字符序列着字母、数字或下划线的字符序列。v 例例2.1.12.1.1找出下面列出的找出下面列出的合法合法的标识符的标识符v average, _total, 100, _123, #33, a4average, _total, 100, _123, #33, a4, high-temp, BASIC, 3ball, ab, high-temp, BASIC, 3ball, ab, Ms.JohnMs.Johnv2008.4.122008.4.12以下以下不合法不合法的用户标识符是的用户标识符是v

17、A)printA)print B)FOR B)FOR C)&aC)&a D)_00 D)_00v大写字母和小写字母是不同的字符;通常大写字母和小写字母是不同的字符;通常变量用小写字母表示,常量用大写字母表示。变量用小写字母表示,常量用大写字母表示。26vC程序标识符分类程序标识符分类 v 关键字关键字(由(由C语言预先规定的)语言预先规定的)v预定义标识符预定义标识符(预先定义且具有特殊(预先定义且具有特殊含义)含义)v 用户标识符用户标识符(见名知义)(见名知义)27第二章第二章 C程序设计的初步知识程序设计的初步知识v常量常量 :在程序运行过程中,其值不:在程序运行过程中,其值不能改变的量

18、。能改变的量。v根据数据类型可以分为根据数据类型可以分为v 数值型(有正、负之分)数值型(有正、负之分)【 整型常量(不带小数整型常量(不带小数点)、实型常量(必须用小数点)点)、实型常量(必须用小数点)】、v 字符常量字符常量(如如a、d)和字符串和字符串(“ncre”、”beijing”)常量。常量。28第二章第二章 C程序设计的初步知识程序设计的初步知识v符号常量符号常量 #include main()double r,s,l;Scanf(“%f”,&r);s=3.14*r*r;l=2*3.14*r;printf(s=%f,l=%fn,s,l);n符号常量 #include #defin

19、e PI 3.14main()double r,s,l;r=5.0;s=PI*r*r;l=2*PI*r;printf(s=%f,l=%fn,s,l);29第二章第二章 C程序设计的初步知识程序设计的初步知识v符号常量符号常量 用用#define命令行(不是语句,所以后面不能加分号)定命令行(不是语句,所以后面不能加分号)定义一个字符(通常用大写字母)代表一个常量义一个字符(通常用大写字母)代表一个常量 。 #define PI 3.1415 用字母用字母PI替代替代 3.141530第二章第二章 C程序设计的初步知识程序设计的初步知识v变量变量: 在程序运行过程中值可以改在程序运行过程中值可以

20、改变的量。变的量。v 变量实质上代表了内存中的某个存变量实质上代表了内存中的某个存储单元。储单元。v 变量必须先变量必须先定义定义后使用。后使用。31二:数据类型及其运算二:数据类型及其运算v考点考点1:C的数据类型及其定义方法的数据类型及其定义方法vC语言中有语言中有4种基本常量:种基本常量:整形常量整形常量实型常量实型常量字符常量:一对单引号括起来一个字符字符常量:一对单引号括起来一个字符字符串常量字符串常量v还有转义字符常量和符号常量还有转义字符常量和符号常量32二:数据类型及其运算二:数据类型及其运算v考点考点2:整形常量与变量:整形常量与变量vC语言中整形常量有如下语言中整形常量有如

21、下3种形式:种形式:v(1)十进制)十进制v(2)八进制:用数字)八进制:用数字0开头开头v(3)十六进制:用)十六进制:用0x或或0X开头。开头。v会给出一个整形常量,让你判断该常量是否定义会给出一个整形常量,让你判断该常量是否定义正确。正确。332.2 整型常量整型常量v 在在C C中,有中,有3 3种形式表示整型常量:种形式表示整型常量: v 1.1.十进制整数,如十进制整数,如123, -45123, -45;格式符;格式符%d%d。v 2.2.八进制整数,以八进制整数,以0 0开头,如开头,如023023;格式符;格式符%o%o。v 3.3.十六进制整数,以十六进制整数,以0x0x或

22、或0X0X开头,如开头,如0X3A4B0X3A4B;格式符格式符%x%x或或%X%X。v2004.9.72004.9.7以下程序的运行结果是以下程序的运行结果是v intint a = 25, b = 025, c = 0x25; a = 25, b = 025, c = 0x25;v printf(%d,%d,%dprintf(%d,%d,%d, a, b, c);, a, b, c);v25,21,3725,21,37v2008.9.16C2008.9.16C源程序源程序不能不能表示的数制是表示的数制是v A)A)二进制二进制 B)B)八进制八进制 C)C)十进制十进制 D)D)十六进制十

23、六进制34二:数据类型及其运算二:数据类型及其运算v整型变量整型变量 基本型:基本型: 用用int关键字进行定义关键字进行定义 int k; 一个定义语句用一个;结束一个定义语句用一个;结束 多个变量用,隔开多个变量用,隔开 int k,m,n;(仅开辟存储单元,不存放初值,此时变量值无意义)仅开辟存储单元,不存放初值,此时变量值无意义) 变量初始化:变量初始化:int m=1,n=2,k=3; 35二:数据类型及其运算二:数据类型及其运算v考点考点2:整形常量与变量:整形常量与变量v整形常量与变量有整形常量与变量有v short int(短整形短整形)v int(基本整形基本整形)v lon

24、g int(长整形长整形)v unsigned(无符号型无符号型)v在表示一个长整形常量时,应该在其后加一个字在表示一个长整形常量时,应该在其后加一个字母后缀母后缀L,如,如123L36数据类型名说明Visual C+ 6.0环境Turbo C2.0环境字节取值范围字节取值范围short int短整型2-32768327672-3276832767signed short int带符号短整型2-32768327672-3276832767unsigned short int 无符号短整型20655352065535int整型4-214748364821474836472-3276832767s

25、igned int带符号整型4-214748364821474836472-3276832767unsigned int无符号整型4042949672952065535long int长整型4-214748364821474836474-21474836482147483647signed long int带符号长整型4-214748364821474836474-21474836482147483647unsigned long int无符号长整型40429496729540429496729537二:数据类型及其运算二:数据类型及其运算v考点考点3:整数在内存中的存储形式:整数在内存中的存

26、储形式vC语言中,正整数以原码形式存放语言中,正整数以原码形式存放v负整数以补码形式存放负整数以补码形式存放v整数在内存中的存储形式整数在内存中的存储形式 一个字节中的最右边一位称为最低位;一个字节中的最右边一位称为最低位; 一个字节中的最左边一位称为最高位;一个字节中的最左边一位称为最高位; 例如例如 3 0000001138二:数据类型及其运算二:数据类型及其运算v考点考点4:实型常量,实型变量:实型常量,实型变量v实型常量表示形式:实型常量表示形式:v(1)小数形式)小数形式 带带.v(2)指数形式)指数形式尾数部分尾数部分E 指数部分指数部分v实型变量分为两种:实型变量分为两种:v(1

27、)float:单精度:单精度v(2)double:双精度:双精度39 实型常量实型常量v C C的浮点数就是实数,常量有两种表示形式的浮点数就是实数,常量有两种表示形式:v 1.1.十进制小数形式十进制小数形式v 如:如:0 0. .123, 123, . .123, 123123, 123. ., 123, 123. .0 0。v 2.2.指数形式指数形式v 如:如:123e3 123e3 和和 123E3 123E3 都代表都代表 12310123103 3。v 注意:注意:字母字母e e之前必须有数字,且之前必须有数字,且e e后面的后面的指数必须为整数指数必须为整数。v 例例2.3.1

28、2.3.1以下以下合法合法的数值常量是的数值常量是v A)e3 B)1.e1 C)8.0E0.5 D)0678A)e3 B)1.e1 C)8.0E0.5 D)0678402.4 字符常量字符常量2-1A = 65a = 97 = 320 = 48常见字符常见字符常见字符常见字符的的的的ASCIIASCII码码码码412.4 字符常量字符常量2-2v2007.4.272007.4.27已知大写字母已知大写字母A A的的ASCIIASCII码是码是65,65,小写字母小写字母a a的的ASCIIASCII码是码是97,97,以下以下不能不能将变量将变量c c中大写字母转换为对应小写字母的语句是中大

29、写字母转换为对应小写字母的语句是v A)cA)c = (c - A) % 26 + a = (c - A) % 26 + av B)cB)c = c + 32 = c + 32v C)cC)c = c - A + a = c - A + av D)cD)c = (A + c) % 26 - a = (A + c) % 26 - a整型和字符型通用整型和字符型通用。42二:数据类型及其运算二:数据类型及其运算v考点考点5:C运算符的种类、运算优先级和结合性(常考运算符的种类、运算优先级和结合性(常考)v算术运算符:(算术运算符:(+ - * / % + -)v关系运算符:(关系运算符:( = !

30、=)v逻辑运算符:(!逻辑运算符:(! & |)v位运算符位运算符 :(:( | &)v赋值运算符:(赋值运算符:(= 及其扩展)及其扩展)v条件运算符:(条件运算符:(?:)v逗号运算符:(逗号运算符:(,)v指针运算符:(指针运算符:(* &)v求字节数求字节数 :(:(sizeof)v强制类型转换:(类型)强制类型转换:(类型)v分量运算符:(分量运算符:(. -)v下标运算符:(下标运算符:()43.简称简称 含义含义运算符运算符数目数目 结合结合单单单目单目+, -, !+, -, !单目单目算算算术算术* *, /, %, /, %双目双目+, -+, -双目双目关关关系关系, =

31、, , , =, , =双目双目=, !=, !=双目双目逻逻逻辑逻辑&双目双目|双目双目条条条件条件? :? :三目三目赋赋赋值赋值 =,+=,-=,*=,/=,%=,+=,-=,*=,/=,%= 双目双目逗逗逗号逗号, ,44v 算术表达式算术表达式 基本算术表达式:基本算术表达式: +、-、*、/、%(%运算对象为整型)运算对象为整型) 注意:注意:v+、-可以看做单目,也可看做双目运算符号。可以看做单目,也可看做双目运算符号。v 双目运算符两边运算数的类型一致,则所得结果的双目运算符两边运算数的类型一致,则所得结果的类型与运算数的类型一致。如:类型与运算数的类型一致。如:1.0/2.0

32、=0.5 =0;v 若不一致,自动进行类型转换,转换的原则为若不一致,自动进行类型转换,转换的原则为“就就大大”v 所有实型数运算都以双精度方式进行。所有实型数运算都以双精度方式进行。 452.5 算术运算符算术运算符v定理一定理一:两个整数进行算术运算,两个整数进行算术运算,结果还是整数。公式表示:结果还是整数。公式表示:7/4 = 17/4 = 1。v2006.4.142006.4.14表达式表达式3.6-5/2+1.2+5%23.6-5/2+1.2+5%2的值是的值是 A)4.3 B)4.8 C)3.3 D)3.8A)4.3 B)4.8 C)3.3 D)3.8v2005.9.192005

33、.9.19以下以下不能不能正确计算代数式值的是正确计算代数式值的是v A)1/3*sin(1/2)*sin(1/2)A)1/3*sin(1/2)*sin(1/2)v B)sin(0.5)*sin(0.5)/3 B)sin(0.5)*sin(0.5)/3v C)pow(sin(0.5),2)/3 C)pow(sin(0.5),2)/3v D)1/3.0*pow(sin(1.0/2),2) D)1/3.0*pow(sin(1.0/2),2)46v2008.9.62008.9.6设变量设变量a a和和b b已正确定义并且赋已正确定义并且赋初值,请写出与初值,请写出与a-=a-=a+ba+b等价的赋值

34、表达式等价的赋值表达式2.6 赋值运算符赋值运算符v语录一语录一:变量某一时刻只能保存一变量某一时刻只能保存一个值个值。v1616v 例例2.6.12.6.1以下程序运行后,以下程序运行后,a a的值是的值是v intint a = 2; a = 2;v a += a *= a + a; a += a *= a + a;va = -ba = -b472.7 自增自减运算符自增自减运算符v 在自增运算符与赋值运算符同时使用时,在自增运算符与赋值运算符同时使用时,a+a+与与+a+a有区别。例如,当有区别。例如,当a = 3a = 3时:时:v b = +a; b = +a; 等价于:等价于: +

35、a, b = a+a, b = a; ;v b = a+; b = a+; 等价于:等价于: b = a, a+b = a, a+; ; v2007.4.182007.4.18设有定义:设有定义:intint k = 0; k = 0; 以下以下选项的四个表达式中与其他三个表达式的选项的四个表达式中与其他三个表达式的值不相同的是值不相同的是v A)kA)k+ + B)kB)k += 1 += 1 C)+kC)+k D)kD)k + + 1 148v 赋值表达式赋值表达式 “=”赋值运算符,赋值运算的功能是先求出右赋值运算符,赋值运算的功能是先求出右边表达式的值,然后把此值赋给边表达式的值,然后

36、把此值赋给 赋值号左边赋值号左边的变量。的变量。注意:注意: 赋值运算符优先级别仅高于逗号运算符;赋值运算符优先级别仅高于逗号运算符;且结合性为自右向左;赋值表达式的值为最且结合性为自右向左;赋值表达式的值为最左边变量所得的新值。左边变量所得的新值。 a=3+449v 复合赋值表达式复合赋值表达式 += n+=2 n=n+2 -= n-=2 n=n-2 *= n*=2 n=n*2 /= n/=2 n=n/2 %= n%=2 n=n%250v关系运算关系运算:比较运算比较运算,进行两个数的比较进行两个数的比较,判断比较的结果是否符合指定的条件判断比较的结果是否符合指定的条件.v关系运算符关系运算

37、符: = =!=小于小于 小与等于小与等于 大于大于 大于等于大于等于 等于不等于等于不等于 51v注意:注意:1.两个字符之间不允许有空格两个字符之间不允许有空格2.关系运算符是双目运算符,具有从左至右的关系运算符是双目运算符,具有从左至右的结合性结合性3.、=优先级相同,但高于优优先级相同,但高于优先级相同的先级相同的=、!=如如a=b关系运算符优先级关系运算符优先级赋赋值运算符优先级值运算符优先级 如如 a=b = = b a; y = c b b a; y = c b a;v2005.4.92005.4.9设设a = 10; b = 20; a = 10; b = 20; 则则c c的

38、值是的值是v c = (a % b 1);c = (a % b 1);v2007.4.212007.4.21当当x x为大于为大于1 1的奇数时,值为的奇数时,值为0 0的是的是v A)xA)x % 2 = 1 % 2 = 1 B)xB)x / 2 / 2v C)xC)x % 2 != 0 % 2 != 0 D)xD)x % 2 = 0 % 2 = 0v0 0,1 1v0 053v逻辑运算符逻辑运算符 &逻辑逻辑“与与”双目双目 | 逻辑逻辑“或或”双目双目 ! 逻辑逻辑“非非”单目单目结合性:从左至右结合性:从左至右优先级:优先级:!&| 如如 b|c&!d54v逻辑运算规则逻辑运算规则 非

39、运算非运算!0为为1 !1为为0是否是否 与运算与运算1&1为为1同时满足条件同时满足条件 0&1 1&0 0&0 为为0 或运算或运算 0|0为为0不满足任何一个条件不满足任何一个条件 0|1 1|0 1|1为为552.9 逻辑运算符逻辑运算符2-1 C C在给出逻辑运算值时,以在给出逻辑运算值时,以1 1代表真,以代表真,以0 0代表代表假。但在判断一个量是真还是假时,以假。但在判断一个量是真还是假时,以0 0代表假,代表假,非非0 0的数值作为真。的数值作为真。v2005.9.232005.9.23若有若有intint a = 2, b = 3, c = a = 2, b = 3, c

40、= 4; 4; 则值为则值为0 0的表达式是的表达式是v A)(!aA)(!a = 1) & (!b = 0) = 1) & (!b = 0)v B)(aB)(a b) & !c | 1 b?a:b;572.10 条件运算符条件运算符v 条件运算符具有右结合性。条件运算符具有右结合性。AAb?a:bb?a:bv a b ? a : c d ? c : d; a b ? a : c d ? c : d; 相当于:相当于:v a b ? a : (c d ? c : d);a b ? a : (c d ? c : d);v2005.9.242005.9.24以下程序运行后,以下程序运行后,k k的

41、值是的值是v intint k = 0, a = 1, b = 2, c = 3; k = 0, a = 1, b = 2, c = 3;v k = a b ? b : a; k = a c ? c : k;k = k c ? c : k;v2005.4.222005.4.22若若a = 1, b = 4, c = 3, d = 2a = 1, b = 4, c = 3, d = 2;则表达式则表达式a b ? a : c d ? c : da b ? a : c 0) 0) B)(x-yB)(x-y0)0)v C)(x-yC)(x-y0 | 0) 0) D)(x-yD)(x-y=0)=0)v

42、2008.9.172008.9.17与与(w)?(-x):(+y)(w)?(-x):(+y)中中w w等价的是等价的是v A)w=1 B)w=0 C)w!=1 D)w!=0 A)w=1 B)w=0 C)w!=1 D)w!=065v2008.9.132008.9.13以下以下不能不能作为作为C C合法常量的是合法常量的是v A)cd B)0.1e+6 C)a D)011 A)cd B)0.1e+6 C)a D)0112.13 习题演练习题演练6-6v2008.9.182008.9.18以下程序运行后,以下程序运行后,w w的值是的值是v intint w = A, x = 14, y = 15;

43、 w = A, x = 14, y = 15;v w = (x | y) & (w a); w = (x | y) & (w a);v2008.9.142008.9.14以下选项中以下选项中正确正确的定义语句是的定义语句是v A)double a; b; B)double A)double a; b; B)double a=b=7;a=b=7;v C)double a=7, b=7; D)double, a, C)double a=7, b=7; D)double, a, b;b;v1 166二:数据类型及其运算二:数据类型及其运算v考点考点6:不同类型数据间的转换与运算:不同类型数据间的转换

44、与运算强制类型转换表达式强制类型转换表达式 (类型名)(表达式)(类型名)(表达式) 如如 (int)3.23467二:数据类型及其运算二:数据类型及其运算v考点考点7:C表达式类型(赋值表达式,算术表达式,关表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则求值规则v逻辑表达式的逻辑表达式的“短路短路”现象现象( (经常考这个经常考这个) )v表达式表达式 a+&b+ 若若a值为值为0,a+为为0,可判断整个表达式的值为,可判断整个表达式的值为0(因为因为&,任何一个数与,任何一个数与0与都为与都为0

45、)。v表达式表达式 a+|b+ 若若a值为值为1,a+为为1,可判断整个表达式的值为,可判断整个表达式的值为1(因为因为|,任何一个数与任何一个数与1或都为或都为1)。注意:题目会要求输出注意:题目会要求输出b b的值的值683.0 考纲要求考纲要求v 考纲要求考纲要求v 1.1.表达式语句,空语句,复合语句。表达式语句,空语句,复合语句。v 2.2.输入输出函数的调用,正确输入数据输入输出函数的调用,正确输入数据并正确设计输出格式。并正确设计输出格式。顺序结构顺序结构369第三章第三章 顺序结构顺序结构v顺序结构:在程序中按语句出现的顺顺序结构:在程序中按语句出现的顺序逐条执行。序逐条执行。

46、 v赋值语句:在赋值表达式的尾部加上赋值语句:在赋值表达式的尾部加上一个一个“;”号。应出现在函数的可号。应出现在函数的可执行部分。执行部分。 70第三章第三章 顺序结构顺序结构v 数据输出:把数据从计算机内部送数据输出:把数据从计算机内部送到计算机外部设备上的操作。到计算机外部设备上的操作。v 在在VC 6.0环境下,在调用输入和输环境下,在调用输入和输出的库函数之前要求在源程序中出出的库函数之前要求在源程序中出现包含头文件现包含头文件stdio.h的命令行。的命令行。 71第三章第三章 顺序结构顺序结构v printf函数函数 printf(格式控制,输出项格式控制,输出项1,输出项,输出

47、项2,) 格式控制是字符串形式,作用是将要输格式控制是字符串形式,作用是将要输出的数据按照指定的格式输出和提供需出的数据按照指定的格式输出和提供需要原样输出的文字或字符。要原样输出的文字或字符。 如:如:d%、f%、e% 72第三章第三章 顺序结构顺序结构v 格式字符格式字符 %c %d %o (%#o) %x (%#x) %u %f %e %s %p %v 长度修饰符长度修饰符 在在 %和格式字符之间,可以加入长度修饰和格式字符之间,可以加入长度修饰符,以保证数据输出格式的正确和对齐。符,以保证数据输出格式的正确和对齐。长整长整%ld 短整短整 %hd73第三章第三章 顺序结构顺序结构v 宽

48、度说明:宽度说明: %和格式字符之间插入一个整数常数来和格式字符之间插入一个整数常数来指定输出的宽度指定输出的宽度n 对于对于float和和double的实数,可以用的实数,可以用n1.n2的形式来输出,或者用的形式来输出,或者用.n2输出。输出。 在在 %d 和宽度之间加和宽度之间加“-”实现数据左对实现数据左对齐齐 加加“+”在每一个数字前面带正负号。在每一个数字前面带正负号。 74第三章第三章 顺序结构顺序结构v 注意事项注意事项 一般在多个输出数之间留逗号、空格或一般在多个输出数之间留逗号、空格或者回车。者回车。 要输出要输出%符号,在格式控制符中用符号,在格式控制符中用% print

49、f函数有返回值,返回值是本次调用函数有返回值,返回值是本次调用输出字符的个数,包括回车等控制符。输出字符的个数,包括回车等控制符。 75第三章第三章 顺序结构顺序结构v scanf函数函数 scanf(格式控制,输入项格式控制,输入项1,输入项,输入项2,) 主要作用是指定输入时的数据转换格式主要作用是指定输入时的数据转换格式 ,输入项之间用逗号隔开,对于输入项之间用逗号隔开,对于int,float,double类型变量,在变量之前必须加类型变量,在变量之前必须加&符号作为输入项。符号作为输入项。 76第三章第三章 顺序结构顺序结构v 格式字符格式字符 %c %d %i %o %x %u %f

50、 %e %s 77第三章第三章 顺序结构顺序结构v输入整数或者实数这类数值型数据时,输入整数或者实数这类数值型数据时,输入的数据之间必须用空格、回车符号输入的数据之间必须用空格、回车符号等间隔符号隔开。等间隔符号隔开。v 可以指定输入数据所指定的宽度可以指定输入数据所指定的宽度v 一般在使用输入函数前使用输出函数对一般在使用输入函数前使用输出函数对输入数据进行说明,且尽量不要使用通输入数据进行说明,且尽量不要使用通配符。配符。 78第三章第三章 顺序结构顺序结构v复合语句和空语句复合语句和空语句 语句语句1; 语句语句2; 语句语句n; 79第三章第三章 顺序结构顺序结构v 空语句空语句 只有

51、一个分号的语句。只有一个分号的语句。 80三:基本语句三:基本语句v考点:输入输出函数:考点:输入输出函数:printf,scanfv对于对于printf:重点掌握指定宽度和小数点位数的输重点掌握指定宽度和小数点位数的输出出v对于对于scanf:掌握输入不同的数据类型的格式掌握输入不同的数据类型的格式813.2 习题演练习题演练5-1v2005.9.352005.9.35以下程序运行时输入:以下程序运行时输入:aa ,叙述,叙述正确正确的是的是v char c1 = 1, c2 = 2;char c1 = 1, c2 = 2;v c1 = c1 = getchargetchar(); c2 =

52、 (); c2 = getchargetchar();();v putchar(c1); putchar(c2); putchar(c1); putchar(c2);v A) A)变量变量c1c1被赋予字符被赋予字符a a,c2c2被赋予回车符被赋予回车符v B)B)程序将等待用户输入第程序将等待用户输入第2 2个字符个字符v C)C)变量变量c1c1被赋予字符被赋予字符a a,c2c2中仍是原有字中仍是原有字符符2 2v D) D)变量变量c1c1被赋予字符被赋予字符a a,c2c2中将无确定值中将无确定值823.2 习题演练习题演练5-2v2006.4.292006.4.29有以下程序有以

53、下程序v char c1, c2, c3, c4, c5, c6;char c1, c2, c3, c4, c5, c6;v scanf(%c%c%c%cscanf(%c%c%c%c, &c1, &c2, &c3, &c4);, &c1, &c2, &c3, &c4);v c5 = c5 = getchargetchar();(); c6 = c6 = getchargetchar();();v putchar(c1);putchar(c1); putchar(c2); putchar(c2); v printf(%c%cnprintf(%c%cn, c5, c6);, c5, c6);v 程

54、序运行程序运行时时输入输入下列内容,则下列内容,则输出结果是输出结果是v 123123 v 4567845678 v A)1267 A)1267 B)1256 B)1256 C)1278 C)1278 D)1245 D)1245833.2 习题演练习题演练5-3v2002007 7. .9 9. .1818 有以下程序段有以下程序段v intint j; j; v float y; float y;v char name50; char name50;v scanf(%2d%f%s, &j, &y, name); scanf(%2d%f%s, &j, &y, name);v 程序运行时输入:程

55、序运行时输入:55566 7777abc55566 7777abc ,则,则y y的值为的值为v A)55566.0 B)566.0A)55566.0 B)566.0v C)7777.0 D)566777.0 C)7777.0 D)566777.0843.2 习题演练习题演练5-4v2006.9.182006.9.18运行时输入:运行时输入:876 543.0876 543.0 。则则变量变量a a和和b b的值分别是的值分别是v intint a; float b; a; float b; v scanf(%scanf(%2d2d% %f f, &a,&a, &b); &b); v A)87

56、6A)876和和543.000000 B)87543.000000 B)87和和6.0000006.000000v C)87C)87和和543.000000 543.000000 D)76D)76和和543.000000543.000000v2005.4.62005.4.6若若输入输入:10 20 3010 20 30 ,则输出,则输出v intint i = 0, j = 0, k = 0; i = 0, j = 0, k = 0;v scanf(%dscanf(%d% %* *d%dd%d, &i, &j, &k);, &i, &j, &k);v printf(%dprintf(%d, ,

57、%d%d, ,%d%d, i, j, k);, i, j, k);v10,30,010,30,0853.2 习题演练习题演练5-5v2005.4.112005.4.11已知字符已知字符A A的的ASCIIASCII代码值为代码值为6565,以下程序运行时若从键盘输入以下程序运行时若从键盘输入:B33B33 。输出结果是输出结果是v char a, b;char a, b;v a = a = getchargetchar();();v scanf(%dscanf(%d, &b);, &b);v a = a - A + 0; a = a - A + 0;v b = b * 2; b = b * 2

58、;v printf(%cprintf(%c, ,%cn%cn, a, b);, a, b);v1,B1,B86四:选择结构程序设计四:选择结构程序设计v考点考点1:用用if语句实现选择结构语句实现选择结构首先判断首先判断if后面圆括号中的表达式的值,若为非后面圆括号中的表达式的值,若为非0值,值,则执行紧接着的语句则执行紧接着的语句v考点考点2:条件运算符及条件表达式(:条件运算符及条件表达式(常考常考)一般形式:一般形式: expr1 ? expr2 : expr3考试口诀:考试口诀:真前假后真前假后87if语句的三种形式语句的三种形式:形式一:形式一:格式格式: if (expressio

59、n) statement执行过程执行过程:exprstatement非0=0例:if (xy) printf(“%d”,x);88形式二: 格式:ifif (expression) statement1 elseelse statement2执行过程:exprstatement1statement2非0=0例: if(xy) max=x;else max=y;89形式三:形式三:格式格式:if ( expr1 ) statement1else if (expr2 ) statement2else if (expr3 ) statement3. else statement n 90if()if

60、()if()else.else.else.if (expr1) if (expr2) statement1else statement2 内嵌if如果如果if和和else的数目不一样,可以加花括弧来确定配对关系。的数目不一样,可以加花括弧来确定配对关系。 if ( ) if( ) statement1 else statement2if else 配对原则:配对原则:缺省缺省 时,时,else总是它上面离它最近的总是它上面离它最近的未配对的未配对的if配对配对91四:选择结构程序设计四:选择结构程序设计v考点考点3:用:用switch语句实现多分支选择结构语句实现多分支选择结构若想执行一个若想

61、执行一个case分支后立即跳出分支后立即跳出switch语句,就语句,就必须在此分支的最后添加一个必须在此分支的最后添加一个break语句。语句。若没有遇到若没有遇到break,就自动进入下一个就自动进入下一个case继续执行,继续执行,而不再判断是否匹配,直到遇到而不再判断是否匹配,直到遇到break语句才停止执语句才停止执行行v考点考点4:选择结构的嵌套:选择结构的嵌套会出现多个会出现多个if和多个和多个else重叠的情况,此时,要特别重叠的情况,此时,要特别注意注意if和和else的配对的问题。配对的规则是:的配对的问题。配对的规则是:else总总是与它前一个最近的是与它前一个最近的if

62、配对配对92switch( 表达式) case E1: 语句组 1; break; case E2: 语句组 2; break; . case En: 语句组 n; break; default: 语句组 ; break; switch表达式语句组1语句组2语句组n语句组.E 1E 2Endefaultcase 一般形式:934.1 if语句语句3-1v语录三语录三:elseelse总是与它前面最靠近总是与它前面最靠近的尚未配对的的尚未配对的ifif配对使用配对使用。v intint a = 3, b = 0; a = 3, b = 0;v if (a 0) if (a 0)v ifif (a

63、 8) (a 8)v b = 5; b = 5;v elseelsev b = 7; b = 7;v printf(%dprintf(%d, b);, b);v 以下左右两个程序段等价,输出值都是:以下左右两个程序段等价,输出值都是:0 0v intint a = 3, b = 0; a = 3, b = 0;v if (a 0) if (a 0)v ifif (a 8) (a b) a = b, b = c if (a b) a = b, b = c; ; c = a; c = a;v printf(%d,%d,%dprintf(%d,%d,%d, a, b, c);, a, b, c);v

64、10,50,1010,50,10954.1 if语句语句3-3v2005.9.72005.9.7以下程序的运行结果是以下程序的运行结果是v intint a = 1, b = 2, c = 3; a = 1, b = 2, c = 3;v if (c if (c = = a) a) printf(%dprintf(%d, c);, c);v else else printf(%dprintf(%d, b);, b);v2005.4.82005.4.8以下程序的运行结果是以下程序的运行结果是v intint a = 3, b = 4, c = 5, t = 99; a = 3, b = 4, c

65、 = 5, t = 99;v if (b a & a c) t = a; a = c; c = t; if (b a & a c) t = a; a = c; c = t;v if (a c & b c) t = b; b = a; a = t; if (a c & b 3a3之类的表达式。之类的表达式。v 4.case4.case后若有多个语句,后若有多个语句,可以可以不用不用括起来。括起来。v 5.default5.default子句是可选项,子句是可选项,可以可以省略不用。省略不用。v 6.6.各各casecase和和defaultdefault的先后顺序的先后顺序可以可以变动。变动。v

66、 7.case7.case与常量表达式之间与常量表达式之间一定一定要加空格。要加空格。974.2 switch语句语句4-2v2006.4.192006.4.19-1-1若有若有intint a a = = 1,1, b b = = 3,3, c c = = 2;2; float xfloat x = = 1.5;1.5; 则则正确正确的的switchswitch语句是语句是v A)switchA)switch (x) (x)v v case 1.0case 1.0:printf(*n);printf(*n);v case 2.0case 2.0:printf(*n);printf(*n);v

67、 v B)switchB)switch ( (int)xint)x););v v case 1case 1:printf(*n);printf(*n);v case 2case 2:printf(*n);printf(*n);v 984.2 switch语句语句4-3v2006.4.192006.4.19-2-2 若有若有intint a a = = 1,1, b b = = 3,3, c c = = 2;2; float xfloat x = = 1.5;1.5; 则则正确正确的的switchswitch语句是语句是v C)switchC)switch ( (a+ba+b) )v v cas

68、e 1case 1:printf(*n);printf(*n);v case 2+1case 2+1:printf(*n);printf(*n);v v D)switchD)switch ( (a+ba+b) )v v case 1 case 1:printf(*n);printf(*n);v case case c c:printfprintf(*n);(*n);v 994.2 switch语句语句4-4v2007.4.9int a=2, b=7, c=5; 2007.4.9int a=2, b=7, c=5; 则输出则输出v switch (a 0)switch (a 0)v v case

69、 1: switch (b 0) case 1: switch (b 0)v v case 1: case 1: printfprintf(); break;(); break;v case 2: case 2: printfprintf(!); break;(!); break;v v case 0: switch (c=5) case 0: switch (c=5)v v case 0: case 0: printfprintf(*); break;(*); break;v case 1: case 1: printfprintf(#); break;(#); break;v case 2

70、: case 2: printfprintf($); break; ($); break; v v default: default: printfprintf(&);(&);v v#&#&100五:循环结构程序设计五:循环结构程序设计v考点考点1:for循环结构循环结构vfor(expr1 ; expr2 ; expr3)v expr2循环体循环体假假(0)真真(非非0)forexpr1expr3101forfor语句语句一般形式:一般形式:for(expr1 ; expr2 ; expr3) 循环体语句;循环体语句;各表达式的作用:各表达式的作用:expr1赋初值赋初值expr2执行循环的

71、条件执行循环的条件expr3步长步长102v for语句及其循环语句及其循环 for(表达式表达式1;表达式表达式2;表达式表达式3) 循环体循环体 例如例如: for(k=0;k 0; x-) for ( ; x 0; x-)v v if (x % 3) if (x % 3)v v printf(%dprintf(%d, x-);, x-);v continue; continue;v v printf(%dprintf(%d, -x);, -x);v v854285421045.3 for语句语句5-2v2005.4.412005.4.41以下程序运行后,以下程序运行后,b b的值是的值是

72、v intint a = 1, b; a = 1, b;v for (b = 1; b = 10; b+) for (b = 1; b = 8) if (a = 8)v break;break;v if (a % 2 = 1) if (a % 2 = 1)v v a += 5;a += 5; continue;continue;v v a -= 3; a -= 3;v v4 41055.3 for语句语句5-3v2002007 7.9.9.2222以下程序的运行结果是以下程序的运行结果是v int y = 9; int y = 9;v for ( ; y 0; y-) for ( ; y 0;

73、 y-)v if (y % 3 = 0) printf(%d, -y); if (y % 3 = 0) printf(%d, -y);v852852v2006.4.132006.4.13填空实现:输出填空实现:输出100100以内以内( (不含不含100)100)能被能被3 3整除且个位数为整除且个位数为6 6的所有整数的所有整数v for (i = 0; for (i = 0; ; i+); i+)v v j = i * 10 + 6; j = i * 10 + 6;v if ( if ( ) continue; ) continue;v printf(%dprintf(%d, j);, j

74、);v vi 10i 10vj % 3 != 0j % 3 != 01065.3 for语句语句5-4v2005.9.102005.9.10 实现:实现:s s = = 1+12+123+1234+123451+12+123+1234+12345v intint t = 0, s = 0, i; t = 0, s = 0, i;v for (i = 1; i = 5; i+)for (i = 1; i = 5; i+)v v t = i +t = i + ; ; v s = s + t; s = s + t; v vt * 10t * 10v2002007 7.9.9.2424以下程序运行后,

75、以下程序运行后,m m的值是的值是v intint i, j, m = 55; i, j, m = 55;v for (i = 1; i = 3; i+) for (i = 1; i = 3; i+)v for (j = 3; j = i; j+) for (j = 3; j = 1; i-) for (i = 3; i = 1; i-)v v sum = 0; sum = 0;v for (j = 1; j = i; j+) for (j = 1; j 0)while (k 0)v v switch (k)switch (k)v v default: break;default: break

76、;v case 1: n += k;case 1: n += k;v case 2:case 2:v case 3: n += k;case 3: n += k;v v k-;k-;v v7 71145.2 do-while语句语句v2007.4.232007.4.23以下程序的运行结果是以下程序的运行结果是v intint k = 5, n = 0; k = 5, n = 0;v dodov v switch (k)switch (k)v v case 1: case 3: n+=1; break;case 1: case 3: n+=1; break;v default: n = 0; k

77、-;default: n = 0; k-;v case 2: case 4: n+=2; k-; case 2: case 4: n+=2; k-; break;break;v v printf(%dprintf(%d, n);, n);v while (k 0 & n 0 & n 5); v23452345115五:循环结构程序设计五:循环结构程序设计v考点考点3:continue和和break语句语句break语句语句v功能:在循环语句和功能:在循环语句和switch语句中语句中,终止并跳出循环体或终止并跳出循环体或开关体开关体v说明:说明:break只能只能终止并跳出终止并跳出最近一层最

78、近一层的结构的结构break不能用于循环语句和不能用于循环语句和switch语句之外的任何其它语句之外的任何其它语句之中语句之中116五:循环结构程序设计五:循环结构程序设计v考点考点3:continue和和break语句语句continue语句语句v功能:结束本次循环,跳过循环体尚未执行的语句,进行功能:结束本次循环,跳过循环体尚未执行的语句,进行下一次是否执行循环体的判断下一次是否执行循环体的判断v仅用于循环语句中仅用于循环语句中117 辅助控制语句辅助控制语句break语句语句功能:在循环语句和功能:在循环语句和switch语句中语句中,终止并跳出终止并跳出循环体或开关体循环体或开关体说

79、明:说明:(1) break只能只能终止并跳出最近一层的结构终止并跳出最近一层的结构(2) break不能用于循环语句和不能用于循环语句和switch语句之语句之外的任何其它语句之中外的任何其它语句之中118n continue语句功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断仅用于循环语句中exprcontinue;假(0)真(非0)while真(非0)docontinue;.expr假(0)whileexpr2continue;.假(0)真(非0)forexpr1expr3119功能:无条件转移语句功能:无条件转移语句功能:无条件转移语句功能:无条件转移语句

80、说明:说明:说明:说明: 不能用整数作标号不能用整数作标号不能用整数作标号不能用整数作标号 只能出现在只能出现在只能出现在只能出现在gotogoto所在函数内所在函数内所在函数内所在函数内, , 且唯一且唯一且唯一且唯一 只能加在可执行语句前面只能加在可执行语句前面只能加在可执行语句前面只能加在可执行语句前面 限制使用限制使用限制使用限制使用gotogoto语句语句语句语句goto语句一般格式:语句一般格式: gotogoto 语句语句语句语句标号标号标号标号; 标号:标号:标号:标号:语句;语句;语句;语句; goto语句语句120五:循环结构程序设计五:循环结构程序设计v考点考点4:循环的

81、嵌套:循环的嵌套v三种循环可互相嵌套三种循环可互相嵌套,层数不限层数不限v外层循环可包含两个以上内循环外层循环可包含两个以上内循环,但不能相互交叉但不能相互交叉v说明:重点是双重说明:重点是双重for循环,很大考生理解不清循环,很大考生理解不清楚。楚。vfor(i=1;i10;i+)v for(j=1;j10;j+)v printf(j=9)?%4dn:%4d,i*j);121第六章第六章 字符型数据字符型数据v 字符型常量字符型常量 C语言中语言中,一个字符常量代表一个字符常量代表ASCII字符字符集集(见附录七见附录七)中的一个字符中的一个字符,用单引号用单引号把一个字符括起来作为字符常量

82、把一个字符括起来作为字符常量. 例如例如:a为标识符为标识符,a为字符型常量为字符型常量. 122第六章第六章 字符型数据字符型数据v 字符型常量字符型常量 注意注意:1. 大写字母和小写字母的大写字母和小写字母的ASCII值不同值不同,因而代表不因而代表不同的字符常量同的字符常量.2. 单引号中的空格也是一个字符常量单引号中的空格也是一个字符常量.3. 字符常量只能包含一个字符字符常量只能包含一个字符.4. 字符常量只能用单引号括起来字符常量只能用单引号括起来,不能用双括号不能用双括号.5. 字符常量在内存中占一个字节字符常量在内存中占一个字节,存放的是字符的存放的是字符的ASCII代码值代

83、码值. 123第六章第六章 字符型数据字符型数据v 字符型常量字符型常量 转义字符常量转义字符常量 特定字符特定字符n 回车回车 反斜杠反斜杠 单引号单引号 “ 双引双引号号ddd 三位八进制代表的一个三位八进制代表的一个ASCII字符字符xhh 二位十六进制代表的一个二位十六进制代表的一个ASCII字符字符注意注意:转义字符常量只代表一个字符转义字符常量只代表一个字符. 124第六章第六章 字符型数据字符型数据v 字符串常量字符串常量 字符串常量是由双引号括起来的一串字字符串常量是由双引号括起来的一串字符符.在在c语言中语言中,系统在每个字符串的最后自系统在每个字符串的最后自动加入一个字符动

84、加入一个字符0作为字符串的结作为字符串的结束标志束标志. 注意注意:“”称为空串称为空串,也是一个字符串常量也是一个字符串常量,占用一个字节的存储空间占用一个字节的存储空间. 125第六章第六章 字符型数据字符型数据v 字符量的运算字符量的运算 在在C程序中程序中,字符量可参与任何整数运算字符量可参与任何整数运算.v 大小写字母的转换大小写字母的转换:大写字母大写字母ASCII值值=小写字母小写字母ASCII值值-32v 可以将数字字符转换成整数值可以将数字字符转换成整数值,也可以也可以将整数值转换成数字字符将整数值转换成数字字符. v 字符量可以进行关系运算字符量可以进行关系运算. 126第

85、六章第六章 字符型数据字符型数据v 字符变量字符变量 用关键字用关键字char进行定义进行定义 char ch1=a; 字符变量可以参与整型变量允许的运算字符变量可以参与整型变量允许的运算,有可以使用与字符处理相关的库函数有可以使用与字符处理相关的库函数. 127第六章第六章 字符型数据字符型数据v 字符的输入和输出字符的输入和输出 printf输出字符时使用格式说明符输出字符时使用格式说明符%c,也可以在也可以在c前加入整数来指定输出字符时所占的宽度前加入整数来指定输出字符时所占的宽度. 用用scanf输入字符时也用格式说明符输入字符时也用格式说明符%c,当当%c一一个接一个时个接一个时,字

86、符之间不应有间隔符号字符之间不应有间隔符号(如回如回车车,空格空格). 128第六章第六章 字符型数据字符型数据v putchar和和getchar输入和输出函数输入和输出函数 putchar输出字符输出字符 putchar(ch); getchar输入字符输入字符 ch=getchar(); 注意注意:只有在用户敲入只有在用户敲入enter键时键时,读入才读入才开始执行开始执行. 1297.0 考纲要求考纲要求v 考纲要求考纲要求v 1.1.库函数的正确调用。库函数的正确调用。v 2.2.函数的定义方法。函数的定义方法。v 3.3.函数的类型和返回值。函数的类型和返回值。v 4.4.形式参数

87、与实在参数,参数值传递。形式参数与实在参数,参数值传递。v 5.5.函数的正确调用,嵌套调用,递归调函数的正确调用,嵌套调用,递归调用。用。v 6.6.局部变量和全局变量。局部变量和全局变量。v 7.7.变量的存储类别(自动,静态,寄存变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。器,外部),变量的作用域和生存期。函数函数7130七:函数七:函数v考点考点1:库函数的正确调用:库函数的正确调用 v使用使用库函数库函数应注意:应注意:v1、函数功能、函数功能v2、函数参数的数目和顺序,及各参数意义和类、函数参数的数目和顺序,及各参数意义和类型型v3、函数返回值意义和类型、函数

88、返回值意义和类型v4、需要使用的包含文件、需要使用的包含文件131函数说明函数说明v对被调用函数要求:对被调用函数要求:必须是必须是已存在已存在的函数的函数库函数库函数: #include 用户自定义函数用户自定义函数: 函数类型说明函数类型说明v函数说明函数说明一般形式:一般形式: 函数类型函数类型 函数名函数名(形参类型形参类型 形参名形参名,. ); 或或 函数类型函数类型 函数名函数名();作用:告诉编译系统作用:告诉编译系统函数类型、参数个数及类型,以便检验函数类型、参数个数及类型,以便检验函数定义函数定义与与函数说明函数说明不同不同函数说明位置:函数说明位置:程序的数据说明部分(函

89、数内或外)程序的数据说明部分(函数内或外)下列情况下,可不作函数说明下列情况下,可不作函数说明v若函数返值是若函数返值是char或或int型型,系统自动按,系统自动按int型处理型处理v被调用函数定义出现在主调函数之前被调用函数定义出现在主调函数之前132七:函数七:函数v考点考点2:函数的定义方法:函数的定义方法v函数类型函数类型 函数名函数名(形参类型说明表形参类型说明表)vv说明部分说明部分v语句部分语句部分vv说明:说明:C语言的基本组成单位是语言的基本组成单位是函数函数v一定要有一定要有:函数名,函数的返回类型,函数的:函数名,函数的返回类型,函数的参数类型。参数类型。v不一定要有不

90、一定要有:形参的名称。:形参的名称。133第七章第七章 函数函数v 函数的定义与返回值函数的定义与返回值 v 函数定义的语法函数定义的语法 函数返回值的类型名函数返回值的类型名 函数名(类型名函数名(类型名 形式参数形式参数1,类型名,类型名 形式参数形式参数2,) 说明部分说明部分 语句部分语句部分 注意:不能在函数的内部定义函数注意:不能在函数的内部定义函数 。 函数名和形式参数都是用户命名的标识符,同一程序中,函数名必须唯一,形式参数名只要在同一函数中唯一即可。若在函数的首部省略了函数返回值的类型名,则默认函数返回值的类型为int类型。除了返回值类型为 int类型的函数外,函数必须先定义

91、(或说明)后调用。若函数只是用于完成某些操作,没有函数值返回,则必须把函数定义成void类型。134第七章第七章 函数函数v 函数的定义与返回值函数的定义与返回值 v 如:如: double add (double a,double b) double s; s=a+b; return s; 函数体中,除形参外,用到的其他变量必须在说明部分进行定义,这些变量(包括形参 ),只在函数被调用时才临时开辟存储单元,当退出函数时,这些临时开辟的存储单元全部被释放掉,因此这种变量只在函数体内部起作用,与其他函数体中的变量互不相干,它们可以和其他函数中的变量同名。135第七章第七章 函数函数v 函数的两种

92、调用方式函数的两种调用方式v函数的一般调用形式为:函数的一般调用形式为: 函数名(实参表)函数名(实参表) 若函数无形参,调用形式为若函数无形参,调用形式为 函数名函数名()一般情况下,可用两种方式调用函数:一般情况下,可用两种方式调用函数: 当所调用的函数用于求出某个值时,函数的调用可作为表达当所调用的函数用于求出某个值时,函数的调用可作为表达式出现在允许表达式出现的任何地方。式出现在允许表达式出现的任何地方。 当函数仅进行某些操作而不返回函数值,这时函数的调用可当函数仅进行某些操作而不返回函数值,这时函数的调用可作为一条独立的语句。作为一条独立的语句。 当实参个数多于一个时,各实参之间用逗

93、号隔开。实参的个数必须与所调函数中的形参相同,类型一一对应匹配。136第七章第七章 函数函数v 函数调用的语法要求函数调用的语法要求v 调用函数时,函数名必须与所调用的函数名字完调用函数时,函数名必须与所调用的函数名字完全一致。全一致。v 实参的个数必须与形参的个数一致。实参可以是实参的个数必须与形参的个数一致。实参可以是表达式,在类型上应按位置与形参一一对应。表达式,在类型上应按位置与形参一一对应。v 函数必须先定义后调用(函数的返回值类型为函数必须先定义后调用(函数的返回值类型为int或或char时除外)时除外).v 函数可以直接或间接的自己调用自己,称为递归函数可以直接或间接的自己调用自

94、己,称为递归调用。调用。 137函数说明函数说明v对被调用函数要求:对被调用函数要求:必须是必须是已存在已存在的函数的函数库函数库函数: #include 用户自定义函数用户自定义函数: 函数类型说明函数类型说明v函数说明函数说明一般形式:一般形式: 函数类型函数类型 函数名函数名(形参类型形参类型 形参名形参名,. ); 或或 函数类型函数类型 函数名函数名();作用:告诉编译系统作用:告诉编译系统函数类型、参数个数及类型,以便检验函数类型、参数个数及类型,以便检验函数定义函数定义与与函数说明函数说明不同不同函数说明位置:函数说明位置:程序的数据说明部分(函数内或外)程序的数据说明部分(函数

95、内或外)下列情况下,可不作函数说明下列情况下,可不作函数说明v若函数返值是若函数返值是char或或int型型,系统自动按,系统自动按int型处理型处理v被调用函数定义出现在主调函数之前被调用函数定义出现在主调函数之前138七:函数七:函数v考点考点3:函数的类型和返回值:函数的类型和返回值 函数中可有多个函数中可有多个return语句语句若无若无return语句,遇到函数结束的语句,遇到函数结束的“”时,时,自动返回调用函数自动返回调用函数若函数类型与若函数类型与return语句中表达式值的类型不语句中表达式值的类型不一致,按前者为准,自动转换一致,按前者为准,自动转换-函数调用函数调用转换转

96、换void型函数:无返回值的函数型函数:无返回值的函数139七:函数七:函数v考点考点4:形式参数与实在参数。:形式参数与实在参数。 v函数的形参和实参具有以下特点:函数的形参和实参具有以下特点:v形参变量只有在被调用时才分配内存单元,在调用结束形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。时,即刻释放所分配的内存单元。v实参实参可以是常量、变量、表达式、函数等,无论实参是可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须何种类型的量,在进行函数调用时,它们都必须具有确具有确定的值定的值,以便把这些值传送给形参。,以便把这些值

97、传送给形参。v实参和形参在数量上,类型上,顺序上应实参和形参在数量上,类型上,顺序上应严格一致严格一致,否,否则会发生类型不匹配则会发生类型不匹配”的错误。的错误。v函数调用中发生的数据传送是单向的函数调用中发生的数据传送是单向的。即只能把实参的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,因此在函数调用过程中,形参的值发生改变,而实参中形参的值发生改变,而实参中的值不会变化。的值不会变化。 140七:函数七:函数v考点考点5 函数的正确调用,嵌套调用,递归调用。函数的正确调用,嵌套调用,递归调用。v典型

98、例题:汉诺塔问题典型例题:汉诺塔问题1417.1 函数的定义函数的定义v2007.4.262007.4.26函数返回值的类型最终取决于函数返回值的类型最终取决于v A)A)函数定义时在函数首部所说明的函数类型函数定义时在函数首部所说明的函数类型v B)returnB)return语句中表达式值的类型语句中表达式值的类型v C)C)调用函数时主函数所传递的实参类型调用函数时主函数所传递的实参类型v D)D)函数定义时形参的类型函数定义时形参的类型v2006.4.462006.4.46以下叙述中以下叙述中错误错误的是的是v A)CA)C程序必须由一个或一个以上的函数组成程序必须由一个或一个以上的函

99、数组成v B)B)函数调用可以作为一个独立的语句存在函数调用可以作为一个独立的语句存在v C)C)若函数有返回值,必须通过若函数有返回值,必须通过returnreturn语句返回语句返回v D)D)函数形参的值也可以传回给对应的实参函数形参的值也可以传回给对应的实参1427.2 习题演练习题演练10-1v2005.9.302005.9.30设函数设函数funfun的定义形式为的定义形式为v void void fun(charfun(char chch, float x) , float x) v 则以下对函数则以下对函数funfun的调用语句中,正确的是的调用语句中,正确的是v A)fun(

100、abcA)fun(abc, 3.0); B)fun(32, 32);, 3.0); B)fun(32, 32);v C)fun(65, 2.8); C)fun(65, 2.8); D)tD)t= =fun(Dfun(D, 16.5);, 16.5);v2002007 7. .9 9. .2525 以下叙述中以下叙述中正确正确的是的是v A)A)函数的实参和形参共占同一存储单元函数的实参和形参共占同一存储单元v B)B)形参只是形式上的,不占用具体存储单元形参只是形式上的,不占用具体存储单元v C)C)同名的实参和形参占同一存储单元同名的实参和形参占同一存储单元v D)D)函数的形参和实参分别占

101、用不同的存储单元函数的形参和实参分别占用不同的存储单元1437.2 习题演练习题演练10-2v2008.9.222008.9.22下面下面funfun函数的实参个数是函数的实参个数是 fun(f(v1,v2),(v3,v4,v5),(v6,max(v7,v8);fun(f(v1,v2),(v3,v4,v5),(v6,max(v7,v8);v A)3 B)4 C)5 D)8 A)3 B)4 C)5 D)8v2002008 8. .9 9. .2525 以下叙述中以下叙述中错误错误的是的是v A)A)用户定义的函数中可以没有用户定义的函数中可以没有returnreturn语句语句v B)B)用户定

102、义的函数中可以有多个用户定义的函数中可以有多个returnreturn语句,语句,以便调用一次返回多个函数值以便调用一次返回多个函数值v C)C)用户定义的函数如果没有用户定义的函数如果没有returnreturn语句,应当语句,应当定义函数为定义函数为voidvoid类型类型v D)D)函数的函数的returnreturn语句中可以没有表达式语句中可以没有表达式1447.2 习题演练习题演练10-3v2006.9.322006.9.32若有以下函数首部若有以下函数首部v intint fun(doublefun(double x10, x10, intint *n) *n)v 则下面针对此函

103、数声明语句中则下面针对此函数声明语句中正确正确的是的是v A)intA)int fun(doublefun(double x,intx,int *n); *n);v B)intB)int fun(doublefun(double, , intint););v C)intC)int fun(doublefun(double *x,*x, intint n); n);v D)intD)int fun(doublefun(double *, *, intint*);*);v2005.4.172005.4.17以下程序的运行结果是以下程序的运行结果是v intint m = 12, n = 34; m

104、 = 12, n = 34;v printf(%d%dprintf(%d%d, m+, +n);, m+, +n);v printf(%d%dnprintf(%d%dn, n+, +m);, n+, +m);v12353514123535141457.2 习题演练习题演练10-4v2005.4.132005.4.13以下程序的运行结果是以下程序的运行结果是v void void swap(intswap(int x, x, intint y) y)v v intint t; t;v t = x; x = y; y = t; t = x; x = y; y = t;v printf(%d%dpr

105、intf(%d%d, x, y);, x, y);v v main() main()v v intint a = 3, b = 4; a = 3, b = 4;v swap(aswap(a, b);, b);v printf(%d%dnprintf(%d%dn, a, b);, a, b);v v433443341467.2 习题演练习题演练10-5v2008.9.322008.9.32以下程序的运行结果是以下程序的运行结果是v void void f(intf(int a, a, intint b) b)v v intint t = a; a = b; b = t; t = a; a = b

106、; b = t;v v main() main()v v intint c10 = c10 = 1,2,3,4,5,6,7,8,9,0, i;1,2,3,4,5,6,7,8,9,0, i;v for (i = 0; i 10; i += 2) for (i = 0; i 10; i += 2)v f(cif(ci, ci+1);, ci+1);v for (i = 0; i 10; i+) for (i = 0; i 10; i+)v printf(%dprintf(%d, , cici););v v1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1477.2

107、习题演练习题演练10-6v 2007.4.82007.4.8以下程序的运行结果是以下程序的运行结果是v intint k = 0; k = 0;v void void fun(intfun(int m) m)v v m += k; k += m; m += k; k += m; v printf(%d,%dprintf(%d,%d, m, k+);, m, k+);v v main()main()v v intint i = 4; i = 4;v fun(ifun(i+);+);v printf(%d,%dnprintf(%d,%dn, i, k);, i, k);v v4,4,5,54,4,

108、5,51487.2 习题演练习题演练10-7v2006.9.422006.9.42以下程序的运行结果是以下程序的运行结果是v void fun2(char a, char b)void fun2(char a, char b)v printf(%printf(%c c%c%c, a, b);, a, b); v char a = A, b = B;char a = A, b = B;v void fun1()void fun1()v a = C;a = C; b = D; b = D; v main()main()v v fun1();fun1();v printf(%c%cprintf(%c

109、%c, a, b);, a, b);v fun2(E, F);fun2(E, F);v vCDEFCDEF149七:函数七:函数v考点考点6:局部变量和全局变量。局部变量和全局变量。 (常考常考)v局部变量的作用域局部变量的作用域:是定义它的函数内或复合语是定义它的函数内或复合语句内,在它的作用域之外,内部变量是不可见的句内,在它的作用域之外,内部变量是不可见的v全局变量的作用域全局变量的作用域:对于只有一个源程序文件构成对于只有一个源程序文件构成的程序,外部变量的作用域是从定义它的位置开始,直的程序,外部变量的作用域是从定义它的位置开始,直至它所在源程序文件的结束。至它所在源程序文件的结束。

110、150七:函数七:函数v考点考点7:形参和实参之间,:形参和实参之间,传值传值和和传地址传地址的差别的差别v此考点常考此考点常考v传数值的话,形参的变化不会改变实参的变化。传数值的话,形参的变化不会改变实参的变化。v传地址的话,形参的变化就会有可能改变实参的传地址的话,形参的变化就会有可能改变实参的变化变化。151七:函数七:函数v考点考点8:变量的存储类别(自动,静态,寄存器,:变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。外部),变量的作用域和生存期。 v重点重点要理解的是静态。要理解的是静态。v在静态存储区内分配存储单元。在程序整个运行在静态存储区内分配存储单元。在程

111、序整个运行期间都不释放期间都不释放 v静态局部变量在编译时赋初值,即只赋初值一次静态局部变量在编译时赋初值,即只赋初值一次 v如果在定义局部变量时不赋初值的话,则对静态如果在定义局部变量时不赋初值的话,则对静态局部变量来说,局部变量来说,编译时自动赋初值编译时自动赋初值0(对数值型(对数值型变量)或变量)或空字符空字符(对字符变量)(对字符变量) 152八、编译预处理八、编译预处理 v考点考点1:宏定义和调用(不带参数的宏,:宏定义和调用(不带参数的宏,带参数的宏带参数的宏)v重点是带参数的宏重点是带参数的宏v带参宏定义的一般形式为:带参宏定义的一般形式为:v #define 宏名宏名(形参表

112、形参表) 字符串字符串v例如:例如:v #define M(y) y*y+3*y /*宏定义宏定义*/ v k=M(5); /*宏调用宏调用*/v v在宏调用时,用实参在宏调用时,用实参5去代替形参去代替形参y,经预处理宏展开后,经预处理宏展开后的语句为:的语句为:v k=5*5+3*5153八、编译预处理八、编译预处理v2.“文件包含文件包含”处理处理功能:一个源文件可将另一个源文件的内容全部包功能:一个源文件可将另一个源文件的内容全部包含进来含进来一般形式:一般形式: #include “文件名文件名” 或或 #include 154九、指针九、指针v考点考点1:地址与指针变量的概念:地址

113、与指针变量的概念v变量的指针就是变量的地址。存放变量地址的变变量的指针就是变量的地址。存放变量地址的变量是指针变量。量是指针变量。 v指针变量的定义:指针变量的定义:类型说明符类型说明符 *变量名;变量名;v两个有关的运算符两个有关的运算符:v&:取地址运算符。取地址运算符。v*:指针运算符(或称:指针运算符(或称“间接访问间接访问” 运算符)。运算符)。v语言中提供了地址运算符语言中提供了地址运算符&来表示变量的地址。来表示变量的地址。155九、指针九、指针v考点考点2:一维数组和指针一维数组和指针v数组名数组名是表示数组是表示数组首地址首地址的的地址常量地址常量v例如:int a10v对于

114、一维数组对于一维数组a,数组名,数组名a是数组元素是数组元素a0的的地地址,址,即即&a0与与a是等值的是等值的。属性也相同,都是。属性也相同,都是int 的的地址。地址。156九、指针九、指针v指针变量与一维数组的关系指针变量与一维数组的关系设有:设有:int *p 与与 int a10 v数组名是指针(地址)数组名是指针(地址)常量常量v若已有若已有p=a; 即已使即已使p指向了指向了a0;则;则 p+i 是是ai的的地址地址v数组元素的表示方法:数组元素的表示方法:下标法下标法和和指针法指针法, 即若即若: p=a; 则则pi ai *(p+i) *(a+i) v形参数组形参数组实质上是

115、实质上是指针变量指针变量,即,即int q int *qv在定义指针变量(不是形参)时,在定义指针变量(不是形参)时,不能不能把把int *p 写成写成int p;157九、指针九、指针v考点考点3:二维数组和指针二维数组和指针v指向二指向二维维数组中的数组中的一一行行的指针变量的指针变量v定义形式:定义形式: 数据类型数据类型 (*指针名指针名)一维数组维数一维数组维数; 例例 int (*p)4;p是个指针变量,指向包含是个指针变量,指向包含4个元素的一维数组个元素的一维数组注意:注意:p两侧的括号不可缺少,否则意义发生改变两侧的括号不可缺少,否则意义发生改变例如:例如:vint a34=

116、0,1,2,3,4,5,6,7,8,9,10,11;v int(*p)4;v int i,j;v p=a;158九、指针九、指针v二维数组与指向一行的(一维数组)指针二维数组与指向一行的(一维数组)指针变量的关系变量的关系 如如 int a510 与与 int (*p)10;Y二维数组名是一个指向有二维数组名是一个指向有10个元素的一维数组的个元素的一维数组的指针常量指针常量Yp=a+i 使使 p指向二维数组的第指向二维数组的第i行行Y*(*(p+i)+j) aij 159九、指针九、指针v考点考点4:字符指针:指向字符串的指针:字符指针:指向字符串的指针v字符指针字符指针初始化初始化:把字符

117、串把字符串首地址首地址赋给赋给stringv char *string;v string=“I love China!”;v掌握掌握:(:(1)判断一个字符串是否回文的程序判断一个字符串是否回文的程序v (2)复制一个字符串()复制一个字符串(重点重点)160九、指针九、指针v考点考点5:数组名作函数参数:数组名作函数参数v数组名做函数的实际参数时,并不是将所有数组数组名做函数的实际参数时,并不是将所有数组元素的值传递给形参数组,而是元素的值传递给形参数组,而是传递数组的起始传递数组的起始地址地址,所以形参数组和实参数组是共占内存单元。,所以形参数组和实参数组是共占内存单元。161九、指针九、

118、指针v数组名作函数参数数组名作函数参数v地址传递地址传递v在主调函数与被调函数分别定义数组在主调函数与被调函数分别定义数组,且类型应一致且类型应一致v形参数组大小形参数组大小(多维数组第一维多维数组第一维)可不指定可不指定v形参数组名是形参数组名是地址变量地址变量v掌握书上的:掌握书上的:冒泡排序和选择法排序冒泡排序和选择法排序162九、指针九、指针v考点考点6:字符串指针作函数参数:字符串指针作函数参数v将一个字符串从一个函数传递到另一个函数,可将一个字符串从一个函数传递到另一个函数,可以用地址传递的方法:以用地址传递的方法:即用字符数组名作参数即用字符数组名作参数 或或用指向字符串首地址的

119、用指向字符串首地址的 字符指针变量作参数。字符指针变量作参数。163v字符串字符串COPY函数的六种写法函数的六种写法方式方式1:void copy_string(char *from,char *to) while (*to=*from)!=0) to+; from+;方式方式2:void copy_string(char *from,char *to) while ( (*to+=*from+)!=0); 方式方式3:void copy_string(char *from,char *to) while ( *from!=0 ) *to+=*from+; *to=0; 164方式方式4:v

120、oid copy_string(char *from,char *to) while ( (*to+=*from+) ); 方式方式5:void copy_string(char *from,char *to) for ( ; (*to+=*from+)!=0); ); 方式方式6:void copy_string(char *from,char *to) char *p1,*p2; p1=from; p2=to; while ( (*to+=*from+)!=0 ); 165九、指针九、指针v考点考点7:指针数组:指针数组指针数组指针数组(数组的数据元素是指针)数组的数据元素是指针)v定义:

121、数组中的元素为指针变量定义:数组中的元素为指针变量v定义形式:定义形式: 数据类型数据类型 *数组名数组名数组长度说明数组长度说明;例例 char *p=Fortran, Lisp, Basic;v指针数组和二维数组的关系指针数组和二维数组的关系指针数组元素的作用相当于二维数组的行名指针数组元素的作用相当于二维数组的行名但指针数组中元素是但指针数组中元素是指针变量指针变量二维数组的行名是二维数组的行名是地址常量地址常量166九、指针九、指针v考点考点8:二级指针与指针数组的关系:二级指针与指针数组的关系int *p 与与 int *q10 v指针数组名是指针数组名是二级指针常量二级指针常量vp

122、=q; p+i 是是qi的地址的地址v指针数组作形参,指针数组作形参,int *q 与与int *q完全等价;但作为变完全等价;但作为变量定义两者不同量定义两者不同v系统只给系统只给p分配能保存一个指针值的内存区;而给分配能保存一个指针值的内存区;而给q分配分配10块内存区,每块可保存一个指针值块内存区,每块可保存一个指针值167九、指针九、指针v考点考点9:返回指针的函数:返回指针的函数 函数定义形式:函数定义形式: 类型标识符类型标识符 *函数名函数名(参数表参数表);例例 int *f(int x, int y) 168九、指针九、指针v考点考点10:指向函数的指针:指向函数的指针v函数

123、在编译时被分配的函数在编译时被分配的入口地址入口地址(程序段的存储(程序段的存储地址)地址) 称为函数指针,称为函数指针, 用函数名表示。我们将用函数名表示。我们将这一地址存到一个指针变量里去,这个变量就是这一地址存到一个指针变量里去,这个变量就是指向函数的指针变量。指向函数的指针变量。v定义形式:定义形式: 数据类型数据类型 (*指针变量名指针变量名)(); 如如 int (*p)();在给一个指向函数的指针变量赋值时,不用带参数,在给一个指向函数的指针变量赋值时,不用带参数,如如: p=max; 而不能而不能p=max(a,b); 169九、指针九、指针v数组名:表示第一个元素的地址。数组

124、名不可以数组名:表示第一个元素的地址。数组名不可以自加,他是地址常量名。(自加,他是地址常量名。(考了很多次考了很多次)v函数名:表示该函数的函数名:表示该函数的入口地址入口地址。v字符串常量名:表示字符串常量名:表示第一个字符的地址第一个字符的地址。170十十 结构体、共用体结构体、共用体v考点考点1:用:用typedef说明一个新类型。说明一个新类型。v考点考点2:结构体和共用体类型数据的定义和成员:结构体和共用体类型数据的定义和成员的引用。的引用。 v考点考点3:通过结构体构成链表,单向链表的建立,:通过结构体构成链表,单向链表的建立,结点数据的输出、删除与插入。结点数据的输出、删除与插

125、入。 171十一:位运算十一:位运算v会有一到二题考试题目。会有一到二题考试题目。v总的处理方法:几乎所有的位运算的题目都要按总的处理方法:几乎所有的位运算的题目都要按这个流程来处理(先把十进制变成二进制再变成这个流程来处理(先把十进制变成二进制再变成十进制)。十进制)。v在没有舍去数据的时候,在没有舍去数据的时候,右移一位表示除以右移一位表示除以2。 172十二、文件操作十二、文件操作v熟练掌握书上的例题熟练掌握书上的例题v1.文件类型指针(文件类型指针(FILE类型指针)。类型指针)。2.文件的打开与关闭(文件的打开与关闭(fopen,fclose)。)。3.文件的读写(文件的读写(fpu

126、tc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf函数的应用),函数的应用),文件的定位(文件的定位(rewind,fseek函数的应用)。函数的应用)。 1733.模拟软件模拟软件v序列号:序列号:J5HD-9SQ2F2-QM3K8P-GVQEZE-KTL9WFv准考证号码:准考证号码:240199990001 240199990005174六:数组的定义和引用六:数组的定义和引用v考点考点1:一维数组和二维数组的定义和初始化和:一维数组和二维数组的定义和初始化和数组元素的引用数组元素的引用看看书上是如何描绘的看看书上是如何描绘的特别地:理解利用

127、指针对数组元素的引用。特别地:理解利用指针对数组元素的引用。v考点考点2:字符串和字符数组:字符串和字符数组C语言中,没有字符串类型,必须借助字符型的一维语言中,没有字符串类型,必须借助字符型的一维数组来存放。数组来存放。用来存放字符串的数组称为字符数组。用来存放字符串的数组称为字符数组。字符数组中一个元素存放一个字符,并规定以字符字符数组中一个元素存放一个字符,并规定以字符0作为字符串的结束标志作为字符串的结束标志175六:数组的定义和引用六:数组的定义和引用v考点考点2:指针变量指向字符串的方法:指针变量指向字符串的方法char *p=“string”;v能区分出用字符数组作为字符串和用指

128、针变量指能区分出用字符数组作为字符串和用指针变量指向字符串的区别向字符串的区别char mark =“good”;char *pmark=“good”;176六:数组的定义和引用六:数组的定义和引用v考点考点3:字符串的输入:字符串的输入v三种方法:三种方法:v(1)使用格式符)使用格式符%c,通过通过scanf()函数,逐个字函数,逐个字符输入符输入char c10;scnaf(“%c”,&c0);v表示向数组元素表示向数组元素c0输入一个字符。输入一个字符。177六:数组的定义和引用六:数组的定义和引用v考点考点3:字符串的输入:字符串的输入v(2)使用格式符)使用格式符%s,通过通过sc

129、anf()函数,将整个函数,将整个字符串一次输入。例如字符串一次输入。例如char c10;scnaf(“%s”,c);v(3)使用专门的标准字符串输入函数)使用专门的标准字符串输入函数gets(),将将整个字符串一次输入。整个字符串一次输入。调用方式为:调用方式为:gets(字符数组字符数组);178六:数组的定义和引用六:数组的定义和引用v考点考点4:字符串的输出:字符串的输出v与字符串的输入相对应,也有三个方法。与字符串的输入相对应,也有三个方法。v专门的标准字符串输出函数专门的标准字符串输出函数puts(字符数组字符数组);179六:数组的定义和引用六:数组的定义和引用v考点考点5:字符串处理函数:字符串处理函数v专门的字符串处理函数存储在文件专门的字符串处理函数存储在文件“string.h”中中v包括:包括:strcpy(字符数组字符数组1,字符串,字符串2)v strcat(字符数组字符数组1,字符数组,字符数组2)v strlen(字符串字符串):不包含:不包含0v strcmp(字符串字符串1,字符串,字符串2)180

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号