《C语言复习总结.ppt》由会员分享,可在线阅读,更多相关《C语言复习总结.ppt(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第3章:基本数据类型、运算符与表达式1C的数据类型的数据类型C的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。2常量与变量常量与变量常量其值不可改变,符号常量名通常用大写。变量其值可以改变,变量名常量其值不可改变,符号常量名通常用大写。变量其值可以改变,变量名只能由字母、数字和下划线组成,且第一个字符必须为字母或下划线。否只能由字母、数字和下划线组成,且第一个字符必须为字母或下划线。否则为不合法的
2、变量名。变量在编译时为其分配相应存储单元。则为不合法的变量名。变量在编译时为其分配相应存储单元。3整型数据整型数据整型常量的表示方法:十进制不用说了,八进制以整型常量的表示方法:十进制不用说了,八进制以0开头,如开头,如0123,十六,十六进制以进制以0 x开头,如开头,如0 x1e。整型变量分为:基本型(整型变量分为:基本型(int)、短整型()、短整型(shortint)、长整型()、长整型(longint)和无符号型。不同机器上各类数据所占内存字节数不同。)和无符号型。不同机器上各类数据所占内存字节数不同。4实型数据实型数据实型常量表示形式:十进制形式由数字和小数点组成(必须有小数点),
3、实型常量表示形式:十进制形式由数字和小数点组成(必须有小数点),如:如:0.12、.123、1230.0等。指数形式如等。指数形式如123e3代表代表12310的三次方。的三次方。实型变量分为单精度(实型变量分为单精度(float)和双精度()和双精度(double)两类。在一般系统中)两类。在一般系统中float型占型占4字节,字节,7位有效数字,位有效数字,double型占型占8字节,字节,1516位有效数字。位有效数字。5字符型数据字符型数据字符变量用单引号括起来,如字符变量用单引号括起来,如a,b等。还有一些是特殊的字符常量,等。还有一些是特殊的字符常量,如如n,t等。分别代表换行和横
4、向跳格。等。分别代表换行和横向跳格。字符变量以字符变量以char来定义,一个变量只能存放一个字符常量。来定义,一个变量只能存放一个字符常量。字符串常量是由双引号括起来的字符序列。这里一定要注意字符串常量是由双引号括起来的字符序列。这里一定要注意a和和a的不的不同,前者为字符常量,后者为字符串常量,同,前者为字符常量,后者为字符串常量,c规定:每个字符串的结尾加规定:每个字符串的结尾加一个结束标志一个结束标志,实际上,实际上a包含两个字符:包含两个字符:a和和。6数值型数据间的混合运算数值型数据间的混合运算整型、字符型、实型数据间可以混合运算,运算时不同类型数据要转换成整型、字符型、实型数据间可
5、以混合运算,运算时不同类型数据要转换成同一类型再运算,转换规则:同一类型再运算,转换规则:char,short-int-unsigned-long-double=b)?a:b条件为真,表达式取值条件为真,表达式取值a,否则取值,否则取值b 逗号运算符(逗号运算符(,)求字节数(求字节数(sizeof)强制类型转换(类型)强制类型转换(类型)自增自减运算符(自增自减运算符(+-)注意:)注意:+i和和i+的不同之处,的不同之处,+i使用使用i之前先之前先使使i加,加,i+使用使用i之后,使之后,使i加。加。逗号表达式的求解过程:先求解表达式,再求解表达式,整个表达式逗号表达式的求解过程:先求解表
6、达式,再求解表达式,整个表达式的值是表达式的值。的值是表达式的值。单目运算符单目运算符单目运算符单目运算符 高高高高算术运算符算术运算符算术运算符算术运算符移位运算符移位运算符移位运算符移位运算符关系运算符关系运算符关系运算符关系运算符逻辑运算符逻辑运算符逻辑运算符逻辑运算符条件运算符条件运算符条件运算符条件运算符赋值运算符赋值运算符赋值运算符赋值运算符逗号运算符逗号运算符逗号运算符逗号运算符 低低低低第4章:基本输入输出和顺序程序设计 1 1数据输出数据输出数据输出数据输出 c c语言不提供输入输出语句,输入输出操作是由语言不提供输入输出语句,输入输出操作是由语言不提供输入输出语句,输入输出
7、操作是由语言不提供输入输出语句,输入输出操作是由c c的库函数完成。但要包含的库函数完成。但要包含的库函数完成。但要包含的库函数完成。但要包含头文件头文件头文件头文件stdio.hstdio.h。putcharputchar()()向终端输出一个字符向终端输出一个字符向终端输出一个字符向终端输出一个字符printfprintf()()的格式字符:的格式字符:的格式字符:的格式字符:d d格式符用来输出十进制整数格式符用来输出十进制整数格式符用来输出十进制整数格式符用来输出十进制整数%d%d按整型数据的实际长度输出按整型数据的实际长度输出按整型数据的实际长度输出按整型数据的实际长度输出%mdmd
8、 使输出长度为使输出长度为使输出长度为使输出长度为mm,如果数据长度小于,如果数据长度小于,如果数据长度小于,如果数据长度小于mm,则左补空格,如果大于,则左补空格,如果大于,则左补空格,如果大于,则左补空格,如果大于mm,则输出实际长度则输出实际长度则输出实际长度则输出实际长度%ld%ld输出长整型数据输出长整型数据输出长整型数据输出长整型数据 o o格式符以八进制形式输出整数格式符以八进制形式输出整数格式符以八进制形式输出整数格式符以八进制形式输出整数 x x格式符以十六进制形式输出整数格式符以十六进制形式输出整数格式符以十六进制形式输出整数格式符以十六进制形式输出整数 u u格式符用来输
9、出格式符用来输出格式符用来输出格式符用来输出unsignedunsigned型数据,以十进制形式输出型数据,以十进制形式输出型数据,以十进制形式输出型数据,以十进制形式输出 c c格式符用来输出一个字符格式符用来输出一个字符格式符用来输出一个字符格式符用来输出一个字符 s s格式符输出一个字符串格式符输出一个字符串格式符输出一个字符串格式符输出一个字符串%s%s输出实际长度字符串输出实际长度字符串输出实际长度字符串输出实际长度字符串%ms%ms输出的串占输出的串占输出的串占输出的串占mm列,如果串长度小于列,如果串长度小于列,如果串长度小于列,如果串长度小于mm,左补空格,如果大于,左补空格,
10、如果大于,左补空格,如果大于,左补空格,如果大于mm,实际,实际,实际,实际输出输出输出输出%-ms%-ms输出的串占输出的串占输出的串占输出的串占mm列,如果串长度小于列,如果串长度小于列,如果串长度小于列,如果串长度小于mm,右补空格,右补空格,右补空格,右补空格,%m.nsm.ns 输出占输出占输出占输出占mm列,但只取字符串中左端列,但只取字符串中左端列,但只取字符串中左端列,但只取字符串中左端n n个字符并靠右对齐个字符并靠右对齐个字符并靠右对齐个字符并靠右对齐%-%-m.nsm.nsmm、n n含义同上,靠左对齐,如果含义同上,靠左对齐,如果含义同上,靠左对齐,如果含义同上,靠左对
11、齐,如果nmnm,则,则,则,则mm自动取自动取自动取自动取n n值值值值 f f格式符以小数形式输出实数格式符以小数形式输出实数格式符以小数形式输出实数格式符以小数形式输出实数%f%f整数部分全部输出,小数部分输出整数部分全部输出,小数部分输出整数部分全部输出,小数部分输出整数部分全部输出,小数部分输出6 6位位位位%m.nfm.nf 输出数据共占输出数据共占输出数据共占输出数据共占mm列,其中有列,其中有列,其中有列,其中有n n位小数。如果数值长度小于位小数。如果数值长度小于位小数。如果数值长度小于位小数。如果数值长度小于mm,左补空,左补空,左补空,左补空格格格格%-%-m.nfm.n
12、f 同上,右补空格同上,右补空格同上,右补空格同上,右补空格 e e格式符以指数形式输出实数格式符以指数形式输出实数格式符以指数形式输出实数格式符以指数形式输出实数%e%e系统指定位小数,系统指定位小数,系统指定位小数,系统指定位小数,5 5位指数(位指数(位指数(位指数(e+002)e+002)gg格式符输出实数,根据数值大小,自动选格式符输出实数,根据数值大小,自动选格式符输出实数,根据数值大小,自动选格式符输出实数,根据数值大小,自动选f f格式或格式或格式或格式或e e格式格式格式格式2数据输入数据输入getchar()从终端输入一个字符从终端输入一个字符scanf(格式控制格式控制,
13、地址列表地址列表)标准标准Cscanf中不使用中不使用%u,对于,对于unsigned型型数据,以数据,以%d或或%o或或%x输入。后的输入。后的*,用来跳过它相应的数据。输入数据,用来跳过它相应的数据。输入数据时不能规定精度如时不能规定精度如scanf(%7.2f,&a);是不合法的。是不合法的。第5章:选择结构程序设计 关系表达式和逻辑表达式是两种重要的表达式,主要用于条件执行的关系表达式和逻辑表达式是两种重要的表达式,主要用于条件执行的关系表达式和逻辑表达式是两种重要的表达式,主要用于条件执行的关系表达式和逻辑表达式是两种重要的表达式,主要用于条件执行的判断和循环执行的判断。判断和循环执
14、行的判断。判断和循环执行的判断。判断和循环执行的判断。语言提供了多种形式的条件语句以构成选择结构。语言提供了多种形式的条件语句以构成选择结构。语言提供了多种形式的条件语句以构成选择结构。语言提供了多种形式的条件语句以构成选择结构。1 1 If If语句语句语句语句C C提供了三种形式的提供了三种形式的提供了三种形式的提供了三种形式的if if语句语句语句语句If(If(表达式表达式表达式表达式)语句语句语句语句主要用于单向选择主要用于单向选择主要用于单向选择主要用于单向选择If(If(表达式表达式表达式表达式)语句语句语句语句1else1else语句语句语句语句22主要用于双向选择主要用于双向
15、选择主要用于双向选择主要用于双向选择If(If(表达式表达式表达式表达式1)1)语句语句语句语句1 1elseif(elseif(表达式表达式表达式表达式2)2)语句语句语句语句2 2elseelse语句语句语句语句n nif-else-ifif-else-if语句用于多向选择语句用于多向选择语句用于多向选择语句用于多向选择2.Switch2.Switch语句语句语句语句 Switch(Switch(表达式表达式表达式表达式)casecase常量表达式:语句常量表达式:语句常量表达式:语句常量表达式:语句;break;break;casecase常量表达式:语句常量表达式:语句常量表达式:语句
16、常量表达式:语句2;break;2;break;casecase常量表达式常量表达式常量表达式常量表达式n n:语句:语句:语句:语句;break;break;defaultdefault:语句:语句:语句:语句;switchswitch语句用于多向选择语句用于多向选择语句用于多向选择语句用于多向选择任何一种选择结构都可以用任何一种选择结构都可以用任何一种选择结构都可以用任何一种选择结构都可以用if if语句来实现,但并非所有的语句来实现,但并非所有的语句来实现,但并非所有的语句来实现,但并非所有的if if语句都有等价语句都有等价语句都有等价语句都有等价的的的的switchswitch语句。
17、语句。语句。语句。switchswitch语句只能用来实现以相等关系作为选择条件的选语句只能用来实现以相等关系作为选择条件的选语句只能用来实现以相等关系作为选择条件的选语句只能用来实现以相等关系作为选择条件的选择结构。择结构。择结构。择结构。第6章:循环结构程序设计 本章主要讨论了循环结构程序设计的有关方法,重点介绍了与本章主要讨论了循环结构程序设计的有关方法,重点介绍了与本章主要讨论了循环结构程序设计的有关方法,重点介绍了与本章主要讨论了循环结构程序设计的有关方法,重点介绍了与C C语言三种循环控制结构有关的语言三种循环控制结构有关的语言三种循环控制结构有关的语言三种循环控制结构有关的whi
18、lewhile语句、语句、语句、语句、do-whiledo-while语句及语句及语句及语句及forfor语句。语句。语句。语句。本章所涉及到的主要关键字有:本章所涉及到的主要关键字有:本章所涉及到的主要关键字有:本章所涉及到的主要关键字有:whilewhile、dodo、forfor、gotogoto、breakbreak、continuecontinue。语言提供了三种循环语句。语言提供了三种循环语句。语言提供了三种循环语句。语言提供了三种循环语句。forfor语句主要适用于循环次数确定的循环结构。语句主要适用于循环次数确定的循环结构。语句主要适用于循环次数确定的循环结构。语句主要适用于循
19、环次数确定的循环结构。循环次数及控制条件要在循环过程中才能确定的循环可用循环次数及控制条件要在循环过程中才能确定的循环可用循环次数及控制条件要在循环过程中才能确定的循环可用循环次数及控制条件要在循环过程中才能确定的循环可用 whilewhile或或或或do-whiledo-while语句。语句。语句。语句。三种循环语句可以相互嵌套组成多重循环,循环之间可以并列但不三种循环语句可以相互嵌套组成多重循环,循环之间可以并列但不三种循环语句可以相互嵌套组成多重循环,循环之间可以并列但不三种循环语句可以相互嵌套组成多重循环,循环之间可以并列但不能交叉。能交叉。能交叉。能交叉。三种循环结构可以相互转换。三
20、种循环结构可以相互转换。三种循环结构可以相互转换。三种循环结构可以相互转换。在循环程序中应避免出现死循环,即应保证循环控制变量的值在运在循环程序中应避免出现死循环,即应保证循环控制变量的值在运在循环程序中应避免出现死循环,即应保证循环控制变量的值在运在循环程序中应避免出现死循环,即应保证循环控制变量的值在运行过程中可以得到修改,并使循环条件逐步变为假,从而结束循环。行过程中可以得到修改,并使循环条件逐步变为假,从而结束循环。行过程中可以得到修改,并使循环条件逐步变为假,从而结束循环。行过程中可以得到修改,并使循环条件逐步变为假,从而结束循环。breakbreak、continuecontinu
21、e都可用于流程控制。其中,都可用于流程控制。其中,都可用于流程控制。其中,都可用于流程控制。其中,breakbreak语句用于退出语句用于退出语句用于退出语句用于退出switchswitch或一层循环结构,或一层循环结构,或一层循环结构,或一层循环结构,continuecontinue语句用于结束本次循环,继续执行下语句用于结束本次循环,继续执行下语句用于结束本次循环,继续执行下语句用于结束本次循环,继续执行下一次循环一次循环一次循环一次循环.第7章:数 组 (1)(1)(1)(1)数组是程序设计中最常用的数据结构。它是一种构造类型,数组数组是程序设计中最常用的数据结构。它是一种构造类型,数组
22、数组是程序设计中最常用的数据结构。它是一种构造类型,数组数组是程序设计中最常用的数据结构。它是一种构造类型,数组中的每一个元素必须属于同一种数据类型。数组中的元素在内存中是连续中的每一个元素必须属于同一种数据类型。数组中的元素在内存中是连续中的每一个元素必须属于同一种数据类型。数组中的元素在内存中是连续中的每一个元素必须属于同一种数据类型。数组中的元素在内存中是连续存放的。数组变量名是数组在内存中的首地址,是一地址常量,不可对其存放的。数组变量名是数组在内存中的首地址,是一地址常量,不可对其存放的。数组变量名是数组在内存中的首地址,是一地址常量,不可对其存放的。数组变量名是数组在内存中的首地址
23、,是一地址常量,不可对其赋值。二维数组变量也是地址常量,二维数组中的每一维也是地址常量。赋值。二维数组变量也是地址常量,二维数组中的每一维也是地址常量。赋值。二维数组变量也是地址常量,二维数组中的每一维也是地址常量。赋值。二维数组变量也是地址常量,二维数组中的每一维也是地址常量。(2)(2)(2)(2)数组可以是一维的,二维的或多维的。数组可以是一维的,二维的或多维的。数组可以是一维的,二维的或多维的。数组可以是一维的,二维的或多维的。(3)(3)(3)(3)数组类型说明由类型说明符、数组名、数组长度(数组元素个数)数组类型说明由类型说明符、数组名、数组长度(数组元素个数)数组类型说明由类型说
24、明符、数组名、数组长度(数组元素个数)数组类型说明由类型说明符、数组名、数组长度(数组元素个数)三部分组成。数组元素又称为下标变量。数组的类型是指下标变量取值的三部分组成。数组元素又称为下标变量。数组的类型是指下标变量取值的三部分组成。数组元素又称为下标变量。数组的类型是指下标变量取值的三部分组成。数组元素又称为下标变量。数组的类型是指下标变量取值的类型。类型。类型。类型。(4)(4)(4)(4)字符数组也是一种常规数组,但由于字符数组可以用来存放字符字符数组也是一种常规数组,但由于字符数组可以用来存放字符字符数组也是一种常规数组,但由于字符数组可以用来存放字符字符数组也是一种常规数组,但由于
25、字符数组可以用来存放字符串,因此,字符数组在定义时可以利用字符串常量为字符数组变量赋初值。串,因此,字符数组在定义时可以利用字符串常量为字符数组变量赋初值。串,因此,字符数组在定义时可以利用字符串常量为字符数组变量赋初值。串,因此,字符数组在定义时可以利用字符串常量为字符数组变量赋初值。这是其它类型数组所不具备的。其它类型数组变量在赋值时必须使用初值这是其它类型数组所不具备的。其它类型数组变量在赋值时必须使用初值这是其它类型数组所不具备的。其它类型数组变量在赋值时必须使用初值这是其它类型数组所不具备的。其它类型数组变量在赋值时必须使用初值列表,而字符数组却可以使用字符串常量。列表,而字符数组却
26、可以使用字符串常量。列表,而字符数组却可以使用字符串常量。列表,而字符数组却可以使用字符串常量。(5)(5)(5)(5)字符串是一种以字符串是一种以字符串是一种以字符串是一种以0000结尾的字符序列,因此用来存放字符串的字结尾的字符序列,因此用来存放字符串的字结尾的字符序列,因此用来存放字符串的字结尾的字符序列,因此用来存放字符串的字符数组的长度要比字符串的实际长度大符数组的长度要比字符串的实际长度大符数组的长度要比字符串的实际长度大符数组的长度要比字符串的实际长度大1 1 1 1才可以。才可以。才可以。才可以。(6)C(6)C(6)C(6)C语言提供了许多有关字符串处理的函数,这些函数在用语
27、言提供了许多有关字符串处理的函数,这些函数在用语言提供了许多有关字符串处理的函数,这些函数在用语言提供了许多有关字符串处理的函数,这些函数在用C C C C语言编语言编语言编语言编程过程中经常用到,读者务必要熟练掌握。程过程中经常用到,读者务必要熟练掌握。程过程中经常用到,读者务必要熟练掌握。程过程中经常用到,读者务必要熟练掌握。部分字符串处理函数部分字符串处理函数:puts(字符数组字符数组)将一个字符串输出到终端。将一个字符串输出到终端。gets(字符数组字符数组)从终端输入一个字符串到字符数组从终端输入一个字符串到字符数组strcat(字符数组字符数组,字符数组字符数组2)连接两个字符数
28、组中的字符串,数组连接两个字符数组中的字符串,数组1必必须足够大。须足够大。Strcpy(字符数组字符数组,字符串字符串2)将字符串拷贝到字符数组中。将字符串拷贝到字符数组中。Strcmp(字符串字符串1,字符串字符串2)比较字符串,相等返回比较字符串,相等返回0,字符串,字符串字符串字符串2,返回正数,小于返回负数。,返回正数,小于返回负数。Strlen(字符数组字符数组)求字符串长度。求字符串长度。Strlwr(字符串字符串)将字符串中的大写字母转换成小写将字符串中的大写字母转换成小写Strupr(字符串字符串)将字符串中的小写字母转换成大写将字符串中的小写字母转换成大写以上是一些比较常用
29、的字符串处理函数。以上是一些比较常用的字符串处理函数。语语言言程程序序设设计计教教程程 第第七七章章 数数组组C 标准库函数:标准库函数:标准库函数:标准库函数:由由由由C C C C系统提供的函数;系统提供的函数;系统提供的函数;系统提供的函数;用户自定义函数:用户自定义函数:用户自定义函数:用户自定义函数:由用户自己定义的函数;由用户自己定义的函数;由用户自己定义的函数;由用户自己定义的函数;有返回值的函数:有返回值的函数:有返回值的函数:有返回值的函数:向调用者返回函数值,应说明函数类向调用者返回函数值,应说明函数类向调用者返回函数值,应说明函数类向调用者返回函数值,应说明函数类型(即返
30、回值的类型);型(即返回值的类型);型(即返回值的类型);型(即返回值的类型);无返回值的函数:无返回值的函数:无返回值的函数:无返回值的函数:不返回函数值,说明为空(不返回函数值,说明为空(不返回函数值,说明为空(不返回函数值,说明为空(voidvoidvoidvoid)类)类)类)类型;型;型;型;有参函数:有参函数:有参函数:有参函数:主调函数向被调函数传送数据;主调函数向被调函数传送数据;主调函数向被调函数传送数据;主调函数向被调函数传送数据;无参函数:无参函数:无参函数:无参函数:主调函数与被调函数间无数据传送;主调函数与被调函数间无数据传送;主调函数与被调函数间无数据传送;主调函数
31、与被调函数间无数据传送;内部函数:内部函数:内部函数:内部函数:只能在本源文件中使用的函数;只能在本源文件中使用的函数;只能在本源文件中使用的函数;只能在本源文件中使用的函数;外部函数:外部函数:外部函数:外部函数:可在整个源程序中使用的函数。可在整个源程序中使用的函数。可在整个源程序中使用的函数。可在整个源程序中使用的函数。1 1 1 1、函数的分类、函数的分类、函数的分类、函数的分类2 2 2 2、函数定义的一般形式、函数定义的一般形式、函数定义的一般形式、函数定义的一般形式extern/static extern/static 类型说明符类型说明符类型说明符类型说明符 函数名(函数名(函
32、数名(函数名(形参列表形参列表形参列表形参列表)声明部分声明部分声明部分声明部分 执行部执行部执行部执行部分分分分 第8章:函 数 语语言言程程序序设设计计教教程程 第第七七章章 数数组组C 本章小结本章小结 3 3 3 3、函数说明的一般形式函数说明的一般形式函数说明的一般形式函数说明的一般形式 extern extern 类型说明符类型说明符类型说明符类型说明符 函数名(函数名(函数名(函数名(形参列表形参列表形参列表形参列表););););4 4 4 4、函数调用的一般形式函数调用的一般形式函数调用的一般形式函数调用的一般形式函数名(函数名(函数名(函数名(实参列表实参列表实参列表实参列
33、表)5 5 5 5、函数的参数分为、函数的参数分为、函数的参数分为、函数的参数分为形参形参形参形参和和和和实参实参实参实参两种,形参出现在函数定两种,形参出现在函数定两种,形参出现在函数定两种,形参出现在函数定义中,实参出现在函数调用中,发生函数调用时,将把实参的义中,实参出现在函数调用中,发生函数调用时,将把实参的义中,实参出现在函数调用中,发生函数调用时,将把实参的义中,实参出现在函数调用中,发生函数调用时,将把实参的值传送给形参。值传送给形参。值传送给形参。值传送给形参。6 6 6 6、函数的值是指函数的返回值,它是在函数中由、函数的值是指函数的返回值,它是在函数中由、函数的值是指函数的
34、返回值,它是在函数中由、函数的值是指函数的返回值,它是在函数中由returnreturn语句返回的。语句返回的。语句返回的。语句返回的。7 7、函数调用时参数的传递方式有两种:、函数调用时参数的传递方式有两种:、函数调用时参数的传递方式有两种:、函数调用时参数的传递方式有两种:传值调用传值调用传值调用传值调用和和和和传址传址传址传址调用调用调用调用。8 8、语言中,不允许函数嵌套定义,但允许函数的嵌套、语言中,不允许函数嵌套定义,但允许函数的嵌套、语言中,不允许函数嵌套定义,但允许函数的嵌套、语言中,不允许函数嵌套定义,但允许函数的嵌套调用和函数的递归调用。调用和函数的递归调用。调用和函数的递
35、归调用。调用和函数的递归调用。语语言言程程序序设设计计教教程程 第第七七章章 数数组组C 本章小结本章小结 9 9 9 9、可从三个方面对变量分类,即变量的、可从三个方面对变量分类,即变量的、可从三个方面对变量分类,即变量的、可从三个方面对变量分类,即变量的数据类型数据类型数据类型数据类型,变,变,变,变量量量量作用域作用域作用域作用域和变量的和变量的和变量的和变量的存储类型存储类型存储类型存储类型。10101010、变量的作用域是指变量在程序中的有效范围,分为、变量的作用域是指变量在程序中的有效范围,分为、变量的作用域是指变量在程序中的有效范围,分为、变量的作用域是指变量在程序中的有效范围,
36、分为局部变量局部变量局部变量局部变量和和和和全局变量全局变量全局变量全局变量。局部变量和形参的作用域是函数内部,。局部变量和形参的作用域是函数内部,。局部变量和形参的作用域是函数内部,。局部变量和形参的作用域是函数内部,全局变量的作用域是整个文件。但可以通过声明一个全局变量的作用域是整个文件。但可以通过声明一个全局变量的作用域是整个文件。但可以通过声明一个全局变量的作用域是整个文件。但可以通过声明一个externexternexternextern的全局变量扩展全局变量的作用域,也可以通过定义一个的全局变量扩展全局变量的作用域,也可以通过定义一个的全局变量扩展全局变量的作用域,也可以通过定义一
37、个的全局变量扩展全局变量的作用域,也可以通过定义一个staticstaticstaticstatic的全局变量限制这种扩展。的全局变量限制这种扩展。的全局变量限制这种扩展。的全局变量限制这种扩展。11111111、变量的存储类型是指变量在内存中的存储方式,分、变量的存储类型是指变量在内存中的存储方式,分、变量的存储类型是指变量在内存中的存储方式,分、变量的存储类型是指变量在内存中的存储方式,分为为为为静态存储静态存储静态存储静态存储和和和和动态存储动态存储动态存储动态存储,表示了变量的生存期。动态存储类,表示了变量的生存期。动态存储类,表示了变量的生存期。动态存储类,表示了变量的生存期。动态存
38、储类型的变量有型的变量有型的变量有型的变量有autoautoautoauto型、型、型、型、registerregisterregisterregister型,静态存储类型的变量有型,静态存储类型的变量有型,静态存储类型的变量有型,静态存储类型的变量有externexternexternextern型、型、型、型、staticstaticstaticstatic型。静态的局部变量只能被赋一次初值,型。静态的局部变量只能被赋一次初值,型。静态的局部变量只能被赋一次初值,型。静态的局部变量只能被赋一次初值,并且生存期与全局变量相同,但作用域仍是函数内部。并且生存期与全局变量相同,但作用域仍是函数内
39、部。并且生存期与全局变量相同,但作用域仍是函数内部。并且生存期与全局变量相同,但作用域仍是函数内部。12121212、当小作用域内的变量名与大作用域内的变量名同名、当小作用域内的变量名与大作用域内的变量名同名、当小作用域内的变量名与大作用域内的变量名同名、当小作用域内的变量名与大作用域内的变量名同名时,在小作用域内引用这个变量时,遵从时,在小作用域内引用这个变量时,遵从时,在小作用域内引用这个变量时,遵从时,在小作用域内引用这个变量时,遵从最小作用域原则最小作用域原则最小作用域原则最小作用域原则。一:改错题一:改错题 程序中有两处错误,错误都在提示行:程序中有两处错误,错误都在提示行:/*fo
40、und*/的下面一的下面一行,请考生注意行,请考生注意请改正程序中的错误,使它能得出正确的请改正程序中的错误,使它能得出正确的结果。结果。注意:程序中的其它地方请考生不要随注意:程序中的其它地方请考生不要随意改动,不得增行或删行,也不得更改程意改动,不得增行或删行,也不得更改程序的结构!序的结构!试题要求:试题要求:在考生目录下,给定程序在考生目录下,给定程序MODI1.C的功能的功能是:是:从低位开始取出长整型变量从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在中奇数位上的数,依次构成一个新数放在t中。例如,当中。例如,当s中的数为:中的数为:7654321时,时,t中的数为:
41、中的数为:7531。#include#includemain()longs,t,sl=10;printf(nPleaseenters:);scanf(%ld,&s);/*found*/t=s/10;while(s0)s=s/100;t=s%10*sl+t;/*found*/sl=sl*100;printf(Theresultis:%ldn,t);先将在字符串先将在字符串s中的字符按正序存放到中的字符按正序存放到t串中,然后把串中,然后把s中的字符按逆序连接到中的字符按逆序连接到t的后的后面。例如:当面。例如:当s中的字符串为:中的字符串为:ABCDE时,则时,则t中的字符串应为:中的字符串应为
42、:ABCDEEDCBA。#include#include#includemain()chars80,t80;inti,sl;printf(nPleaseenterstrings:);scanf(%s,s);sl=strlen(s);/*found*/for(i=0;i=sl;i+=2)ti=si;for(i=0;isl;i+)tsl+i=ssl-i-1;/*found*/tsl=0;printf(Theresultis:%sn,t);将长整型数中每一位上为偶数的数依次取出,构成一个新数放在将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在中。高位仍在高位,低位仍在低位。例如
43、,当高位,低位仍在低位。例如,当s中的数为:中的数为:87653142时,时,t中的数为:中的数为:8642。#include#includemain()longs,t,sl=1;intd;printf(nPleaseenters:);scanf(%ld,&s);t=0;while(s0)d=s%10;/*found*/if(d%2=0)t=d*sl+t;sl*=10;/*found*/s=10;printf(Theresultis:%ldn,t);输出输出200300之间的所有素数,要求每行输出之间的所有素数,要求每行输出8个素数。个素数。#include#include#include#i
44、ncludemain()intm,j,n=0,k;for(m=200;m=300;m+)k=sqrt(m);for(j=2;jk)if(n%8=0)printf(n);/*found*/printf(%6d,j);n+;求二维数组求二维数组a中的最大值和最小值。例如,当二维数组中的最大值和最小值。例如,当二维数组a中的元素为:中的元素为:443437312565程序的输出应为:程序的输出应为:Themaxis:37Theminis:3#include#includemain()inta33=4,4,34,37,3,12,5,6,5,i,j,max,min;max=min=a00;for(i=0
45、;i3;i+)/*found*/for(j=1;j3;j+)if(maxaij)max=aij;/*found*/if(minaij)min=aij;printf(Themaxis:%dn,max);printf(Theminis:%dn,min);求一维数组求一维数组a中所有元素的平均值。例如,当一维数组中所有元素的平均值。例如,当一维数组a中的元素为:中的元素为:10,4,2,7,3,12,5,34,5,9,程序的输出应为:,程序的输出应为:Theaveris:9.100000#include#includefloataverage(intarr)/*found*/floataver,s;
46、inti;for(i=0;i10;i+)/*found*/s+=i;aver=s/i;return(aver);main()inta10=10,4,2,7,3,12,5,34,5,9;printf(Theaveris:%fn,average(a);求一维数组求一维数组a中值为奇数的元素之和。例如,当一维数组中值为奇数的元素之和。例如,当一维数组a中的元素为:中的元素为:11,4,2,7,3,12,5,34,5,9程序的输出应为:程序的输出应为:Theresultis:40。#include#includemain()intarr10=11,4,2,7,3,12,5,34,5,9,i;/*fou
47、nd*/ints=0;for(i=1;i10;i+)/*found*/if(i%2=1)s=s+arri;printf(Theresultis:%dn,s);二:填空题二:填空题程序有两个空程序有两个空(1)、(2)需要补充完整。并需要补充完整。并将程序调试出将程序调试出所需的结果。所需的结果。注意:不要随意改动程序,不得增行或注意:不要随意改动程序,不得增行或删行,也不得更删行,也不得更改程序的结构!改程序的结构!试题要求:试题要求:在考生目录下,给定程序在考生目录下,给定程序FILL1.C的功能是:的功能是:计算正整数计算正整数num的各位上的数字之和。的各位上的数字之和。例如,若输入:例
48、如,若输入:252,则输出应该是:,则输出应该是:9。若输入:若输入:202,则输出应该是:,则输出应该是:4#include#includemain()intnum,k;/*found*/_(1)_;printf(Pleaseenteranumber:);scanf(%d,&num);do/*found*/k=_(2)_;num/=10;while(num);printf(n%dn,k);从键盘上输入一个数字组成的字符串(字符串长度小于从键盘上输入一个数字组成的字符串(字符串长度小于8),将该字符串转换成),将该字符串转换成一个十进制数。例如:从键盘上输入一个十进制数。例如:从键盘上输入23
49、45,则程序运行的结果应当为:则程序运行的结果应当为:n=2345。#includestdio.hmain()chars10;inti;longintn=0;/*found*/_(1)_;/*found*/for(i=0;_(2)_;i+)n=n*10+si-0;printf(n=%ldn,n);输出输出Fabonacci数列:数列:1,1,2,3,5,8,的前的前20项的项的项值,要求每行输出项值,要求每行输出5个数。个数。#includestdio.hmain()longintf20=1,1;inti;/*found*/_(1)_;for(i=2;i20;i+)fi=fi-1+fi-2;/
50、*found*/if(_(2)_)printf(n);printf(%8ld,fi);printf(n);计算计算1到到100之间的奇数之和及偶数之和。请填空之间的奇数之和及偶数之和。请填空。#includemain()inta,b,c,i;/*found*/_(1)_;for(i=0;i=100;i+=2)a+=i;/*found*/_(2)_;c+=b;printf(sumofevensis%dn,a);printf(sumofoddsis%dn,c-101);统计两个正整数m,n之间所有既能被3整除也被7整除的整数的个数。例如:m=1,n=1000,则程序的输出结果应为:The resu