计算机二级C语言(重要知识点)

上传人:大米 文档编号:585329961 上传时间:2024-09-02 格式:PPT 页数:152 大小:975.50KB
返回 下载 相关 举报
计算机二级C语言(重要知识点)_第1页
第1页 / 共152页
计算机二级C语言(重要知识点)_第2页
第2页 / 共152页
计算机二级C语言(重要知识点)_第3页
第3页 / 共152页
计算机二级C语言(重要知识点)_第4页
第4页 / 共152页
计算机二级C语言(重要知识点)_第5页
第5页 / 共152页
点击查看更多>>
资源描述

《计算机二级C语言(重要知识点)》由会员分享,可在线阅读,更多相关《计算机二级C语言(重要知识点)(152页珍藏版)》请在金锄头文库上搜索。

1、授课教师:闵授课教师:闵 芳芳联系方式:联系方式:1533519803015335198030办公室:办公室: A3-303A3-303周三(周三(9 9月月9 9号)上课调整到周五(号)上课调整到周五(9 9月月1111)1.C1.C语言的基本概念语言的基本概念(1)(1)源程序的格式,风格和结构,源程序的格式,风格和结构,mainmain函数及其他函数的函数及其他函数的基本概念。基本概念。l 任何任何C C的源程序执行时,都是从主函数的源程序执行时,都是从主函数(main)(main)开始执行开始执行的,其他的函数最终必将被这个主函数所调用。的,其他的函数最终必将被这个主函数所调用。l C

2、 C语言除了主函数规定必须取名为语言除了主函数规定必须取名为mainmain外,其他的函数外,其他的函数名可以任取,但是要符合名可以任取,但是要符合C C标识符取名规则。标识符取名规则。l 在在mainmain函数体内部和外部均允许出现的实体是函数体内部和外部均允许出现的实体是预处理预处理命令命令1.C1.C语言的基本概念语言的基本概念(1)(1)源程序的格式,风格和结构,源程序的格式,风格和结构,mainmain函数及其他函数的函数及其他函数的基本概念。基本概念。l C C程序书写格式自由,程序书写格式自由,一个语句可以占多行一个语句可以占多行,一行也可,一行也可有多个语句。有多个语句。l

3、C C语言的基本组成单位是函数。语言的基本组成单位是函数。l 在在C C语言中,关键字都是小写的。语言中,关键字都是小写的。l 各个函数在程序中所处的位置并不是固定的,但要求各个函数在程序中所处的位置并不是固定的,但要求一个函数是完整的,独立的,不允许出现在一个函数内部一个函数是完整的,独立的,不允许出现在一个函数内部又去定义另一个函数,或是函数格式不齐全的现象。又去定义另一个函数,或是函数格式不齐全的现象。l C C语言用语言用/* */* */作注释,注释的添加形式比较自由,允作注释,注释的添加形式比较自由,允许在任何插入空格符的位置插入注释,许在任何插入空格符的位置插入注释,但但C C语

4、言的注释不语言的注释不能进行嵌套能进行嵌套。例题:江例题:江20062006年春选择题年春选择题2121下列各选项都是在下列各选项都是在C C语言程序段中增加的注释,其中注释语言程序段中增加的注释,其中注释方法错误的是方法错误的是_A.voidA.void main(/* main(/*intint argcargc , char * , char *argvargv*/)*/)B.voidB.void main( ) main( )pripri/*remark*/*remark*/ntf(“namentf(“name”); ”); C.voidC.void main( ) main( )in

5、tint x/*=10*/; x/*=10*/; printf(“%dprintf(“%d” ,x ); ” ,x ); D.voidD.void main( ) main( )intint x=10; /* x=10; /*printf(“%dprintf(“%d” ,x )*/; ” ,x )*/; l 各个函数在程序中所处的位置并不是固定的,但要求各个函数在程序中所处的位置并不是固定的,但要求一个函数是完整的,独立的,不允许出现在一个函数内部一个函数是完整的,独立的,不允许出现在一个函数内部又去定义另一个函数,或是函数格式不齐全的现象。又去定义另一个函数,或是函数格式不齐全的现象。函数类

6、型函数类型 函数名函数名( (函数参数类型函数参数类型 函数参数名函数参数名1 ,1 ,函数参数函数参数类型类型 函数参数名函数参数名2 ,.)2 ,.) 函数体函数体 例题:例题:20082008年春季选择题年春季选择题2121下列叙述正确的是下列叙述正确的是_A.mainA.main函数必须出现在其他函数之前函数必须出现在其他函数之前B.mainB.main函数中至少必须有一条语句函数中至少必须有一条语句C.CC.C程序总是从程序总是从mainmain函数的第一条语句开始执行函数的第一条语句开始执行D.CD.C程序总是在执行完程序总是在执行完mainmain函数的最后一条语句后结束函数的最

7、后一条语句后结束 20082008年秋季选择题年秋季选择题2121l C C程序是先由源程序程序是先由源程序(*.C)(*.C)经编译生成目标文件经编译生成目标文件(*.(*.objobj,是二进制文件是二进制文件) ),然后经过链接生成可执行文件,然后经过链接生成可执行文件(*.exe(*.exe,是二进制文件是二进制文件) )例题:下列叙述正确的是例题:下列叙述正确的是_A.CA.C程序中的注释只能出现在程序的开始位置和语句的后程序中的注释只能出现在程序的开始位置和语句的后面面B.CB.C程序书写格式严格,要求一行内只能写一个语句程序书写格式严格,要求一行内只能写一个语句C.CC.C程序书

8、写格式自由,一个语句可以写在多行上程序书写格式自由,一个语句可以写在多行上D.D.用用C C语言编写的程序只能放在一个程序文件中语言编写的程序只能放在一个程序文件中例题:下列叙述正确的是例题:下列叙述正确的是_A.A.一个一个C C语言程序只能实现一种算法语言程序只能实现一种算法B.CB.C程序可以由多个程序文件组成程序可以由多个程序文件组成C.CC.C程序可以由一个或多个函数组成程序可以由一个或多个函数组成D.D.一个一个C C函数可以单独作为一个函数可以单独作为一个C C程序文件存在程序文件存在1.C1.C语言的基本概念语言的基本概念(2)(2)基本算术类型数据的表示及使用。基本算术类型数

9、据的表示及使用。 类型标识符(类型标识符(intint ,float , ,float ,double,chardouble,char)的意义及)的意义及使用;类型修饰符(使用;类型修饰符(long,short,signed,unsignedlong,short,signed,unsigned)的意)的意义及使用;义及使用; 类型标识符:在编译的时候,为变量分配相应的存储空类型标识符:在编译的时候,为变量分配相应的存储空间;规定了变量的取值范围;规定了变量可以进行的运算;间;规定了变量的取值范围;规定了变量可以进行的运算;1.C1.C语言的基本概念语言的基本概念(2)(2)基本算术类型数据的表

10、示及使用。基本算术类型数据的表示及使用。例题:例题:20062006年秋填空题年秋填空题3 3,20072007年秋选择题年秋选择题2424 整数数值是以补码表示的;正数的补码和原码相同;负整数数值是以补码表示的;正数的补码和原码相同;负数的补码是将该数的绝对值的二进制形式按位取反再加数的补码是将该数的绝对值的二进制形式按位取反再加1 1,左面的第一位表示符号。,左面的第一位表示符号。1.C1.C语言的基本概念语言的基本概念(2)(2)基本算术类型数据的表示及使用。基本算术类型数据的表示及使用。 基本类型常量的表示及使用:基本类型常量的表示及使用:intint型常量的十进制,型常量的十进制,八

11、进制,十六进制形式;八进制,十六进制形式;l 以数字以数字0 0开头的数字序列,一律作为八进制数处理,基开头的数字序列,一律作为八进制数处理,基本数字范围本数字范围0 07 7;l 以以0x0x开头后面跟若干位数字的,一律作为十六进制数开头后面跟若干位数字的,一律作为十六进制数处理,基本数字范围处理,基本数字范围0 09 9,从,从10-1510-15写为写为A-FA-F或或a-fa-f;1.C1.C语言的基本概念语言的基本概念(2)(2)基本算术类型数据的表示及使用。基本算术类型数据的表示及使用。l 其他数字作为十进制数处理其他数字作为十进制数处理, ,基本数字范围是基本数字范围是0-90-

12、9。例题:例题:intint a = 0144; a = 0144; intint b = 0x64; b = 0x64; intint c = 100; c = 100;类型说明符类型说明符 数的范围数的范围 分配字节数分配字节数intint -3276832767 -3276832767 short short intint -3276832767 -3276832767 signed signed intint -3276832767 -3276832767 unsigned unsigned intint 065535 065535 long long intint -21474836

13、482147483647-21474836482147483647 unsigned long unsigned long 04294967295 04294967295 l 整型数据的分类:整型数据的分类: 整型数据分为基本类型,短整型,长整型和无符号整型。整型数据分为基本类型,短整型,长整型和无符号整型。l 整型数据的分类:整型数据的分类: 整型数据分为基本类型,短整型,长整型和无符号整型。整型数据分为基本类型,短整型,长整型和无符号整型。 长整型,在长整型,在整数整数的末尾加上后缀字母的末尾加上后缀字母”l”l”或或”L”L”。例如:例如:9L9L,012L012L,0x32L0x32L

14、 无符号整型在无符号整型在整数整数的末尾加上后缀字母的末尾加上后缀字母”u”u”或或”U”U”。若是长整型无符号整数,则应加后缀若是长整型无符号整数,则应加后缀”lulu”或或”LU”LU” 20082008年秋选择题年秋选择题2323 1.C1.C语言的基本概念语言的基本概念(2)(2)基本算术类型数据的表示及使用。基本算术类型数据的表示及使用。 基本类型常量的表示及使用:基本类型常量的表示及使用:floatfloat型常量、型常量、doubledouble型常量的十进制小数形式,十进制指数形式;型常量的十进制小数形式,十进制指数形式; 日常的表示法日常的表示法 C C语言中的表示形式语言中

15、的表示形式 3.1415103.1415106 6 3.1415e6 3.1415e6 2.56*10 2.56*10-7-7 2.56e-7 2.56e-7 1.C1.C语言的基本概念语言的基本概念(2)(2)基本算术类型数据的表示及使用。基本算术类型数据的表示及使用。 类型说明符类型说明符floatfloat表示单精度型,在表示单精度型,在Turbo CTurbo C中单精度中单精度型占型占4 4个字节内存空间,只能提供七位有效数字。个字节内存空间,只能提供七位有效数字。 类型说明符类型说明符doubledouble表示双精度型,在表示双精度型,在Turbo CTurbo C中双精度中双精

16、度型占型占8 8个字节内存空间,只能提供十六位有效数字。个字节内存空间,只能提供十六位有效数字。 Turbo CTurbo C规定规定小数后最后保留六位小数后最后保留六位,其余部分四舍五入。,其余部分四舍五入。 20082008年春选择题年春选择题2222 1.C1.C语言的基本概念语言的基本概念(2)(2)基本算术类型数据的表示及使用。基本算术类型数据的表示及使用。 基本类型常量的表示及使用:基本类型常量的表示及使用:charchar型常量形式,常型常量形式,常用转义字符;字符串常量形式;符号常量的命名、定义与用转义字符;字符串常量形式;符号常量的命名、定义与使用;使用;charchar型常

17、量形式型常量形式: :字符常量是用一对单撇号括起来的一个字符常量是用一对单撇号括起来的一个字符,如字符,如: :AA , , 2 2 , , * * 常用转义字符常用转义字符: :(1)(1)用反斜杠开头后面跟一个字母代表一个控制字符用反斜杠开头后面跟一个字母代表一个控制字符; ;(2)(2)用用代表字符反斜杠代表字符反斜杠, ,用用 代表撇号字符代表撇号字符; ;(3)(3)用用 后跟后跟1 1到到3 3个八进制数代表个八进制数代表ASCIIASCII码为该八进制数的码为该八进制数的字符字符; ;用用xx后跟后跟1 1到到2 2个十六进制数代表个十六进制数代表ASCIIASCII码为该十六进

18、码为该十六进制数的字符制数的字符例题:语句例题:语句printf(abdwhiybounprintf(abdwhiyboun)是是_。A. aA. abdwhiyboubdwhiybou B. aB. abdwhiyboubdwhiybou C. C. dwhiyoudwhiyou D. D. abdwhiybouabdwhiybou 转义字符及其作用转义字符及其作用 P48P48例题:下列不正确的转义字符是例题:下列不正确的转义字符是_。A. 065 B. C. D. 0A. 065 B. C. D. 0符号常量符号常量: :宏名宏名 #define #define 宏名宏名 宏体宏体 或或

19、 #define #define 宏名宏名注意:注意:1.1.宏定义是用宏名来表示一个字符串,在宏展开时宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串代替宏名,这只是一种简单的替换,字符串又以该字符串代替宏名,这只是一种简单的替换,字符串中可以含任何字符,可以是常数,也可以是表达式,预处中可以含任何字符,可以是常数,也可以是表达式,预处理程序对它不作任何检查。理程序对它不作任何检查。2.2.宏定义不是说明或语句,在行末不必加分号,如加上分宏定义不是说明或语句,在行末不必加分号,如加上分号则连分号也一起置换。号则连分号也一起置换。符号常量符号常量: :宏名宏名 #define #defi

20、ne 宏名宏名 宏体宏体 或或 #define #define 宏名宏名3.3.宏名在源程序中若用引号括起来,则预处理不对其作宏宏名在源程序中若用引号括起来,则预处理不对其作宏代换。代换。4.4.宏定义用宏名代替一个字符串,也就是简单的置换,不宏定义用宏名代替一个字符串,也就是简单的置换,不作正确性检查。作正确性检查。5.5.在定义预处理命令时,一行只能有一条预处理命令。在定义预处理命令时,一行只能有一条预处理命令。例题:以下说法不正确的是例题:以下说法不正确的是_A.A.在在C C语言程序中凡是以语言程序中凡是以# #号开头的语句都是预处理命令行;号开头的语句都是预处理命令行;B.C.C程序

21、在执行过程中对预处理命令进行处理程序在执行过程中对预处理命令进行处理C.C.以下是正确的宏定义以下是正确的宏定义 #define IBM_PC #define IBM_PC 例题:以下有关宏替换的叙述不正确的是例题:以下有关宏替换的叙述不正确的是_A.A.宏替换不占用运行时间;宏替换不占用运行时间;B.B.宏名无类型;宏名无类型;C.C.宏替换只是字符替换;宏替换只是字符替换;D.D.宏名必须有大写字母表示宏名必须有大写字母表示 l 带参数的宏命令带参数的宏命令 C C语言允许宏带有参数。在宏定义中的参数称为形式参数,语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参

22、数。对带参数的宏,在调用在宏调用中的参数称为实际参数。对带参数的宏,在调用中,不仅要宏展开,而且要用实参代替形参。中,不仅要宏展开,而且要用实参代替形参。 带参宏定义的一般形式为:带参宏定义的一般形式为: #define #define 宏名宏名( (形参表形参表) ) 字符串字符串 带参宏调用的一般形式:带参宏调用的一般形式: 宏名宏名( (实参表实参表) );l 带参数的宏命令带参数的宏命令 带参的宏定义的几点说明:带参的宏定义的几点说明:1.1.带参宏定义中,宏名和形参表之间不能有空格出现;带参宏定义中,宏名和形参表之间不能有空格出现;2.2.带参宏定义中,形参不分配存储单元,因此不必作

23、类型带参宏定义中,形参不分配存储单元,因此不必作类型定义;定义;3.3.在宏定义中的形参是标识符,而宏调用中的实参可以是在宏定义中的形参是标识符,而宏调用中的实参可以是表达式;表达式;例题:例题:20072007年秋填空题年秋填空题5 51.C1.C语言的基本概念语言的基本概念(2)(2)基本算术类型数据的表示及使用。基本算术类型数据的表示及使用。 基本类型变量的命名,声明,初始化及使用;基本类型变量的命名,声明,初始化及使用; 基本类型变量的命名:基本类型变量的命名:在在C C语言中,标识符必须以字符语言中,标识符必须以字符或下划线开头的由字母或下划线开头的由字母, ,数字和下划线组成的序列

24、;数字和下划线组成的序列; 基本类型变量的声明:基本类型变量的声明:数据类型数据类型 变量名;变量名; C C语言对变量的要求:语言对变量的要求:“先定义,后使用先定义,后使用”, ,变量说明必变量说明必须放在变量使用之前,一般放在函数体的开头部分。须放在变量使用之前,一般放在函数体的开头部分。例题:例题:20072007年秋选择题年秋选择题22221.C1.C语言的基本概念语言的基本概念(2)(2)基本算术类型数据的表示及使用。基本算术类型数据的表示及使用。 使用函数返回值作为操作数。使用函数返回值作为操作数。例如:以下程序的输出结果例如:以下程序的输出结果_。intint fun( fun

25、( intint a , a , intint b ) b ) return( a + b ) ; return( a + b ) ; main( )main( ) intint x = 2 , y = 5 , z = 8 , r; x = 2 , y = 5 , z = 8 , r; printf(%dn,fun(fun(x,y),zprintf(%dn,fun(fun(x,y),z);); 1.C1.C语言的基本概念语言的基本概念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。 表达式的一般组成;表达式的一般组成; 运算符功能、表达式的组成及表达式的值:运算符功能、表达

26、式的组成及表达式的值:赋值运算赋值运算符与赋值表达式、赋值运算符的左值要求;符与赋值表达式、赋值运算符的左值要求; 赋值运算符赋值运算符: : = = 注意注意: :在赋值运算符的左侧只能出现变量在赋值运算符的左侧只能出现变量 赋值运算符具有强制类型转换作用赋值运算符具有强制类型转换作用 例题:若变量均已正确定义并赋值,下列合法的例题:若变量均已正确定义并赋值,下列合法的C C语言赋语言赋值语句是值语句是_A.xA.x=y=5 =y=5 B.xB.x=n%2.5 C. =n%2.5 C. x+nx+n=i =i D.xD.x=5=4+1 =5=4+1 1.C1.C语言的基本概念语言的基本概念(

27、3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。 例题:例题:20052005年秋选择题年秋选择题2222 例题:若例题:若x x为为intint型变量,则执行以下语句后,型变量,则执行以下语句后,x x的值为的值为_。 x = 5;x = 5; x xx-=x*x;x-=x*x; 复合赋值运算复合赋值运算* *= , += , -=.= , += , -=.1.C1.C语言的基本概念语言的基本概念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。 运算符功能、表达式的组成及表达式的值:算术运算运算符功能、表达式的组成及表达式的值:算术运算符与算术表达式,符

28、与算术表达式,+,-+,-运算符的左值要求;运算符的左值要求; 算术运算符有算术运算符有:+,-,*,/,%:+,-,*,/,% 这些运算符需要两个运算对象这些运算符需要两个运算对象, ,称双目运算符称双目运算符. .除取余除取余(%)(%)运算外运算外, ,这些运算符的运算对象可以是整型这些运算符的运算对象可以是整型, ,也可以是也可以是实型。实型。 取余运算的运算对象只能是整型取余运算的运算对象只能是整型. .取余运算的结果是两取余运算的结果是两数相除之后所得的余数。数相除之后所得的余数。例题:例题:20062006年春选择题年春选择题26261.C1.C语言的基本概念语言的基本概念(3)

29、(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。 运算符功能、表达式的组成及表达式的值:算术运算运算符功能、表达式的组成及表达式的值:算术运算符与算术表达式,符与算术表达式,+,-+,-运算符的左值要求;运算符的左值要求; 不同类型数据间的转换与运算不同类型数据间的转换与运算 doublefloatdoublefloat long long unsigned unsigned intchar,shortintchar,short例题:例题:20062006年秋填空题年秋填空题2 21.C1.C语言的基本概念语言的基本概念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示

30、及使用。 运算符功能、表达式的组成及表达式的值:算术运算运算符功能、表达式的组成及表达式的值:算术运算符与算术表达式,符与算术表达式,+,-+,-运算符的左值要求;运算符的左值要求; 注意:强制类型转换的用法注意:强制类型转换的用法 ( (类型名类型名) )变量变量 例如例如: ( : ( intint ) x + y ) x + y 等价于等价于 (int)x)+yint)x)+y;例题:若有声明例题:若有声明”intint a = 5 , b = 2 ;”, a = 5 , b = 2 ;”,则表达式则表达式”b+=(float)(a+b)/2”b+=(float)(a+b)/2”运算后运

31、算后b b的值为的值为_(江(江20072007秋秋填空填空1 1)1.C1.C语言的基本概念语言的基本概念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。 运算符功能、表达式的组成及表达式的值:算术运算符与算术运算符功能、表达式的组成及表达式的值:算术运算符与算术表达式,表达式,+,-+,-运算符的左值要求;运算符的左值要求; 自增,自减运算符即自增,自减运算符即+,-(+,-(运算符是右结合性,运算级别是运算符是右结合性,运算级别是2)2) 注意:注意:a+ a+ 与与 +a +a 的区别的区别 先取值后先取值后+ 先先+后取值后取值1.C1.C语言的基本概念语言的基本

32、概念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。 运算符功能、表达式的组成及表达式的值:算术运算符与算术运算符功能、表达式的组成及表达式的值:算术运算符与算术表达式,表达式,+,-+,-运算符的左值要求;运算符的左值要求;例题:有下列程序:例题:有下列程序:#include#include main()main() intint x=1 , y=2 , z=3 ; x=1 , y=2 , z=3 ; if(xif(xy)y) if(yif(yz) z) printf(“%d”,+zprintf(“%d”,+z);); else else printf(“%d”,+ypr

33、intf(“%d”,+y);); printf(“%dnprintf(“%dn”, x+); ”, x+); 程序运行之后的结果是程序运行之后的结果是_1.C1.C语言的基本概念语言的基本概念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。 运算符功能、表达式的组成及表达式的值:关系运算运算符功能、表达式的组成及表达式的值:关系运算符与关系表达式;符与关系表达式;关系运算符:关系运算符: , ,= ( , ,= (运算级别是运算级别是6)6) ,!= (!= (运算级别是运算级别是7)7)注意:注意:等于零和不等于零的表示方法等于零和不等于零的表示方法 a a , !a a

34、a a!=0 a a!=0 !a a=0 !a a=0 两个实数判断相等和判断不相等的方法(在多分支两个实数判断相等和判断不相等的方法(在多分支ifif语语句中的作用)句中的作用)例题:若有表达式例题:若有表达式(w)?( -x )(w)?( -x ):(:(+y+y), ,则其中与则其中与w w等价等价的表达式是的表达式是_A.wA.w=1 =1 B.wB.w=0 =0 C.wC.w!=1 !=1 D.wD.w!=0!=0例题:例题: 江江20072007年春选择题年春选择题2424以下表示数学式以下表示数学式”abc”abc”的逻辑表达式错误的是的逻辑表达式错误的是_A.aA.abc bc

35、 B.aB.a b&bb&bc=b)&!(bb)&!(b=c) =c) D.!(aD.!(a=b|bb|b=c)=c)1.C1.C语言的基本概念语言的基本概念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。 运算符功能、表达式的组成及表达式的值:逻辑运算运算符功能、表达式的组成及表达式的值:逻辑运算符与逻辑表达式,含有符与逻辑表达式,含有&、|运算符的表达式的操作数求运算符的表达式的操作数求值顺序与优化处理理;值顺序与优化处理理;逻辑运算符:逻辑运算符:!( (运算级别是运算级别是2)2),&,|&,|(运算优先级是(运算优先级是11,1211,12)注意:注意:a&b&c

36、a&b&c 和和 a|b|ca|b|c1.C1.C语言的基本概念语言的基本概念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。 在一个在一个&表达式中,若表达式中,若&的一端为的一端为0 0,则不必再计算另,则不必再计算另一端,该表达式的值肯定为一端,该表达式的值肯定为0 0。 在一在一|表达式中,若表达式中,若|的一端为的一端为1 1,则不必再计算另一,则不必再计算另一端,该表达式的值肯定为端,该表达式的值肯定为1 1。例题:执行下列程序段后,例题:执行下列程序段后,w w的值为的值为( )( )intint w=A w=A , x = 14,y=15;x = 14,y=

37、15;w=(w=(x|y)&(wx|y)&(wa);a);A.-1 B.NULL C.1 D.0A.-1 B.NULL C.1 D.0例题:有以下程序例题:有以下程序main()main() intint i = 1 , j =2 , k = 3 ; i = 1 , j =2 , k = 3 ; if( i+ = 1 & ( +j = 3)| k+ = 3 ) if( i+ = 1 & ( +j = 3)| k+ = 3 ) printfprintf(“(“d %d %d %d %dndn“ , i , j , k); “ , i , j , k); 运行之后的结果是运行之后的结果是_。例题:

38、设例题:设x,y,zx,y,z和和t t均为均为intint型变量,执行以下语句后,型变量,执行以下语句后,t t的的值为值为_。x=y=z=0;x=y=z=0;t=+t=+x|y+&+zx|y+&+z; ;例题:下列只有当整数例题:下列只有当整数x x为偶数,才是逻辑为偶数,才是逻辑“真真”的表达的表达式式_A.x%2!=0 B.!(x%2=0) A.x%2!=0 B.!(x%2=0) C.(x-x/2*2)=0 D.if(x%2)C.(x-x/2*2)=0 D.if(x%2)1.C1.C语言的基本概念语言的基本概念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。 运算符

39、功能、表达式的组成及表达式的值:逗号运算运算符功能、表达式的组成及表达式的值:逗号运算符与逗号表达式,逗号表达式的操作数求值顺序;符与逗号表达式,逗号表达式的操作数求值顺序;逗号表达式一般形式为:逗号表达式一般形式为: 表达式表达式1 1,表达式,表达式2 2,表达式,表达式3 3,.,.,表达式表达式n n 整个逗号表达式的值是整个逗号表达式的值是表达式表达式n n的值的值。1.C1.C语言的基本概念语言的基本概念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。l 在所有运算中,逗号表达式的优先级最低:在所有运算中,逗号表达式的优先级最低:l 逗号表达式一般形式中的表达式

40、逗号表达式一般形式中的表达式1 1和表达式和表达式2 2也可以是也可以是另一逗号表达式另一逗号表达式l 并不是在所有出现逗号的地方都组成逗号表达式,如并不是在所有出现逗号的地方都组成逗号表达式,如在变量说明中,函数参数表中逗号只是用作各变量之间的在变量说明中,函数参数表中逗号只是用作各变量之间的间隔符。间隔符。例题:有如下程序:例题:有如下程序:#include #include main()main() intint a = 5 , b = -3 , c =4 ; a = 5 , b = -3 , c =4 ; printf(%d%dnprintf(%d%dn , (a+ , +b) , c

41、 -2 ); , (a+ , +b) , c -2 ); 运行该程序的输出结果是运行该程序的输出结果是_。例题:已知字符例题:已知字符A A的的ASCIIASCII码值为码值为6565,以下程序结果为,以下程序结果为_:#include #include main()main() intint b = 20 ; char a = A; b = 20 ; char a = A; printf(%d,%on,(aprintf(%d,%on,(a=a+1,a+b,b), a+ a-=a+1,a+b,b), a+ a-A,bA,b ); ); 1.C1.C语言的基本概念语言的基本概念(3)(3)运算符

42、和表达式的表示及使用。运算符和表达式的表示及使用。 运算符功能、表达式的组成及表达式的值:条件运算运算符功能、表达式的组成及表达式的值:条件运算符与条件表达式;符与条件表达式; 条件运算条件运算( (右结合性右结合性) ) e1 ? e2 : e3e1 ? e2 : e3 若若e1e1为真为真( (非非0)0),则此条件表达式的值为,则此条件表达式的值为e2e2的值;若的值;若e1e1为假为假(0),(0),则表达式取则表达式取e3e3的值。的值。 条件运算条件运算( (右结合性右结合性) )例题:例题:ab ?x : ab ?x : y?m:ny?m:n例题:江例题:江20062006年秋选

43、择题年秋选择题2222若已有声明若已有声明”intint x = 4 , y = 3 ;” x = 4 , y = 3 ;”,则表达式,则表达式“xxy?x+:yy?x+:y+”+”的值是的值是_A.2 B.3 C.4 D.5A.2 B.3 C.4 D.51.C1.C语言的基本概念语言的基本概念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。 运算符功能、表达式的组成及表达式的值:位运算符运算符功能、表达式的组成及表达式的值:位运算符与位运算表达式;与位运算表达式;位运算符位运算符: : ( (按位取反按位取反) &) &(按位与)(按位与) ( (按位异或按位异或) |)

44、 |(按位或)(按位或) ( (右移,将一个数的二进制全部右移若干位右移,将一个数的二进制全部右移若干位) )1.C1.C语言的基本概念语言的基本概念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。例题:下列程序的输出结果是例题:下列程序的输出结果是_main()main() char a = 3 , b = 6 ,c = char a = 3 , b = 6 ,c = abab2; y)ay)a= =x;bx;b= =y;elsey;else a= a=y;by;b=x;=x;B.if(xB.if(xy) a=x ;b=y) a=x ;b=y;elsey;else a=

45、a=y;by;b=x;=x;C.if(xC.if(xy) a=y) a=x;bx;b= =y;elsey;else a= a=y;by;b=x;=x;D.if(xD.if(xy) a=y) a=x;bx;b= =y;elsey;else ( xy) a= ( x y&yy&y!=0);!=0);C.if(xC.if(x0)x- 0)x- D.if(yD.if(y0); 0); else y+; else x+; else y+; else x+;题型:题型:(a)(a)数学分段函数的求值问题数学分段函数的求值问题(b)(b)繁琐的二维数组求值填空问题繁琐的二维数组求值填空问题( (结合循环语句

46、,必考结合循环语句,必考) )例题:例题:20072007年秋填空题年秋填空题8 88.8.以下程序运行时输出结果是以下程序运行时输出结果是_#include #include void void f(longf(long x ) x ) if( x 100 ) if( x 100 ) printfprintf( “%d” , x/10 ) ;( “%d” , x/10 ) ; else else f(x/100); f(x/100); printf(“%dprintf(“%d” , x%100/10); ” , x%100/10); main()main() f(123456); f(123

47、456); 2.2.基本语句基本语句 (2)(2)实现选择结构的语句:实现选择结构的语句:ifelseifelse语句、语句、switchswitch语语句和句和breakbreak语句。语句。 switchswitch(表达式)(表达式) case case 常量表达式常量表达式1 1: 语句语句1 ; break;1 ; break; case case 常量表达式常量表达式2 2: 语句语句2 ; break;2 ; break; case case 常量表达式常量表达式n n: 语句语句n ; break;n ; break; default: default: 语句语句n+1; n+

48、1; 注意注意: (a)(a)在在casecase后的各常量表达式的值不能相同,否则会后的各常量表达式的值不能相同,否则会出现错误出现错误 (b)(b)各各casecase和和defaultdefault子句的先后顺序可以变动,而子句的先后顺序可以变动,而不会影响程序执行结果。不会影响程序执行结果。2.2.基本语句基本语句 (2)(2)实现选择结构的语句:实现选择结构的语句:ifelseifelse语句、语句、switchswitch语语句和句和breakbreak语句。语句。注意注意:例题:例题:20072007年春填空题年春填空题9 9 (c)(c)多个多个casecase可以共用一组执行

49、语句可以共用一组执行语句 (d)“(d)“语句语句”为多条时,可以不必加大括号为多条时,可以不必加大括号 ( (f)defaultf)default语句可缺省语句可缺省例题:例题:20072007年春填空题年春填空题9 99.9.以下程序运行后输出结果的第一行为以下程序运行后输出结果的第一行为_,_,第二行为第二行为_#include #include void main()void main() intint i = 5 ; i = 5 ; do do switch( i % 2 ) switch( i % 2 ) case 0 :i-; break;case 0 :i-; break;ca

50、se 1case 1:i-;continue; i-;continue; i; i;printf(“%dn”,iprintf(“%dn”,i);); while(iwhile(i0);0); 例题:例题:main()main() intint a=2,b=7,c=5; a=2,b=7,c=5; switch(aswitch(a) case 1:switch(b0) case 1:switch(b0) case 1: case 1: printf(“”);breakprintf(“”);break; ; case 2: case 2: printf(“!”);breakprintf(“!”);b

51、reak; case 0:switch(c=5) case 0:switch(c=5) case 0: case 0: printfprintf(“*”);break;(“*”);break; case 1: case 1: printf(“#”);breakprintf(“#”);break; ; case 2: case 2: printf(“$”);breakprintf(“$”);break; default:printfdefault:printf(“&”); (“&”); 运行结果是运行结果是_2.2.基本语句基本语句 (3)(3)实现循环结构的语句实现循环结构的语句:while:

52、while语句、语句、dowhiledowhile语句、语句、forfor语句等。语句等。当型循环语句一般格式:当型循环语句一般格式: whilewhile(表达式)(表达式) 语句语句注意注意: : (a)(a)表达式应有表达式应有( )( ) (b)“(b)“语句语句”为复合语句时应加大括号为复合语句时应加大括号 (c)“(c)“语句语句”中含有中含有break,continuebreak,continue语句时的情况语句时的情况break:break:终止本层循环;在多层循环中,一个终止本层循环;在多层循环中,一个breakbreak语句只向外跳一语句只向外跳一层,即中止一层循环层,即中

53、止一层循环continuecontinue:终止本次循环的执行,进入下一次循环。:终止本次循环的执行,进入下一次循环。例题:设例题:设x x和和y y均为均为intint型变量则执行下面的循环后,型变量则执行下面的循环后,y y的值的值为为_。y=1,x=1;y=1,x=1;while( y = 10 )while( y = 10 ) break; if( x = 10 ) break; if( x %2 = 1 ) if( x %2 = 1 ) x+= 3 ; continue ; x+= 3 ; continue ; x+=2; x+=2; y+ ; y+ ; A.3 B.4 C.5 D.

54、6A.3 B.4 C.5 D.6例题:下列叙述中正确的是例题:下列叙述中正确的是_A.breakA.break语句只能用于语句只能用于swithswith语句体中语句体中B.continueB.continue语句的作用是使程序的执行流程跳出包含它的语句的作用是使程序的执行流程跳出包含它的所有循环所有循环C.breakC.break语句只能用于循环体内和语句只能用于循环体内和swithswith语句体内语句体内D.D.在循环内使用在循环内使用breakbreak语句和语句和continuecontinue语句的作用相同语句的作用相同2.2.基本语句基本语句 (3)(3)实现循环结构的语句实现循

55、环结构的语句:while:while语句、语句、dowhiledowhile语句、语句、forfor语句。语句。直到型循环语句一般格式:直到型循环语句一般格式: do do 语句语句 whilewhile(表达式)(表达式);注意注意: : (a)(a)无论表达式是否成立,循环体至少执行一次;无论表达式是否成立,循环体至少执行一次; (b)(b)格式中表达式有格式中表达式有( )( ),且后面的,且后面的”; ;”不能丢;不能丢; (c)(c)在语句中应有使在语句中应有使”表达式表达式”趋于不成立的语句存在;趋于不成立的语句存在;例题:例题:20072007年秋填空题年秋填空题6 6例题:例题

56、:20072007年秋填空题年秋填空题6 66.6.以下程序运行的结果是以下程序运行的结果是_._.#include #include main( )main( ) intint s = 1,n =235; s = 1,n =235; do do s*=n%10; s*=n%10; n/=10; n/=10; while(nwhile(n);); printf(“%dn”,sprintf(“%dn”,s);); l forfor循环结构的执行过程如下:循环结构的执行过程如下:1.1.求解表达式求解表达式1 1;forfor型循环语句一般格式:型循环语句一般格式: for( for( 表达式表达

57、式1 1;表达式;表达式2 2;表达式;表达式3)3) 语句;语句;2.2.求解表达式求解表达式2 2,若其值为,若其值为“真真”,则执行,则执行forfor语句中的循环体,然语句中的循环体,然后执行下面的执行第后执行下面的执行第(3)(3)步。若为假(值为步。若为假(值为0 0)则结束循环转到第)则结束循环转到第(5)(5)步;步;3.3.求解表达式求解表达式3 3;4.4.转回上面第转回上面第(2)(2)步继续执行;步继续执行;5.5.执行执行forfor语句下面的一个语句;语句下面的一个语句;2.2.基本语句基本语句 (3)(3)实现循环结构的语句实现循环结构的语句:while:whil

58、e语句、语句、dowhiledowhile语句、语句、forfor语句。语句。注意注意: : (a)(a)繁琐的二维数组填值问题繁琐的二维数组填值问题 (b)(b)三种循环语句可以互相嵌套三种循环语句可以互相嵌套例题:例题:20072007年秋选择题年秋选择题2525,25.25.若在一个若在一个C C语言源程序中语言源程序中”e1”e1”和和”e3”e3”是表达式,是表达式,“s;”s;”是语句,则下列选项中与语句是语句,则下列选项中与语句”for(e1;e3 for(e1;e3 )s;”)s;”功能等同的语句是功能等同的语句是:_:_A.e1;while(10)s;e3; A.e1;whi

59、le(10)s;e3; B.e1;while(10)s;e3;B.e1;while(10)s;e3;C.e1;while(10)e3;s; C.e1;while(10)e3;s; D.while(10)e1;s;e3;D.while(10)e1;s;e3;例题:例题:20072007年春选择题年春选择题2626,26.26.下列关于循环语句下列关于循环语句for,while,do_whilefor,while,do_while的叙述中正确的叙述中正确的是的是_A.A.三种循环语句的循环体都必须放入一对花括号中三种循环语句的循环体都必须放入一对花括号中B.B.三种循环语句中都可以缺省循环中止条件

60、表达式三种循环语句中都可以缺省循环中止条件表达式C.C.三种循环语句的循环都至少被无条件地执行一次三种循环语句的循环都至少被无条件地执行一次D.D.三种循环语句都可能出现无穷循环三种循环语句都可能出现无穷循环例题:例题: 20062006年秋选择题年秋选择题242424.24.程序段程序段”intint x = 3 ;do x = 3 ;do printf(“%dprintf(“%d” , ” , x-x-);while(!x);while(!x);”);”执行结果是执行结果是_._.A. 3 2 1 B.2 C.3 D.A. 3 2 1 B.2 C.3 D.死循环死循环2.2.基本语句基本语

61、句 (4)(4)其他语句其他语句:break:break、continuecontinue、returnreturn。breakbreak语句,用于循环,语句,用于循环,switchswitch语句;语句;continuecontinue语句,用于循环语句;语句,用于循环语句;returnreturn语句,用于函数返回值;语句,用于函数返回值;例题:下列叙述中错误的是例题:下列叙述中错误的是_A.A.用户定义的函数中可以没有用户定义的函数中可以没有returnreturn语句语句B.B.用户定义的函数可以有多个用户定义的函数可以有多个returnreturn语句,以便可以调用语句,以便可以调用

62、一次返回多个函数值一次返回多个函数值C.C.用户定义的函数中若没有用户定义的函数中若没有returnreturn语句,则应当定义函数语句,则应当定义函数为为voidvoidD.D.函数的函数的returnreturn语句中可以没有表达式语句中可以没有表达式3.3.构造类型数据构造类型数据(1)(1)基本类型数组基本类型数组( (一维、二维一维、二维) )。一维数组一维数组定义:定义: 定义并初始化:定义并初始化: 类型名类型名 数组名数组名 常量表达式常量表达式 类型名类型名 数组名数组名 常量表达式常量表达式 表达式列表表达式列表 ; 或或 类型名类型名 数组名数组名 表达式列表表达式列表

63、;引用:引用: 只能引用下标变量只能引用下标变量注意注意: : (a)(a)不能定义动态数组。不能定义动态数组。如:如:intint n ; n ; intint anan;错误错误 (b)(b)只能在定义数组时初始化,以后不可以对数组整体赋值只能在定义数组时初始化,以后不可以对数组整体赋值 ( (除字符数组外除字符数组外) )。(1)(1)基本类型数组基本类型数组( (一维、二维一维、二维) )。一维数组一维数组注意注意: : (c)(c)除了字符数组外,不可整体引用数组;除了字符数组外,不可整体引用数组; (d)(d)一维数组一般用一层循环扫描所有数组元素一维数组一般用一层循环扫描所有数组

64、元素 (e)(e)一维数组在内存中存储是连续的一维数组在内存中存储是连续的例题:例题:20072007年秋填空题年秋填空题2 2, 20072007年秋填空题年秋填空题9 9, 20062006年秋选择题年秋选择题2424 intint a5=1,2,3,4,5; a5=1,2,3,4,5;正确正确 intint a5; a5=1,2,3,4,5; a5; a5=1,2,3,4,5;错误错误例题:例题:20072007年秋填空题年秋填空题2 22.2.如有声明如有声明”char s10 = “remind”;”char s10 = “remind”;”,执行,执行“putsputs( s +

65、2 )( s + 2 );”后的输出结果是后的输出结果是_;_;l例题:例题:20062006年秋选择题年秋选择题252525.25.若有字符数组若有字符数组A A和和B B的声明的声明”static char A = static char A = “ABCDEF”“ABCDEF”,B=A,B,C,D,E,F;”,B=A,B,C,D,E,F;”,则数组则数组A A和数组和数组B B的长度分别是的长度分别是_A.7,6 B.6,7 A.7,6 B.6,7 C.3 D. C.3 D. 死循环死循环例题:例题: 20072007年秋填空题年秋填空题9 9,9.9.以下程序运行时输出结果的第一行是以

66、下程序运行时输出结果的第一行是_;_;第二行是第二行是_。#include #include intint fun( fun( intint *x , *x , intint n ) n ) intint i , j ; i , j ; for( i=j=0;i for( i=j=0;in;in;i+)+) if( *(x+i)%2) *( if( *(x+i)%2) *(x+jx+j+) = *(+) = *(x+ix+i);); return j ; return j ;main()main() intint a10 = 1,5,2,3,8,3,9,7,4,10,n ,i ; a10 =

67、1,5,2,3,8,3,9,7,4,10,n ,i ; n = n = fun(afun(a , 10); , 10); for( i = 0 ; i n ; i+ ) for( i = 0 ; i 0)0) strstr 2*i = stri;str2*i-1=*;i-; 2*i = stri;str2*i-1=*;i-; printf(“%sn”,strprintf(“%sn”,str);); main()main() char str40; char str40; scanf(“%sn”,strscanf(“%sn”,str);); insert(strinsert(str);); 3.

68、3.构造类型数据构造类型数据(1)(1)基本类型数组基本类型数组( (一维、二维一维、二维) )。二维数组二维数组定义:定义: 定义并初始化:定义并初始化: 类型名类型名 数组名数组名 常量表达式常量表达式11常量表达式常量表达式22类型名类型名 数组名数组名 常量表达式常量表达式11常量表达式常量表达式22 表达式列表表达式列表 ;引用:引用: 只能引用下标变量只能引用下标变量注意注意: : 不能定义动态数组。不能定义动态数组。如:如:intint m, n ; m, n ; intint amnamn;错误错误3.3.构造类型数据构造类型数据(1)(1)基本类型数组基本类型数组( (一维、

69、二维一维、二维) )。二维数组二维数组注意注意: : (b).(b).不可整体引用数组;不可整体引用数组; (c).(c).二维数组一般用双层循环扫描所有数组元素二维数组一般用双层循环扫描所有数组元素, ,以及其他以及其他运算。运算。 (a).(a).只能在定义数组时初始化,以后不可以对数组整体赋值。只能在定义数组时初始化,以后不可以对数组整体赋值。 intint a23=1,2,3,4,5 , 6; a23=1,2,3,4,5 , 6;正确正确 intint a23; a23=1,2,3,4,5,6; a23; a23=1,2,3,4,5,6;错误错误 (d).(d).二维数组在内存中连续存

70、储,数组名是二维数组在内存中连续存储,数组名是0 0行行0 0列数组元素列数组元素的地址,的地址,aiai 是第是第i i行第行第0 0列元素的地址。列元素的地址。3.3.构造类型数据构造类型数据(1)(1)基本类型数组基本类型数组( (一维、二维一维、二维) )。例题:下列数组定义中错误的是例题:下列数组定义中错误的是_(0604_(0604国国) )A.intA.int x3=0; x3=0;B.intB.int x23=1,2,3,4,5,6; x23=1,2,3,4,5,6;C.intC.int x3=1,2,3,4,5,6; x3=1,2,3,4,5,6;D.intD.int x23

71、=1,2,3,4,5,6; x23=1,2,3,4,5,6;例题:若有声明例题:若有声明”intint a34,*p=a0,(*q)4=a;”, a34,*p=a0,(*q)4=a;”,则下列叙则下列叙述中错误的是述中错误的是_(07_(07秋江选秋江选26)26)A.a23A.a23与与q23q23等价等价 B. a23B. a23与与p23p23等价等价C.a23C.a23与与* *(p+11p+11)等价)等价 D.a23D.a23与与p=p+11,*pp=p+11,*p等价等价 例如:有下列程序例如:有下列程序(0809(0809国选国选35)35)#include #include

72、#define N 4#define N 4void fun( void fun( intint aNaN, , intint b) b) intint i ; i ; for(ifor(i=0;i=0;iN;iN;i+ ) + ) bibi = = aiiaii; main()main() intint xNxN=1,2,3,4,5,6,7,8,9,10,yN, i;=1,2,3,4,5,6,7,8,9,10,yN, i; fun(x,yfun(x,y);); for(ifor(i=0;i=0;iN;iN;i+) +) printf(“%d”,yiprintf(“%d”,yi);); pri

73、ntf(“nprintf(“n”);”); 程序运行的结果是程序运行的结果是_例题:例题:20072007年春填空题年春填空题1111以下程序运行后输出结果第一行以下程序运行后输出结果第一行_,第二行,第二行_,_,第三行第三行_#include #include stdio.hstdio.h #define N 3#define N 3main()main() intint aNN,bNaNN,bN*N=1,1,i,j; *N=1,1,i,j; for(ifor(i=2;iN*=2;iN*N;iN;i+ ) + ) bibi = bi-1 + b i-2 ; = bi-1 + b i-2 ;

74、 for( i=0;i for( i=0;iN;iN;i+)+) for( j=0;j for( j=0;jN;jN;j+)+) ajiaji=bibi* *N+jN+j; for( i=0;i for( i=0;iN;iN;i+)+) for( j = 0 ; j for( j = 0 ; jN;jN;j+)+) printf(5d , printf(5d ,aijaij);); printf(nprintf(n);); 二维数组二维数组: : (e).(e).二维数组的第一维方括号的常量表达式可以省二维数组的第一维方括号的常量表达式可以省略,此时第一维大小按以下规则决定:略,此时第一维大小

75、按以下规则决定:l 当初值的个数能被二维的常量表达式的值除尽时,所得当初值的个数能被二维的常量表达式的值除尽时,所得商数就是第一维的大小;商数就是第一维的大小; l 当初值的个数不能被第二维的常量表达式的值除尽时,当初值的个数不能被第二维的常量表达式的值除尽时,则:则: 第一维的大小第一维的大小 初值个数初值个数/ /第二维常量表达式值第二维常量表达式值 1 1例如:例如: intint c3= 1,2,3,4,5 ; c3= 1,2,3,4,5 ; 则数组则数组c c的第一维大小是多少?的第一维大小是多少?3.3.构造类型数据构造类型数据(1)(1)基本类型数组基本类型数组( (一维、二维一

76、维、二维) )。字符数组字符数组( (一维,二维一维,二维) ): 有普通一维,二维数组的性质有普通一维,二维数组的性质特点特点: : (a)(a)可以初始化,也可以使用可以初始化,也可以使用strcpystrcpy( )( )赋值赋值 char str10 = char str10 = a a , , b b , , c c ; char str10 = char str10 = abcabc ; char str10char str10;strcpystrcpy( ( strstr , , abcabc ) )(b)(b)可以引用下标变量,也可以整体引用可以引用下标变量,也可以整体引用(

77、(一维数组一维数组) )(c)(c)一般用于存储字符串一般用于存储字符串。(d)(d)字符串的基本概念:串结束符字符串的基本概念:串结束符 , 内存单元地址,字符串内存单元地址,字符串 通常用一个字符数组来存放一个字符串,字符串总是以通常用一个字符数组来存放一个字符串,字符串总是以00存存入数组。用字符串方式赋值比用字符逐个赋值也要多占一个字节,入数组。用字符串方式赋值比用字符逐个赋值也要多占一个字节,存放结束符。存放结束符。3.3.构造类型数据构造类型数据(1)(1)基本类型数组基本类型数组( (一维、二维一维、二维) )。字符数组字符数组( (一维,二维一维,二维) ): 有普通一维,二维

78、数组的性质有普通一维,二维数组的性质特点特点: : (e).(e).字符串函数的使用字符串函数的使用字符串长度字符串长度( (strlenstrlen( ) )( ) )字符串赋值字符串赋值( (strcpystrcpy( ) )( ) )字符串连接字符串连接( (strcatstrcat( ) )( ) )字符串比较字符串比较( (strcmpstrcmp( ) )( ) )函数的参数是函数的参数是地址地址, ,使用使用#include#include 例题:例题:#include#include main( )main( ) char st20=hello0abct; char st20=

79、hello0abct; printf(%dprintf(%d, %d , , %d , strlen(st),sizeof(ststrlen(st),sizeof(st);); 例题:例题:20072007年秋填空题年秋填空题1111#include #include #include #include void fun( char str20,int n )void fun( char str20,int n ) intint i,j,ki,j,k; ; char s20; char s20; for( i=0;in-1;i+ ) for( i=0;in-1;i+ ) k=i; k=i; f

80、or(jfor(j=i+1;j=i+1;jn;jn;j+) +) if( if( strcmpstrcmp( ( strj,strkstrj,strk)0) k = j;)0) k = j; strcpystrcpy( s, ( s, stristri);); strcpystrcpy( ( stristri , , strkstrk);); strcpystrcpy( ( strkstrk , s) , s) 以上程序运行时第一行是以上程序运行时第一行是_,_,第二行是第二行是_._.main( )main( ) char char str20=str20=PASCAL,BASPASCAL,

81、BASIC,FORTRAN,C,COBOLIC,FORTRAN,C,COBOL,Smalltalk,Smalltalk; intint i; i; fun(strfun(str , 6); , 6); for(ifor(i=0;i6;i+) =0;i6;i+) printf(%sn,striprintf(%sn,stri);); (f).(f).字符串的输入输出函数字符串的输入输出函数( gets ,( gets ,scanfscanf 和和 puts , puts , printfprintf) )如:如:char c10;char c10;gets(cgets(c)-)-遇回车符中止;遇回

82、车符中止;scanfscanf( (“s s“,c,c)-)-遇空格中遇空格中止止例题:例题:#include #include main( )main( ) char str13; char str13; scanf(“%s”,strscanf(“%s”,str);); printf(%s,strprintf(%s,str);); 例题:例题:#include #include main( )main( ) char str13; char str13; gets(strgets(str);); puts(strputs(str);); 对于下列两段程序如输入数据为:对于下列两段程序如输入数

83、据为:abcd1234 abcd1234 efghefgh 则输出结果分别为则输出结果分别为_。例题:例题:20062006年春选择题年春选择题27272727. .设有如下程序设有如下程序 #include #include main() main() char s128=0,*p = s ; char s128=0,*p = s ; while(strcmp(s,ENDwhile(strcmp(s,END) gets(sgets(s);); while(*p) while(*p) putcharputchar( *p+);( *p+); A.A.所有输入的字符串都能被完整的输出所有输入的字

84、符串都能被完整的输出B.B.所有输入的字符串都不能被完整输出所有输入的字符串都不能被完整输出C.C.只能完整输出第一个字符串只能完整输出第一个字符串D.D.只能完整输出最后一个字符串只能完整输出最后一个字符串例题:有下列程序例题:有下列程序(0804(0804国选国选35)35)#include #include void void fun(charfun(char *a , char *b) *a , char *b) while(*a=a) a+; while(*a=a) a+; while(*b=*a) while(*b=*a) b+;ab+;a+;+; main()main() cha

85、r *s=“*a*b*”,t80; char *s=“*a*b*”,t80; fun( s , t ) ; fun( s , t ) ;puts(tputs(t);); 程序运行结果是程序运行结果是_A.*a*b A.*a*b B.aB.a*b *b C.aC.a*b* *b* D.abD.ab例题:以下程序运行时输出结果是例题:以下程序运行时输出结果是_(08_(08秋江填秋江填9 9题题) )#include#include #include#include void void sfsf( char *s1,char *s2)( char *s1,char *s2) if( *s1 = *

86、s2) if( *s1 = *s2) sfsf( s1 + 1 , s2 + 1 ); ( s1 + 1 , s2 + 1 ); void main()void main() char a20 = “ABC”, b20 = “xyz” ; char a20 = “ABC”, b20 = “xyz” ; sfsf( ( a+strlen(aa+strlen(a) , b );) , b ); puts(aputs(a);); 3.3.构造类型数据构造类型数据(1)(1)基本类型数组基本类型数组( (一维、二维一维、二维) )。字符数组字符数组( (一维,二维一维,二维) ): 有普通一维,二维数

87、组的性质有普通一维,二维数组的性质特点特点: :(g).(g).二维数组的引用:下标引用法和数组名加第一维下标二维数组的引用:下标引用法和数组名加第一维下标 例题:下列程序按下面指定的数据给例题:下列程序按下面指定的数据给x x数组的下三角置数,并按如数组的下三角置数,并按如 下形式输出,请填空。下形式输出,请填空。(0809(0809国国) ) 4 4 3 7 3 7 2 6 9 2 6 9 1 5 8 10 1 5 8 10 #include #include main( ) main( ) intint x44 , n=0,i,j; x44 , n=0,i,j; for(jfor(j=0

88、;j4;j+)=0;j=j;_(1)_) =3;i=j;_(1)_) n+;xijn+;xij=_(2)_; =_(2)_; for(ifor(i=0;i4;i+)=0;i4;i+) for(jfor(j=0;j=0;j=i;ji;j+) printf(“%3d” , +) printf(“%3d” , xijxij);); printf(“nprintf(“n”); ”); 3.3.构造类型数据构造类型数据(2)(2)结构体变量和数组。结构体变量和数组。 结构体数据类型的定义;结构体数据类型的定义;structstruct data data char char chch; ; intint

89、 x; x; float y; float y; ; ;结构体变量的定义;结构体变量的定义;1.struct data1.struct data char char chch; ; intint x; x; float y; float y; x1,x2x1,x2; ;2.struct data2.struct data char char chch; ; intint x; x; float y; float y; ; ;structstruct data x1, x2; data x1, x2;3.struct 3.struct char char chch; ; intint x; x;

90、 float y; float y; x1,x2x1,x2; ;注意注意: :第三种方式的变量定义只能在结构体定义之后出现一次。第三种方式的变量定义只能在结构体定义之后出现一次。例题:例题: 0808年春选择题年春选择题30 30 3030. .以下结构体变量以下结构体变量stu1stu1的声明形式中,错误的是的声明形式中,错误的是_A.typedefA.typedef structstruct stucharstuchar name10;float score; name10;float score; STU;STU stu1; STU;STU stu1;B.#defineB.#define

91、 STU STU structstruct stustu STUcharSTUchar name10;float score ;stu1; name10;float score ;stu1;C.structC.struct stucharstuchar name10;float score;stu1; name10;float score;stu1;D.structD.struct stucharstuchar name10;float name10;float score;STU;STUscore;STU;STU stu1; stu1;structstruct data x ; data x

92、 ;structstruct data data数据类型数据类型x xstructstruct data data型变量型变量structstruct data x = data x = a a , 23 , 3.789 , 23 , 3.789 ; ;structstruct data b= data b= a a ,23,3.789,23,3.789, , d d ,11,4.31,11,4.31 ; ;sizeofsizeof()运算符测试某一种类型数据所占存储空间长度()运算符测试某一种类型数据所占存储空间长度例如:例如:sizeofsizeof( ( structstruct dat

93、a ) , data ) , sizeof(xsizeof(x) , ) , sizeofsizeof( b )( b )结构体变量、结构体数组的声明及初始化;结构体变量、结构体数组的声明及初始化;structstruct data data char char chch; ; intint x; x; float y; float y; ; ;3.3.构造类型数据构造类型数据(2)(2)结构体变量和数组。结构体变量和数组。 结构体变量中成员、结构体数组元素中成员的赋值和引用。结构体变量中成员、结构体数组元素中成员的赋值和引用。structstruct data a = data a = a

94、a , 23 , 3.789 , 23 , 3.789 ; ;structstruct data b2= data b2= a a ,23,3.789,23,3.789, , d d ,11,4.31,11,4.31 ; ;例如:例如:a.cha.ch , a.xa.x , , a.ya.y; ; b0.ch , b1.x , b0.y; b0.ch , b1.x , b0.y;例如:例如:a.cha.ch = = c c , a.xa.x = 3, = 3, a.ya.y = 0.0; = 0.0; b0.ch = b0.ch = j j , b1.x = 8 , b0.y=9.0; , b

95、1.x = 8 , b0.y=9.0;例题:有下列程序:例题:有下列程序:#include #include main() main() structstruct STUcharSTUchar name9;char name9;char sex;doublesex;double score2; score2; structstruct STU a=“ZHA0”,m,85.5,90.0, STU a=“ZHA0”,m,85.5,90.0, b=“Qian”,f,95.5,92.0; b=“Qian”,f,95.5,92.0; b = a; b = a; printf(“%s,%c,%2.0f,%

96、2.0fn”,b.name,b.sex,b.score0,b.sprintf(“%s,%c,%2.0f,%2.0fn”,b.name,b.sex,b.score0,b.score1);core1);程序运行结果是程序运行结果是_(0809_(0809国选国选37)37)例题:例题:20072007年春选择题年春选择题29292929. .如有如下的类型定义和变量声明,则在给出的选项中值不为如有如下的类型定义和变量声明,则在给出的选项中值不为7 7的的表达式为表达式为_._.structstruct ssss intint a ; a ; structstruct ssss *b ; x3= 5

97、,&x1,7,&x2 ,9,0, *b ; x3= 5,&x1,7,&x2 ,9,0, * *ptrptr = &x0; = &x0;A.ptrA.ptr-a -a B.(+ptrB.(+ptr)-a C.x1.a D.x0.b-a)-a C.x1.a D.x0.b-a结构体数据成员的引用方式:结构体数据成员的引用方式: (1) (1) 结构体变量结构体变量. .数据成员名数据成员名 (2) (2) 指向结构体变量的指针变量指向结构体变量的指针变量-数据成员名数据成员名 (3) (3) 数组元素数组元素. .数据成员名数据成员名3.3.构造类型数据构造类型数据(3)(3)联合体变量和数组。联合

98、体变量和数组。 联合体数据类型的定义;联合体数据类型的定义;union dataunion data char char chch; ; intint x ; x ; float y; float y; intint a5; a5; ;注意区分:注意区分: “ “联合体联合体”:各成员占相同的地址,:各成员占相同的地址,所占内存长度等于最长的成员所占内存;所占内存长度等于最长的成员所占内存; “ “结构体结构体”:各成员占不同的地址,:各成员占不同的地址,所占内存长度等于全部成员所占内存之所占内存长度等于全部成员所占内存之和。和。3.3.构造类型数据构造类型数据(3)(3)联合体变量和数组。联

99、合体变量和数组。 联合体变量和数组的声明;联合体变量和数组的声明;union dataunion data char char chch; ; intint x ; x ; float y; float y; intint a5; a5; a,b10;a,b10;union data a , b10;union data a , b10;联合体变量的定义形式也有三种,与结构体变量定义类似联合体变量的定义形式也有三种,与结构体变量定义类似union dataunion data char char chch; ; intint x ; x ; float y; float y; intint a

100、5; a5; ;union union char char chch; ; intint x ; x ; float y; float y; intint a5; a5; a,b10;a,b10;3.3.构造类型数据构造类型数据(3)(3)联合体变量和数组。联合体变量和数组。 联合体变量中成员、联合体数组元素中成员的赋值和引用。联合体变量中成员、联合体数组元素中成员的赋值和引用。联合体变量名联合体变量名. .成员变量名成员变量名union dataunion data char char chch; ; intint x ; x ; float y; float y; intint a5; a

101、5; ;char char n;unionn;union data a , b10; data a , b10;a.cha.ch = = m m ,b0.x = 9;n = ,b0.x = 9;n = a.cha.ch; ;4.4.函数函数(1)(1)非递归函数的定义、声明、调用及执行过程。非递归函数的定义、声明、调用及执行过程。 函数函数的定义的定义( (一般形式一般形式) ):类型标识符类型标识符 函数名函数名( (类型标识符类型标识符 形参形参, ,类型标识符类型标识符 形参形参,.),.) . . 函数体函数体 . 说明:说明:(a).(a).类型标识符表示函数返回值类型类型标识符表示

102、函数返回值类型(return (return 返回值返回值) );(b).(b).函数名命名要符合标识符规则函数名命名要符合标识符规则(c).(c).函数定义的头部结束处函数定义的头部结束处没有没有分号分号(d).(d).形参类型可以基本类型,数组,结构体类型,联合体类型形参类型可以基本类型,数组,结构体类型,联合体类型4.4.函数函数(1)(1)非递归函数的定义、声明、调用及执行过程。非递归函数的定义、声明、调用及执行过程。函数的声明函数的声明( (函数原型函数原型) ) 类型标识符类型标识符 函数名函数名( (类型标识符类型标识符 形参形参, ,类型标识符类型标识符 形参形参,.),.);

103、函数的调用函数的调用 函数名(实参,实参,函数名(实参,实参,); ;说明:说明:(a)(a)形参变量只有在被调用时才分配内存单元,在调用结束时,即形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元;刻释放所分配的内存单元;(b(b)实参可以是常量,变量,表达式,函数等,无论实参是何种类)实参可以是常量,变量,表达式,函数等,无论实参是何种类型的量,在进行函数调用时,他们都必须具有确定的值,以便把这型的量,在进行函数调用时,他们都必须具有确定的值,以便把这些值传给形参;些值传给形参;4.4.函数函数(1)(1)非递归函数的定义、声明、调用及执行过程。非递归函数的定义、

104、声明、调用及执行过程。说明:说明:(c)(c)括号中参数表列为形参,形参要一一说明类型;括号中参数表列为形参,形参要一一说明类型;(d)(d)实参,形参在数量上,类型上,顺序上应严格一致,否则会发实参,形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配的错误;生类型不匹配的错误;(e)(e)实参,形参可以同名,但它们都是所处函数内部的局部变量;实参,形参可以同名,但它们都是所处函数内部的局部变量;(f)(f)函数调用时,实参值传递给形参单向;函数调用时,实参值传递给形参单向;例题:例题:20072007年秋选择题年秋选择题28282828. .若有声明若有声明long fun( lo

105、ng fun( intint *x , *x , intint n , long *s ); n , long *s );intint a4 = a4 = 1,2,3,4;long b ,c ;,1,2,3,4;long b ,c ;,则以下函数调用形式中正确的是则以下函数调用形式中正确的是_A.cA.c = fun( a, 4, b ) ; = fun( a, 4, b ) ; B.cB.c = fun( a , 4 , &b ); = fun( a , 4 , &b );C.cC.c=fun(a4,4,b ); =fun(a4,4,b ); D.cD.c=fun( a, 4 , &b )

106、;=fun( a, 4 , &b ) ;例题:若有以下函数首部例题:若有以下函数首部(0609(0609国选国选32)32) intint fun( double x10,int *n) fun( double x10,int *n) 则下列针对此函数的函数声明语句中正确的是则下列针对此函数的函数声明语句中正确的是_A.intA.int fun( double x , fun( double x , intint *n); *n); B.intB.int fun( double , fun( double , intint ); );C.intC.int fun(doublefun(doubl

107、e *x , *x , intint n ); n ); D.intD.int fun(doublefun(double * , * , intint *); *);4.4.函数函数(2)(2)递归函数的定义、声明、调用及执行过程。递归函数的定义、声明、调用及执行过程。例题:下列程序的输出结果是例题:下列程序的输出结果是_(08040804国填国填1313)#include #include void fun( void fun( intint x ) x ) if( x/20 ) fun(x/2); if( x/20 ) fun(x/2); printf(“%dprintf(“%d” , x

108、 );” , x ); main()main() fun(3);printf(“n”); fun(3);printf(“n”); 一个函数在它的函数体内调用它自身称为递归调用,这种函数称一个函数在它的函数体内调用它自身称为递归调用,这种函数称为递归函数。为递归函数。 传数值:将常量或表达式的值传递给函数;将基本传数值:将常量或表达式的值传递给函数;将基本类型变量的值传递给函数;将数值元素的值传递给函数;类型变量的值传递给函数;将数值元素的值传递给函数;将结构体变量中一个成员的值传递给函数;将结构体变量将结构体变量中一个成员的值传递给函数;将结构体变量全部成员的值传递给函数;全部成员的值传递给函

109、数; 函数调用时实际参数类型与形式参数类型的兼容。函数调用时实际参数类型与形式参数类型的兼容。 (上机的改错题)(上机的改错题) 传地址值传地址值: :将基本类型变量、结构体变量的地址值传将基本类型变量、结构体变量的地址值传递给函数递给函数; ;将基本类型数组元素、结构体类型数组元素的将基本类型数组元素、结构体类型数组元素的地址值传递给函数;地址值传递给函数;(3)(3)函数调用时参数的传递。函数调用时参数的传递。例题:例题:20072007年秋填空题年秋填空题7 7#include #include intint t ; t ;intint sub( sub( intint *s ) *s

110、) *s += 1 ; *s += 1 ; t+=*s; t+=*s; return t; return t; main()main() for( i=1 ; i4;i+ ) for( i=1 ; i4;i+ ) printf(“%4d” , sub( &i); printf(“%4d” , sub( &i); 程序运行的结果是程序运行的结果是_4.4.函数函数(4)(4)函数返回值。函数返回值。 (a)(a)在被调用函数中用在被调用函数中用return , return , 从函数返回一个常量从函数返回一个常量的值、一个表达式的值、一个基本类型变量的值、一个数的值、一个表达式的值、一个基本类

111、型变量的值、一个数组元素的值、结构体变量中一个成员的值;组元素的值、结构体变量中一个成员的值; (b)(b)使用全局变量做函数返回值使用全局变量做函数返回值( (全局变量对所有函数全局变量对所有函数都有效都有效) ) (c)(c)被调用的函数没有返回值,将函数的返回值类型定被调用的函数没有返回值,将函数的返回值类型定义为义为voidvoid(上机的改错题)(上机的改错题) (d)(d)在函数中允许有多个在函数中允许有多个returnreturn语句,但每次调用只能语句,但每次调用只能用一个用一个returnreturn语句执行,因此只能返回一个函数值。语句执行,因此只能返回一个函数值。4.4.

112、函数函数(4)(4)函数返回值。函数返回值。 (d).(d).函数的返回值类型由函数的定义类型确定。函数的返回值类型由函数的定义类型确定。 float float fun(intfun(int x , x , intint y ) y ) . . return x ; return x ; 函数的返回值是函数的返回值是floatfloat注意:注意:l 函数值的类型和函数定义中函数的类型应保持一致。函数值的类型和函数定义中函数的类型应保持一致。如果两者不如果两者不一致,则以函数类型为准,自动进行类型转换。一致,则以函数类型为准,自动进行类型转换。l 如函数值为整型,在函数定义时可以省去类型说明

113、。如函数值为整型,在函数定义时可以省去类型说明。 (f).(f).被调用函数返回后,在主调函数中继续执行调用函数语句被调用函数返回后,在主调函数中继续执行调用函数语句的下一条语句。的下一条语句。函数调用的方式:函数调用的方式:l函数表达式:函数表达式: 如:如:z = max( x , y ) ;z = max( x , y ) ;l函数语句:函数语句: 函数调用的一般形式加上分号即构成函数语句。函数调用的一般形式加上分号即构成函数语句。例如:例如:printfprintf( ( hello!hello! ););scanfscanf( ( %d%d ,&a,&a) );l函数实参:函数实参:

114、 函数作为另一个函数调用的实际参数出现。这种情况函数作为另一个函数调用的实际参数出现。这种情况是把函数的返回值作为实参进行传递,因此要求函数必须有返回值的。是把函数的返回值作为实参进行传递,因此要求函数必须有返回值的。 printfprintf( ( d d , ,max(xmax(x , y ) , y ););例题例题:(0704(0704国选国选26)26)在在C C语言中,函数返回值的类型最终取决于语言中,函数返回值的类型最终取决于_A.A.函数定义时在函数首部所说明的函数类型函数定义时在函数首部所说明的函数类型B.returnB.return 语句中表达式值的类型语句中表达式值的类型

115、C.C.调用函数时主调函数所传递的实参类型调用函数时主调函数所传递的实参类型D.D.函数定义时形参的类型函数定义时形参的类型4.4.函数函数(5)(5)变量的作用域:全局变量。变量的作用域:全局变量。说明:说明:(a)(a)在函数外部定义的变量称为全局变量,有效范围从定在函数外部定义的变量称为全局变量,有效范围从定义变量的位置开始到本源文件结束;义变量的位置开始到本源文件结束;(b)(b)如果同一个源文件中,全局变量与局部变量同名,则如果同一个源文件中,全局变量与局部变量同名,则在局部变量的作用范围内,外部变量被在局部变量的作用范围内,外部变量被“屏蔽屏蔽”;4.4.函数函数(5)(5)变量的

116、作用域:局部变量与函数的形式参数变量的作变量的作用域:局部变量与函数的形式参数变量的作用域。用域。说明:说明:(a)(a)主函数定义的变量只能在主函数中使用,不能在其主函数定义的变量只能在主函数中使用,不能在其它函数中使用;它函数中使用;(b)(b)形参属于被调用函数的局部变量,实参属于主调函形参属于被调用函数的局部变量,实参属于主调函数的局部变量;数的局部变量;(c)(c)允许在不同的函数中使用相同的变量名,它们代表不同允许在不同的函数中使用相同的变量名,它们代表不同的对象,分配不同的单元,互不干扰,也不发生混淆;的对象,分配不同的单元,互不干扰,也不发生混淆;(f)(f)在复合语句中也可定

117、义变量,其作用域只在复合语句中;在复合语句中也可定义变量,其作用域只在复合语句中;4.4.函数函数(5)(5)变量的作用域:局部变量与函数的形式参数变量的作变量的作用域:局部变量与函数的形式参数变量的作用域。用域。说明:说明:(e)(e)在全局变量的作用范围内如遇同名的宏定义则在宏定在全局变量的作用范围内如遇同名的宏定义则在宏定义后,同名的标识符应该用宏名置换。义后,同名的标识符应该用宏名置换。intint PI = 3.141592; PI = 3.141592;#define PI 3.14#define PI 3.14main( )main( ) float a = PI; float

118、a = PI; 4.4.函数函数(6)(6)局部变量、函数形式参数变量的存储类型和生存期。局部变量、函数形式参数变量的存储类型和生存期。说明:说明:存储方法分两类:存储方法分两类:静态存储方式:指在程序运行期间分配固定的存储空间静态存储方式:指在程序运行期间分配固定的存储空间的方式的方式动态存储方式:在程序运行期间根据需要进行动态分配的动态存储方式:在程序运行期间根据需要进行动态分配的 全局变量,加全局变量,加staticstatic声明的局部变量声明的局部变量 函数形式参数,自动变量函数形式参数,自动变量( (未加未加staticstatic声明的局部变量声明的局部变量) ),函数调用时现场

119、保护和返回地址,函数调用时现场保护和返回地址4.4.函数函数(7)(7)存储类别存储类别说明关键字:说明关键字:auto,static,register,externauto,static,register,extern。说明:说明:auto:auto:函数中的函数中的局部变量局部变量,如不专门说明,如不专门说明staticstatic存储类别,存储类别,都是动态分配存储空间的,数据存储在动态存储区。都是动态分配存储空间的,数据存储在动态存储区。static:static:函数中的函数中的局部变量局部变量的在函数调用结束后不消失而的在函数调用结束后不消失而保留原值,则定义该变量为保留原值,则定

120、义该变量为”静态局部变量静态局部变量”,用,用staticstatic进行说明进行说明4.4.函数函数(7)(7)存储类别存储类别说明关键字:说明关键字:auto,static,register,externauto,static,register,extern。说明:说明:对静态局部变量的几点说明(对静态局部变量的几点说明(staticstatic):):l 静态局部变量数据静态存储类别,在静态存储区分配静态局部变量数据静态存储类别,在静态存储区分配存储单元存储单元l 静态局部变量在静态局部变量在编译时赋初值,即只是赋初值一次编译时赋初值,即只是赋初值一次;而;而对自动变量赋值是在函数调用时

121、进行的,每调用一次函数对自动变量赋值是在函数调用时进行的,每调用一次函数重新给一次初值,相当于执行一次赋值语句。重新给一次初值,相当于执行一次赋值语句。对静态局部变量的几点说明:对静态局部变量的几点说明:l 如果在定义局部变量时不赋给初值的话,则对静态局部如果在定义局部变量时不赋给初值的话,则对静态局部变量来说,变量来说,编译时自动赋给初值编译时自动赋给初值0 0(对数值变量)或空字(对数值变量)或空字符符( (对字符变量对字符变量) );对自动局部变量,如果不赋初值则它的;对自动局部变量,如果不赋初值则它的值是一个不确定的值。值是一个不确定的值。l 有时在程序设计时希望某些外部变量只限于本文

122、件中使有时在程序设计时希望某些外部变量只限于本文件中使用,而不能被其他文件引用,这时可以在定义外部变量时用,而不能被其他文件引用,这时可以在定义外部变量时加一个加一个staticstatic声明,对于函数名和函数类型前加声明,对于函数名和函数类型前加staticstatic功功能相同能相同extern:extern: 全局变量全局变量在函数外部定义,作用域从变量定义处开始,在函数外部定义,作用域从变量定义处开始,到本源程序结束处。如果在定义点之前的函数想引用该外到本源程序结束处。如果在定义点之前的函数想引用该外部变量,则应该在引用之前用关键字部变量,则应该在引用之前用关键字externexte

123、rn对该变量作对该变量作”外部变量声明外部变量声明”。表示该变量是一个已经定义的外部变量。表示该变量是一个已经定义的外部变量。有了此声明,就可以从有了此声明,就可以从“声明声明”处起,合法地使用该外部处起,合法地使用该外部变量了。变量了。4.4.函数函数(7)(7)存储类别说明关键字:存储类别说明关键字: auto,static,register,externauto,static,register,extern。例题:例题:1.1.在声明局部变量时,不能使用的存储类别标识符是在声明局部变量时,不能使用的存储类别标识符是_(0704_(0704江江) )2.2.在在C C语言中,只有在使用时才

124、占用内存单元的变量,其存储类型语言中,只有在使用时才占用内存单元的变量,其存储类型是是_(08040804国)国)A.autoA.auto和和register register B.externB.extern 和和registerregisterC.autoC.auto和和static static D.staticD.static和和registerregisterregister:register: 为了提高效率,为了提高效率,C C语言允许将局部变量的值存放在语言允许将局部变量的值存放在CPUCPU中的寄存器,这种变量叫中的寄存器,这种变量叫”寄存器变量寄存器变量”,用关键字,用关键字

125、”register”register”作声明作声明4.4.函数函数(7)(7)存储类别说明关键字:存储类别说明关键字:auto,static,register,externauto,static,register,extern。例题:例题:6.6.以下程序运行后结果是以下程序运行后结果是_(0704_(0704江填江填6)6)#include #include stdio.hstdio.h intint a ; a ;intint m( m( intint a ) a ) static static intint s ; return ( +s ) + ( -a ) ; s ; return

126、( +s ) + ( -a ) ;void main()void main() intint a = 2 ; a = 2 ; printf(%dprintf(%d , ,m(m(am(m(a););register:register: 为了提高效率,为了提高效率,C C语言允许将局部变量的值存放在语言允许将局部变量的值存放在CPUCPU中的寄存中的寄存器,这种变量叫器,这种变量叫”寄存器变量寄存器变量”,用关键字,用关键字”register”register”作声明作声明4.4.函数函数(8)main(8)main函数命令行参数。函数命令行参数。 main( main( intint argc

127、argc , char * , char *argvargv ) ) mainmain函数由系统调用,通过命令行获得函数由系统调用,通过命令行获得 例如:例如:cfilecfile Computer Computer C_LanguageC_Language argcargc = 3 ; argv0 = = 3 ; argv0 = cfilecfile ; argv1 = argv1 = ComputerComputer ; argv2 = argv2 = C_LanguageC_Language ; 5.5.指针类型数据指针类型数据(1)(1)指针与地址的概念,取地址运算符指针与地址的概念,

128、取地址运算符& &的使用;的使用; 在在C C语言中,指针是指一个变量的地址,用来存放指针的变量称语言中,指针是指一个变量的地址,用来存放指针的变量称为指针变量,它是一种特殊的变量,它存放的是某个内存单元的地为指针变量,它是一种特殊的变量,它存放的是某个内存单元的地址值。址值。 一个指针是一个地址,是一个常量。而一个指针变量却可以被一个指针是一个地址,是一个常量。而一个指针变量却可以被赋予不同的指针值,是变量。赋予不同的指针值,是变量。(2)(2)基本类型的指针操作;基本类型的指针操作;a.a.定义指针变量的一般形式为:定义指针变量的一般形式为: 类型说明符类型说明符 * *指针变量指针变量1

129、 1,* *指针变量指针变量2 2,.;.;b.b.一个指针变量只能同一类型的变量。一个指针变量只能同一类型的变量。c.c.与指针和指针变量有关的两个运算符;与指针和指针变量有关的两个运算符; * *: :指针运算符指针运算符( (或称或称“间接访问间接访问”运算符运算符) ) &:&:取地址运算符取地址运算符 其中,其中,* *表示这是一个指针变量,变量名即为定义的指针变量名,表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示本指针所指向的变量的数据类型。类型说明符表示本指针所指向的变量的数据类型。5.5.指针类型数据指针类型数据(2)(2)基本类型的指针操作;基本类型的指针操

130、作;c.c.与指针和指针变量有关的两个运算符;与指针和指针变量有关的两个运算符; * *: :指针运算符指针运算符( (或称或称“间接访问间接访问”运算符运算符) ) &:&:取地址运算符取地址运算符 通过通过* *号可以引用一个存储单元,例如:号可以引用一个存储单元,例如:例题:例题:intint i =123 , *p=&i; i =123 , *p=&i; 不同类型的指针变量的所占的存储空间是相同的。不同类型的指针变量的所占的存储空间是相同的。例题:例题:intint *pi; float *pf ; char *pc;. *pi; float *pf ; char *pc;.d.d.指

131、向变量的赋值运算的几种形式;指向变量的赋值运算的几种形式;l 指针变量初始化赋值指针变量初始化赋值例如例如: : intint a ; a ; intint *p = &a ; *p = &a ;l 把一个变量的地址赋予指向相同数据类型的指针变量把一个变量的地址赋予指向相同数据类型的指针变量例如例如: : intint a ; a ; intint *p ; p = &a ; *p ; p = &a ;l 把一个指针变量的值赋予指向相同类型变量的另一个指针变量把一个指针变量的值赋予指向相同类型变量的另一个指针变量例如例如: : intint a a ,* *pa= &a , *pa= &a ,

132、 *pbpb; ; pbpb = pa ; = pa ;l 把数组的首地址赋予指向数组的指针变量把数组的首地址赋予指向数组的指针变量例如例如: : intint a5 a5 ,* *pa= a ;pa= a ;l 把字符串的首地址赋予指向字符类型的指针变量把字符串的首地址赋予指向字符类型的指针变量例如例如: char *pc ;: char *pc ; pc= pc= C_LanguageC_Language ; ;l 把函数的入口地址赋予指向函数的指针变量把函数的入口地址赋予指向函数的指针变量例如例如: : intint max( max( intint a , a , intint b )

133、; b ); intint (*pf)( (*pf)( intint a , a , intint b ); b ); pf = max ; /*max pf = max ; /*max是函数名是函数名* */ / 指向函数的指针变量的一般定义形式为:指向函数的指针变量的一般定义形式为: 数据类型数据类型 (* *指针变量名)指针变量名)( (函数参数表列函数参数表列) )例题:设有定义语句例题:设有定义语句intint (* (*f)(intf)(int);,);,则下列叙述正确的则下列叙述正确的是是_。(0804(0804国选国选40)40)A.fA.f是类型为是类型为intint的指针变

134、量的指针变量B.fB.f是指向函数的指针变量,该函数具有一个是指向函数的指针变量,该函数具有一个intint类型的形类型的形态态C.fC.f是指向是指向intint类型一维数组的指针变量类型一维数组的指针变量D.fD.f是函数名,该函数的返回值是其类型为是函数名,该函数的返回值是其类型为intint类型的地址类型的地址例题:例题:20062006年秋填空题年秋填空题4 44.4.若有函数声明若有函数声明”intint sub( sub( intint (*x1)( ),int (*x1)( ),int *x2);”,*x2);”,则形式参数则形式参数x1x1是指向是指向_的指针变量。的指针变量

135、。5.5.指针类型数据指针类型数据(3)(3)基本类型数组的指针操作;基本类型数组的指针操作;数组元素指针的获得数组元素指针的获得( (指针常量指针常量) )及算术运算;及算术运算; 数组的指针是指数组的起始地址,数组元素的指针是数组元素的数组的指针是指数组的起始地址,数组元素的指针是数组元素的地址。地址。 C C语言规定数组名代表数组的首地址,也就是第一个元算的地址。语言规定数组名代表数组的首地址,也就是第一个元算的地址。 例如:例如:intint a10 , *p ; a10 , *p ; p = a ;/*p =&a0 ;*/ p = a ;/*p =&a0 ;*/则则: :aiai 数

136、组元素的地址表示方法?数组元素的地址表示方法?下列哪些运算是合法的?下列哪些运算是合法的?(i(i的取值范围的取值范围0=i=9)0=i=9)A.p+iA.p+i ; ;B.a+iB.a+i C.&piC.&pi ;D.&aiD.&ai; ; E.pE.p+ ; + ; F.aF.a+5.5.指针类型数据指针类型数据(3)(3)基本类型数组的指针操作;基本类型数组的指针操作; 数组行指针的获得数组行指针的获得( (指针常量指针常量) )及算术运算及算术运算例如:例如: intint a23 , (*p)3; a23 , (*p)3; p = a ; p = a ; b. pb. p的增值为一维

137、数组的长度;的增值为一维数组的长度; a.pa.p指向包含指向包含4 4个整型数据的一维数组个整型数据的一维数组; ;说明:说明: (*p)0= a00; (*p)1= a01; (*p)2= a02; (*p)0= a00; (*p)1= a01; (*p)2= a02;如:如:p+ ; p+ ; (*p)0= a10; (*p)1= a11; (*p)2= a12; (*p)0= a10; (*p)1= a11; (*p)2= a12;c.c.运算优先级高于运算优先级高于* *; ;l 指针运算指针运算( + , -)( + , -)1.1.加减算术运算加减算术运算 对于指向数组的指针变量

138、,可以加上或减去一个整数对于指向数组的指针变量,可以加上或减去一个整数n n。设。设papa是是指向数组指向数组a a的指针变量,则的指针变量,则pa+n,pa-npa+n,pa-n,pa+,papa+,pa-运算都是合法的。运算都是合法的。 指针变量的加减运算只能对数组指针变量进行,对指向其它类型指针变量的加减运算只能对数组指针变量进行,对指向其它类型变量的指针变量作加减运算是毫无意义的。变量的指针变量作加减运算是毫无意义的。2.2.两个指针变量之间的运算两个指针变量之间的运算 只有指向同一数组的两个指针变量之间才能进行运算,否则运算只有指向同一数组的两个指针变量之间才能进行运算,否则运算毫

139、无意义。毫无意义。(1)(1)两指针变量相减:两指针变量相减所得之差是两个指针所指数组两指针变量相减:两指针变量相减所得之差是两个指针所指数组元素之间相差的元素个数。元素之间相差的元素个数。(2)(2)两指针变量进行关系运算:指向同一数组的两指针变量进行关系两指针变量进行关系运算:指向同一数组的两指针变量进行关系运算可表示它们所指数组元素之间的关系。运算可表示它们所指数组元素之间的关系。(6)(6)指针数组的声明和使用;指针数组的声明和使用; 一个指针数组的元素值为指针则是指针数组,指针数组是一组有一个指针数组的元素值为指针则是指针数组,指针数组是一组有序的指针的集合。指针书的所有元素都必须是

140、具有相同存储类型和序的指针的集合。指针书的所有元素都必须是具有相同存储类型和指向相同数据类型的指针变量。指向相同数据类型的指针变量。指针数组说明的一般形式:指针数组说明的一般形式: 类型说明符类型说明符 * *数组名数组名 数组长度数组长度 例如:例如: intint *pa3; *pa3; papa是一个指针数组,有三个数组元素,每个元素都是一个指针,是一个指针数组,有三个数组元素,每个元素都是一个指针,指向的变量数据类型是整型。指向的变量数据类型是整型。例如:例如: char *name=char *name= BasicBasic , , C C , , FortranFortran ;

141、 注意:指针数组和二维数组指针变量的区别。注意:指针数组和二维数组指针变量的区别。 二维数组指针变量是单个的变量,其一般形式中二维数组指针变量是单个的变量,其一般形式中”(* *指针变量指针变量名)名)”两边的括号不可少。而指针数组类型表示的是多个指针两边的括号不可少。而指针数组类型表示的是多个指针( (一一个有序指针个有序指针) )在一般形式中在一般形式中”*”*指针数组名指针数组名”两边不能有括号。两边不能有括号。例如:例如:intint (*p)3; (*p)3; 表示一个指向二维数组的指针变量。该二维数组的列数为表示一个指向二维数组的指针变量。该二维数组的列数为3 3或分或分解为一维数

142、组的长度为解为一维数组的长度为3.3.例如:例如: intint *p3; *p3; 表示表示p p是一个指针数组,有三个下标变量是一个指针数组,有三个下标变量p0,p1,p2p0,p1,p2均为指均为指针变量。针变量。 指针数组也常用来表示一组字符串,这时指针数组的每个元素被指针数组也常用来表示一组字符串,这时指针数组的每个元素被赋予一个字符串的首地址。赋予一个字符串的首地址。(7)(7)二级指针的声明和使用;二级指针的声明和使用; 如果一个指针变量存放的又是一个指针变量的地址,则称这个指如果一个指针变量存放的又是一个指针变量的地址,则称这个指针变量为指向指针的指针变量。通过指针访问变量称为

143、间接访问。针变量为指向指针的指针变量。通过指针访问变量称为间接访问。 定义一个指向指针型数据的指针变量的形式如下:定义一个指向指针型数据的指针变量的形式如下: char *pchar *p;(8)(8)指针作为函数的参数传递给函数指针作为函数的参数传递给函数: :将基本类型变量的指将基本类型变量的指针、结构体变量的指针、数组元素的指针、数组的行指针、针、结构体变量的指针、数组元素的指针、数组的行指针、函数的指针传递给函数;函数的指针传递给函数;typedeftypedef- -说明一种新类型名说明一种新类型名 C C语言可以用语言可以用typedeftypedef说明一种新类型名,说明新类型名

144、的语句是:说明一种新类型名,说明新类型名的语句是: typedeftypedef 类型名类型名 标识符标识符; ; “ “类型名类型名”一定是在此语句前已有定义的类型标识符;一定是在此语句前已有定义的类型标识符; typedeftypedef语句的作用仅仅是用语句的作用仅仅是用“标识符标识符”代表已存在的代表已存在的“类型类型名名”,并没有产生新的数据类型。因此,原有的数据类型仍有效。,并没有产生新的数据类型。因此,原有的数据类型仍有效。 “ “标识符标识符”是一个用户定义标识符,用来表示新的类型名。是一个用户定义标识符,用来表示新的类型名。7.7.枚举类型数据枚举类型数据(1)(1)枚举类型

145、定义;枚举类型定义; enumenum datesun,mon,tue,wed,thu,fri,satdatesun,mon,tue,wed,thu,fri,sat;sun=0,mon=1,tue=2,.sun=0,mon=1,tue=2,.,sat =6sat =6 enumenum color red , yellow , blue = 5 , white; color red , yellow , blue = 5 , white;red=0,yellow=1,blue=5,white = 6red=0,yellow=1,blue=5,white = 6例题:例题:20072007年秋选

146、择题年秋选择题29292929. .若有枚举类型定义若有枚举类型定义”enumenum list1 x1 list1 x1,x2,x3,x4=6,x5,x6;”x2,x3,x4=6,x5,x6;”枚枚举常量举常量x2x2和和x6x6代表的值分别是代表的值分别是_A.1A.1,6 B.16 B.1,8 C.28 C.2,6 D.2,86 D.2,88.8.预处理命令预处理命令(1)(1)预处理的概念和特点;预处理的概念和特点; C C语言中,语言中,凡是以凡是以”#”#”开头的行,都称为开头的行,都称为”编译预处理编译预处理”命令行。命令行。预处理命令组成的预处理命令行必须在一行的开头以预处理命

147、令组成的预处理命令行必须在一行的开头以”号开头,号开头,每行的末尾每行的末尾不得加不得加”;”,;”,以便区别其他以便区别其他C C语言。语言。 C C语言中的常有编译预处理命令有语言中的常有编译预处理命令有:#define , :#define , # #undef,#if,#else,#elif,#endif,#ifdef,#ifndefundef,#if,#else,#elif,#endif,#ifdef,#ifndef, ,(2)#define(2)#define命令及其使用:定义符号常量、定义带参数的命令及其使用:定义符号常量、定义带参数的宏;宏;8.8.预处理命令预处理命令(3)(

148、3)includeinclude命令及其使用;命令及其使用; #include #include #include #include 头文件名头文件名 直接按系统指定的标准检索方式查找被包含的文件。直接按系统指定的标准检索方式查找被包含的文件。 系统首先在使用此命令的文件所在的目录中查找被包含的文件,系统首先在使用此命令的文件所在的目录中查找被包含的文件,到不到时,再按系统指定的标准方式检索其他目录。到不到时,再按系统指定的标准方式检索其他目录。说明:说明:(1)(1)文件包含不但可以包含文件包含不但可以包含C C语言函数的语言函数的.h.h头文件,也可以包头文件,也可以包含含.C.C文件;文

149、件;(2)(2)一个一个includeinclude命令只能指定一个被包含文件,若有多个文件要包命令只能指定一个被包含文件,若有多个文件要包含,则需要多个含,则需要多个includeinclude命令;命令;(3)(3)文件可以允许嵌套,即在一个被包含的文件中又可以包含另一文件可以允许嵌套,即在一个被包含的文件中又可以包含另一个文件;个文件;9.9.文件操作(文件操作(国考和省考分值增大国考和省考分值增大)(1)(1)文件指针变量的声明;文件指针变量的声明; 在在C C语言中用一个指针变量指向一个文件,这个指针称为文件指语言中用一个指针变量指向一个文件,这个指针称为文件指针。针。定义说明文件指

150、针的一般形式为:定义说明文件指针的一般形式为: FILE *FILE *指针变量标识符;指针变量标识符;(2)(2)缓冲文件系统常用操作函数的使用:缓冲文件系统常用操作函数的使用:fopen(),fclose(),fprintf(),fscanf(),fgetcfopen(),fclose(),fprintf(),fscanf(),fgetc(),(),fputc(),fgets(),fputs(),feof(),rewind(),freadfputc(),fgets(),fputs(),feof(),rewind(),fread(),(),fwrite(),fseekfwrite(),fse

151、ek()();例题:例题:20072007年秋填空题年秋填空题4 44.4.已知某程序中有预处理命令已知某程序中有预处理命令”#include #include ”,”,为使语句为使语句”zxzx = = fopenfopen( “( “c:a.txt”,”rc:a.txt”,”r”);”);”能正能正常执行,在该语句之前必须有声明常执行,在该语句之前必须有声明_._.例题:有以下程序例题:有以下程序(0809(0809国选国选40)40)#include #include main()main() FILE *pf ; FILE *pf ; char *s1 = “China” , *s2=

152、“Beijing”; char *s1 = “China” , *s2=“Beijing”; pf= pf= fopen(“abc.datfopen(“abc.dat” , “” , “wbwb+”);+”); fwrite(s2,7,1,pf); fwrite(s2,7,1,pf); rewind(pfrewind(pf);/*);/*文件位置指针回到文件开头文件位置指针回到文件开头* */ / fwritefwrite(s1,5,1,pfs1,5,1,pf); ; fclose(pffclose(pf);); 以上程序执行以上程序执行abc.databc.dat文件的内容是文件的内容是_A

153、.ChinaA.China B.ChinangB.Chinang C.ChinaBeijingC.ChinaBeijing D.BeijingChinaD.BeijingChina单向链表的建立与基本操作单向链表的建立与基本操作(1)(1)结点的数据类型定义;结点的数据类型定义;(2)(2)使用使用mallocmalloc()()函数、函数、freefree()()函数动态申请和释放结函数动态申请和释放结点存储区;点存储区;(3)(3)链表基本操作:建立一个新链表、遍历一个链表的全链表基本操作:建立一个新链表、遍历一个链表的全部结点的值、插入新结点、删除结点。部结点的值、插入新结点、删除结点。

154、structstruct node node intint data ; data ; structstruct node *next; node *next; ; ;structstruct node node intint data ; data ; structstruct node *next; node *next; ; ;1.1.生成结点:生成结点: 指向结构体的指针变量指向结构体的指针变量 ( ( 结构体类型名结构体类型名 * *) )mallocmalloc( ( sizeofsizeof(结构体类型名)(结构体类型名)) )例如:例如: structstruct node *

155、p ; node *p ; p = ( p = ( structstruct node *) node *)mallocmalloc( ( sizeof(structsizeof(struct node ); node );2.2.建立链表:建立链表: (1)(1)尾插法建立链表;尾插法建立链表; 20052005年秋填空题年秋填空题1212 (2) (2)头插法建立链表。头插法建立链表。 20062006年春填空题年春填空题12123.3.遍历链表:输出结点,修改结点值遍历链表:输出结点,修改结点值 注意注意:a.a.用于循环的指针变量指向下一个结点的方法;用于循环的指针变量指向下一个结点的

156、方法; b.b.链表结束的判断;链表结束的判断;4.4.插入操作插入操作 假设在假设在p p指针所指向的结点之后插入新结点指针所指向的结点之后插入新结点q,q,对应的操作为:对应的操作为: q-next = p-next ;q-next = p-next ; p-next = q ;p-next = q ;5.5.删除操作删除操作 假设删除假设删除p p指针所指向下一个结点,对应的操作为:指针所指向下一个结点,对应的操作为: q = p-next ;q = p-next ; p-next = p-next-next ;p-next = p-next-next ;例题例题:0809:0809国选

157、国选3838,09030903国填国填1515下列程序把三个下列程序把三个NODETYPENODETYPE型的变量链接成一个简单的链表,型的变量链接成一个简单的链表,并在并在whilewhile循环中输出链表结点数据域中的数据。请填空循环中输出链表结点数据域中的数据。请填空#include #include structstruct node node intint data;structdata;struct node *next; node *next;typedeftypedef structstruct node NODETYPE; node NODETYPE;main()main()

158、NODETYPE NODETYPE a,b,ca,b,c,*h ,*p;,*h ,*p;a.dataa.data =10;b.data=20;c.data=30;h=&a; =10;b.data=20;c.data=30;h=&a;a.nexta.next = & = &b;b.nextb;b.next=&=&c;c.nextc;c.next=0;=0;p=h;p=h;while(p)printf(“%d,”,pwhile(p)printf(“%d,”,p-data)_15_;-data)_15_;printf(“nprintf(“n”);”);10.10.其他常用库函数其他常用库函数(1)(

159、1)数学函数数学函数( (头文件头文件math.hmath.h):):abs(),fabs(),sin(),cos(),tan(),asinabs(),fabs(),sin(),cos(),tan(),asin(),(),acos(),atan(),exp(),sqrt(),pow(),fmod(),logacos(),atan(),exp(),sqrt(),pow(),fmod(),log(),(),log10log10;(2)(2)字符串处理函数字符串处理函数( (头文件头文件string.hstring.h) ):strcmp(),strcat(),strcat(),strcpy(),s

160、trlenstrcmp(),strcat(),strcat(),strcpy(),strlen()()(3)(3)字符处理函数字符处理函数( (头文件头文件ctype.hctype.h) ):isalpha(),isdigit(),islower(),isupper(),isspaceisalpha(),isdigit(),islower(),isupper(),isspace()()例题:例题:20072007年秋填空题年秋填空题3 33.3.若有声明若有声明double x = 10 , y = 5 ;double x = 10 , y = 5 ;,则计算,则计算xyxy的库函数调用形的库

161、函数调用形式是式是_._.11.11.应当掌握的一般算法应当掌握的一般算法(1)(1)基本操作:交换、累加、累乘;基本操作:交换、累加、累乘;(2)(2)非数值计算常用经典算法:穷举、排序非数值计算常用经典算法:穷举、排序( (冒泡法、插入冒泡法、插入法、选择法法、选择法) )、归并、归并( (或合并或合并) )、查找、查找( (线性法、折半法线性法、折半法) )例题:例题:例题:例题:20062006年春江填空题年春江填空题14,word14,word文档文档(3)(3)数值计算常用经典算法;数值计算常用经典算法; 级数级数计算计算( (递推法递推法) )、一元非线性方程求根、一元非线性方程

162、求根( (牛顿迭代法牛顿迭代法) )、矩、矩阵转置;阵转置;例题:例题:07090709国填国填1212题题全国上机考试应该注意事项全国上机考试应该注意事项1.1.三道题:程序阅读题,程序改错题,程序设计题三道题:程序阅读题,程序改错题,程序设计题程序阅读题:与真题的程序填空题类似程序阅读题:与真题的程序填空题类似程序改错题:程序改错题: 语法错误:对于语法错误,用编译器很容易解决语法错误:对于语法错误,用编译器很容易解决常见的语法错误:常见的语法错误: 丢失分号,或分号误写成逗号;丢失分号,或分号误写成逗号; 关键字拼写错误,如本来小写变成大写;关键字拼写错误,如本来小写变成大写; 语句格式

163、错误,例如语句格式错误,例如forfor语句多写或少些分号;语句多写或少些分号; 表达式声明错误,例如:少了表达式声明错误,例如:少了()() 函数类型说明错误,与调用函数的不符合;函数类型说明错误,与调用函数的不符合; 函数形参类型声明错误,例如:少函数形参类型声明错误,例如:少* *等等 运算符书写错误,例如:运算符书写错误,例如:/ /写成写成 常考题型提炼:常考题型提炼:题型题型1:1:数的转换与计算,如数的按位分离,数制的转换,素数问数的转换与计算,如数的按位分离,数制的转换,素数问 题,四舍五入,整除及奇偶判断问题;题,四舍五入,整除及奇偶判断问题;题型题型2:2:数列及级数求和,

164、如数列及级数求和,如FibonacciFibonacci数列求和等;数列求和等;题型题型3:3:矩阵运算,如矩阵的转置,矩阵的加减乘除运算,半三角元矩阵运算,如矩阵的转置,矩阵的加减乘除运算,半三角元素运算及求周边元素的和或平均值等;素运算及求周边元素的和或平均值等;题型题型4:4:数组运算,如找最大,最小问题,累加和,求平均值累积;数组运算,如找最大,最小问题,累加和,求平均值累积;题型题型5:5:排序运算,如冒泡法,直接插入法;排序运算,如冒泡法,直接插入法;常考题型提炼:常考题型提炼:题型题型6:6:字符串运算,如字符的字符串运算,如字符的ASCIIASCII码值应用(字符排序,比较字码

165、值应用(字符排序,比较字符串大小,大小写转换,删除指定的字符等);字符串常用的库符串大小,大小写转换,删除指定的字符等);字符串常用的库函数的实现,串匹配,字符串处理函数的实现,串匹配,字符串处理题型题型7:7:链表运算,如链表的遍历链表运算,如链表的遍历( (包括求和,求平均值,打印输出包括求和,求平均值,打印输出等等) ),链表的建立和结点的插入,链表结点的删除等问题。,链表的建立和结点的插入,链表结点的删除等问题。题型题型8:8:其他运算,如文件操作,二分法查找等问题其他运算,如文件操作,二分法查找等问题1.1.两道题两道题 第一道题第一道题- -改错题(一般改错题(一般4 4个:个:2

166、 2个语法错误,个语法错误,2 2个逻辑错误)个逻辑错误) 第二道题第二道题- -编程题(有一定的难度)编程题(有一定的难度)2.2.改错题可能出现的错误改错题可能出现的错误 (1)(1)函数调用函数调用( (类型,调用方式,参数对应等类型,调用方式,参数对应等) ) (2)(2)头文件包含少了头文件包含少了( (string.h;math.h;ctype.hstring.h;math.h;ctype.h) ) (3)(3)变量的使用变量的使用( (数组,宏,指针数组,宏,指针) ) (4)(4)主要算法主要算法( (排序,求素数,求平均数等排序,求素数,求平均数等) ) (5)(5)对于字符

167、串的基本操作要调用字符串基本操作函数对于字符串的基本操作要调用字符串基本操作函数 (6)if,while(6)if,while表达式相等判断(表达式相等判断(= = 与与 = =)江苏省计算机等级考试上机江苏省计算机等级考试上机江苏省上机考试应该注意事项江苏省上机考试应该注意事项3.3.编程题编程题( (算法文件操作算法文件操作) ) 文件操作题文件操作题( (五个要素五个要素) ) #include #include File *File *fpfp; ; fopenfopen fprintffprintf fclosefclose文件名,输出位置一定按题目要求进行文件名,输出位置一定按题目要求进行

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

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

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