




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C 强化材料范文 目录第一部分C+的基本概念和基本语句2第二部分构造类型和指针类型数据14第三部分函数和编译预处理31第四部分类和对象 (1)39第五部分类和对象 (2)51第六部分综合练习题一64第七部分综合练习题二75第八部分信息技术基础题90第九部分 04、05年真题123第一部分C+的基本概念和基本语句 一、数据类型、运算符和表达式知识点 1、数据类型C+提供了十分丰富的数据类型,除基本类型外,还提供了导出(构造)数据类型基本类型整型,说明符为int,占用4个字节;字符型,说明符为char,占用1个字节;单精度型,说明符为float,占用4个字节;双精度型,说明符为double,占用8个字节;无值型,说明符为void,占用0个字节。 在四种基本类型前还可以加上以下修饰符signed(有符号型),unsigned(无符号型),short(短型),long(长型) 2、标识符以字母或下划线开始的字母、数字以及下划线组成的字符序列称为标识符。 标识符的第一个字符必须是字母或下划线,有效长度为1247个字符,标识符不允许是关键字。 例如MyName,_1234都是合法的标识符,6ab,$ab,a3.5都是不符合标识符的定义的。 3、常量在程序执行过程中,值保持不变(也不能被改变)的量称为常量。 (1)字面常量根据类型的不同可分为整型常量,实型常量,字符型常量和字符串型常量。 整型常量可用十进制,八进制、十六进制来表示。 八进制整数以0开头,由数字07组合而成;十六进制整数以0x开头,由09,AF组合而成。 长整型以L或l结尾,无符号整数以U或u结尾。 实型常量十进制小数形式和指数形式。 十进制小数形式由数字09和小数点组成,指数形式(科学表示法),以10的多少次方表示。 注意,在E或e的前面必须有数字,且在E或e之后的指数部分必须是整数。 例如123E12,0.23e-2都是合法的实型常量。 而e10,.e5,1.0e3.5都是不合法的实数。 整型字符型实型(实型)数组类型结构体类型共同体类型枚举类型数据类型基本类型构造类型指针类型单精度型双精度型字符型常量单引号括起来的单个字符。 例如a,&等都是合法的字符常量,ab,“a”都是不合法的字符型常量。 C+还提供了另一种表示字符型常量的方法,即所谓的“转义序列”。 转义序列就是以转义符”开始,后跟一个字符或一个整型常量(字符的ASCII值)的办法来表示一个字符。 若转义字符后边是一个整型常量,则必须是一个八进制或十六进制数,其取值范围必须在0255之间。 该八进制数可以以0开头,也可以不以0开头;而十六进制数必须民0X或0x开头。 常用的转义序列字符有表示字符“”,表示单引号,”表示双引号,n表示换行符等。 字符串常量用双引号括起来的若干个字符。 例如“ab3d”,“a”都是合法的字符串常量。 字符串常量与字符常量的存放格式不一样,在字符串常量的尾部,存储时都要存放一个“0”,“0”表示字符串的结束符。 当双引号要作为字符串中的一个字符时,必须采用转义序列表示法;单引号作为字符串中的一个字符时,可直接出现在字符串常量中,也可以采用转义序列表示法。 (2)标识符常量标识符常量是用标识符表示的常量。 定义标识符常量后,可以像字面常量一样使用该标识符。 可用两种方法定义标识符常量一种是使用编译预处理命令方法,另一种是利用常量说明语句。 编译预处理命令例#define PI3.1415926使用常量说明符const例const floatPI=3.1415926;在程序中标识符常量必须先定义后引用,并且标识符常量在程序中只能引用,不能改变其值。 4、变量在程序的执行过程中,其值可以改变的量称为变量。 根据其取值的不同,分为不同类型的变量整型变量、实型变量、字符型变量、构造型变量和指针型变量等。 例如int a;/定义整型型变量a,并为a分配4个字节的存储单元,变量说明语句必须以分号结束。 变量要求说明在前,使用在后。 变量说明语句可以出现在程序中语句可出现的任何位置,同一变量只能作一次定义性说明。 首次引用变量时,变量必须有一个确定的值。 对变量赋初值的三种方法在变量说明的同时对变量赋初值,例如char ch1=a,char ch2=b;使用赋值语句赋值,例如float x,y;x=1.234;y=2.56;通过输入流cin对变量赋初值,例如int a;cina; 5、运算符与表达式 (1)算术运算C+中的算术运算符有两个单目运算符(只有一个操作数的运算符)+(正号)、-(负号);五个双目运算符(有两个操作数的运算符)+(加)、(减)、*(乘)、/(除)、%(取余)。 对于加减乘除,当操作数有一个是实型时,则作实数运算,运算结果为实数;当它们都为整数时则作整数运算,运算结果为整数。 特别注意的是除法运算符“/”,若两边的操作数均为整型数时,则作整除运算。 对于求模运算符“%”,其两边的操作数必须是整数,结果是两数相除后的余数。 例如5/4/结果为1,因为两个操作数都是整数,所以结果也为整数;5.0/4/结果为1.25,因为左操作数为实数,故结果为实数。 当两个整数做加法、减法或乘法运算时,产生溢出(超出对应类型数据的表示范围)系统并不认为是一个错误,但这时的计算结果已经不正确了。 (2)关系运算C+提供六种关系运算符(大于)、(小于)、(大于等于)、(小于等于)、=(等于)、!(不等于)。 前面4种(,)优先级相同,后两种(,!)优先级相同,前4种高于后两种。 结合性都为右结合。 关系运算符完成两个操作数的比较运算,即比较两个操作数的数值大小。 运算的结果为一整数,当关系成立时,其运算结果为整数1;当关系不成立时,其运算结果为整数0。 关系运算的结果可作为一个整数参与表达式的运算。 (3)逻辑运算C+中提供三种逻辑运算符逻辑非(!),一元运算符,对操作数进行取反操作。 例如当操作数的值为0时,运算结果为1;当操作数的值为非0时,运算结果为0。 逻辑与(&),二元运算符,仅当两个操作数的值都为非0时,其运算结果才为1;否则为0。 逻辑或(|),二元运算符,仅当两个操作数的值都为0时,其运算结果才为0;否则为1。 在计算过程中,要注意&的优先级低于!优先级,但高于|的优先级。 !为左结合,而其它两个为右结合。 在逻辑运算中要注意逻辑表达式的副作用对于a&b&c,只有a为非0时,才需要计算b的值,因为当a为0时,不管后面的项如何,都能得到该表达式的值就为0。 同样只有在a和b都为非0的情况下才需要计算c的值。 对于a|b|c,只要a为非0,就不需要判断b和c的值,而只有当a、b都为0时才需要计算c项。 (4)赋值运算C+中赋值运算符分为两种单一赋值运算符(=)和复合赋值运算符(+=,=,*=,/=,%=,&=,=,|=,=),都为双目运算符,结合性为左结合,其运算法则为将左操作数与右操作数进行相应的运算,再将结果赋给左操作数。 对于赋值运算符,其左操作数必须为变量。 例如int a,b,c=2;a=b=c+=10;/等价于a=(b=(c+=10)a=3+b=c;/错误,因为该表达式等价于a=(3+b)=c),3+b不是变量 (5)sizeof()运算符sizeof()运算符是用来计算某种类型或数据所占用的字节数,它为单目运算符。 该运算符与其它类型的基本运算符稍有不同,它的操作数必须在括号内,其使用格式为sizeof()或sizeof()例sizeof(char)/其值为1float b=3.4;sizeof(b+3.4)/其值为8,因为b+3.4的结果为双精度型数 (6)自增、自减运算自增运算符“+”和自减运算符“-”都具有两种形式,且它们都是单目运算符,操作数必须为变量,一般是整型变量,但也可以是实型或字符型变量。 +i(前置自增先将i的值加1,再将变化后的i值参与运算)i+(后置自增先将i参与运算,再将i的值加1)-i(前置自减先将i的值减1,再将变化后的i值参与运算)i-(后置自减先将i参与运算,再将i的值减1) (7)逗号运算逗号运算符的优先级为所有运算符中最低的,结合性为右结合。 逗号表达式的一般形式为,其运算顺序为按从左到右的顺序依次求出各表达式的值,并把最后一个表达式的值作为整个逗号表达式的值。 以下三个表达式的结果是不同的y=x=(a=3,6*3);/x=y=18;a=3;y=x=a=3,6*3;/x=y=a=3;y=(x=a=3,6*3);/x=a=3;y=18; (8)条件运算条件运算符“?:”为三目运算符,要求有三个操作对象,使用格式为?:计算过程为先计算,若其值不等于0,则计算,并将计算的值作为该条件表达式的值;否则求解的值,并将该值作为条件表达式的值。 其优先级高于赋值和逗号运算,左结合。 (9)常用运算符的优先级高!+负号算术运算关系运算逻辑运算条件运算赋值运算(含复合赋值)逗号运算低 (10)类型转换在求表达式值的过程中,对于双目运算符,通常会出现两个操作数的类型不一致的情形,这时就要求将这两个操作数转换为同一类型,然后再进行运算。 不同类型数据的混合运算若某一个二元运算符的左右两个操作数的类型不同,系统先把精度低的操作数变换成与另一操作数相同精度的操作数后再进行运算。 其转换规则如下当操作数为字符型或短整型时,系统自动变换成整型参加运算;当操作数为实型时,系统自动地变换成双精度型实数参加运算;当两个操作数不同时,将表示范围较小的数据类型转换成与另一操作数相同的类型后再参与运算,转换关系为intunsignedlongfloatdouble赋值时的类型转换若赋值运算符右边的数据类型与左边变量的类型不一致但属于类型兼容(类型可转换)时,系统自动进行类型转换。 其转换规则如下将实型数赋给整型变量时,只取实数型的整数部分赋给整型变量,舍去小数部分;将整型数赋给实型变量时,将整数变换成实型数后再赋给实型变量;将字符型数据赋给整型变量时,对无符号型字符变量低八位不变,高位补0后赋值;对于有符号型字符变量,若字节符号位为0时,与无符号字符类型的转换规则相同;,当该字节的符号位为1时,将高位全部置1后再赋值。 强制类型转换强制类型转换是指把一个表达式的值强制转换为指定的类型。 格式如下()或()这种方法的功能是先求表达式的值,再将该值强制转换为所指定的类型。 重点与难点 1、数学表达式在C+中的表达; 2、不同类型常量的合法表示; 3、标识符的命名规则; 4、算术、关系、逻辑运算符的优先级、结合性和运算规则; 5、sizeof()的使用; 6、逻辑运算中逻辑表达式的副作用; 7、类型的自动转换和强制类型转换; 8、算术运算中溢出问题的处理。 习题分析 1、数学式|sin|x在C+程序中对应的正确表达式是()Asqrt(x0?sin(x):-sin(x)B.sqrt(fabs(sin(x)C.sqrt(sqrt(sinx*sinx)D.fabs(sqrt(sin(x)答案为B。 2、在数学式abxy53中,变量x和y的取值为整数,而变量a和b的取值为实数,在C+程序中对应的正确表达式是()A3/5*x*y/a/b B.3*x*y/5/a/b C.3*x*y/5*a*b D.3/a/b/5*x*y答案为D。 注意整数和整数相除得到的结果仍为整数。 要保证表达式的值为实数,必须使第一个除法运算其中一个操作数为实数。 3、设有四个常数4e0.5,87,0x5a,“”,其中符合C+语法规则的常量是()AB.C.D.答案为C。 其中式指数部分必须是整数,转义字符序列中八进制值只允许出现数字0-7。 所以只有和是合法的。 4、下列符号中能用作C+标识符的是()A5abc B.if C.abc D._abc答案为D。 标识符的定义中明确指出标识符必须以字母或下划线开始的字母、数字、下划线串,同时不允许为关键字。 选项(A)以数字开始,选项(B)是关键字,选项(C)以短横线为开始,只有(D)是合法的标识符。 5、能用作用户自定义的标识符为()。 Afriend B.var C.3Xyz-D.Float答案为D。 按照标识符的命名规则,选项(A)为关键字,选项(B)以短横线开始,选项(C)中含有短横线。 由于在C+中是严格区分大小写的,所以“Float”和“float”是两个不同的符号,float是关键字,而Float则是合法的标识符。 6、设有说明“int a=3,b=5,m;”,则执行表达式“m=a=3&a+b8”后,m的值为()Atrue B.false C.0D.1答案为C。 此表达式共涉及了三种运算赋值、关系和逻辑运算。 按照优先级,应先计算关系表达式a=3的值,关系成立结果为1,考虑到逻辑与(&)运算的副作用,当左操作数的值为1时才计算右操作数的值,a+b8关系不成立结果为0,所以整个逻辑表达式的值为0。 最后执行赋值运算,将0值赋给m。 7、设有说明“int x=5,y=7,z=8;”,执行表达式“z+=x+|y+|+z”后,则x、y、z的值分别为()。 A 6、 7、9B. 6、 8、10C. 6、 8、8D. 6、 8、1答案为A。 按照逻辑或(|)运算的优化,只有当左操作数值为0时才计算右操作数的值。 表达式中涉及了自增、逻辑和赋值三种运算,按照优先级首先计算自增运算x+,取出x的值5参加运算,然后x自增1为6;所以第一个自增表达式的值为5,就不再计算后面的两个自增表达式了,直接得到整个逻辑表达式的值为1,通过复合赋值操作赋给z,所以z的值为9。 8、设有说明“int a,b;”,执行语句“b=(a=3*5,a*4),a+15;”后,b的值为()A15B.30C.60D.90答案为C。 在赋值运算、逗号运算和算术运算中,逗号运算处于最低优先级,而赋值其次,最高的是算术运算。 所以a=15,(a=3*5,a*4)表达式的值为60,赋给b,整个表达式等价于“(b=(a=3*5,a*4),a+15”。 9、设有说明“int x=10,y=4,f;float m;”,执行表达式“f=m=x/y”后,则f,m的值分别是()A 2、2.5B. 3、2.5C.2. 5、2.5D. 2、2.0答案为D。 赋值运算的结合性为左结合,首先计算算术表达式x/y的值,因为x,y都是整型,所以进行的是整除运算得结果为2,而m是实型,按照自动类型转换,系统先将整数2转换成实型2.0赋给m后,再将实型数2.0转换为整型赋给整型变量f。 10、设有说明语句“int k=7,x=12;”,则能使值为3的表达式是()。 Ax%=(k%=5)B.x%=(k-k%5)C.x%=k-k/5D.(x%=k)-(k%=5)答案为D。 “%”为取模(取余)运算,选项A、B、C表达式的值均为0,选项D表达式的值为3。 11、实型变量x的取值范围为闭区间-2,10或开区间(15,34),则正确表示x取值范围的逻辑表达式是()。 A-2=x=10|15 若将x在闭区间-2,10表示成-2=x=-2,其运算的结果(0或1)和10进行比较。 若x为20,x=-2关系成立得结果为1,1;其中运算符”称为提取运算符,其作用是暂停程序的执行,等待用户从键盘输入数据,用户输入的数据赋给相应的变量。 输入整数和实数当从键盘上输入多个整数和实数时,要将这些整数或实数之间用空格或回车符隔开。 注意从键盘上输入数据的个数、类型和顺序,必须与cin中列举的变量一一对应。 输入字符数据cin不能将输入的空格和回车符赋给字符型变量。 若要把从键盘上输入的每一个字符包括空格和回车键都作为一个输入字符赋给字符型变量,必须使用函数cin.get()。 其格式为cin.get(); 2、输出流cout的使用格式cout其中”称为插入运算符,它的作用是将其后面的表达式的值输出到显示屏上当前光标所在的位置。 可以通过setw(n)命令来指定输出项的宽度,括号中的n值指出紧跟其后的输出项占用的字符位置个数,并向右对齐,使用该命令必须在程序中包含头文件。 难点与重点 1、在输入字符数据时,使用cin和cin.get()区别 2、转义序列字符的输出习题分析 1、C+中cin是()A一个标准的语句B.预定义的类C.预定义的函数D.预定义的对象答案为D。 cin和cout都是预定义的对象。 三、流程控制语句知识点 1、C+的语句结构类型C+中的语句可归纳为六类表达式语句在表达式的后面加上一个分号,就构成表达式语句。 函数调用语句在函数调用之后加一个分号,就构成函数调用语句。 空语句只由一个分号构成的语句称为空语句。 复合语句用花括号把一个或多个语句括起来构成了一个复合语句。 复合语句从逻辑上来看,C+把它作为一个语句来处理,它可以出现在只允许出现一个语句的任何位置。 注释语句C+中有两种类型的注释语句,一种是用注释符“/”,从“/”到它所在行的行尾之间的所有字符都被作为注释语句处理;另一种是利用一对注释符“/*”和“*/”,在“/*”和“*/”之间的文字都被作为注释处理。 流程控制语句有可能改变程序执行顺序的语句称为流程控制语句。 包括条件语句、循环语句、开关语句、分支选择语句、转向语句等。 2、程序的三种基本结构顺序结构按程序中语句的先后顺序依次执行各个语句;分支结构根据给定的条件判断在两条或多条可能的路径中选择一条路径执行;循环结构根据某一种条件,重复执行某一个语句或若干个语句序列。 3、分支结构语句条件语句单选条件语句格式if()二中择一语句格式if()else嵌套条件语句格式if()else if()else ifelse其中可以是符合C+语法规则的任一表达式,可以是算术表达式、关系表达式、逻辑表达式或逗号表达式。 注意作为判断条件的表达式必须用括号括起来。 当表达式的值为非0时就执行后的语句,否则就执行if语句的下一条语句(单选条件语句)或else后的语句。 对于嵌套的if语句,C+规定了else与if的配对规则为else总是与其前面最近的还没有配对过的if进行配对。 开关语句switch语句根据给定的条件,选择执行其中某一个分支中的语句序列。 其一般格式为switch()case:语句序列1break;case:语句序列2break;case:语句序列nbreak;default叫做“switch控制表达式”,即根据其取值情况决定执行哪一个分支的语句,的值只能为整型、字符型或枚举型。 只能为整数、字符或枚举类型的常数,它可以含有多个语句,也可以没有任何语句,当有多条语句时,不需要用大括号“”括起来。 执行过程如下先计算switch控制表达式的值,然后将该值与每个case分支中的常量表达式的值进行比较,如果相等,则执行该分支后面的语句序列,当执行到break语句时退出该switch语句,否则转到下一分支后的语句序列继续执行;如果控制表达式的值与每个case分支中的常量表达式的值都不相等,则执行default分支中的语句序列;如果既没有匹配的case,又没有default分支,则不执行该switch结构中的任何语句。 4、循环结构语句while()语句格式while()可以是任一合法的表达式,称为循环条件表达式。 循环体中的语句多于一条时,应用大括号括起来以复合语句形式出现。 执行流程为先计算循环条件表达式的值,若不等于0,则执行循环体中的语句。 循环体执行完毕后,再计算循环条件表达式的值,重复以上过程,直到条件循环表达式的值等于0时,退出循环。 dowhile()语句格式dowhile();当程序运行到do时,立即执行循环体,然后计算循环条件表达式进行,如果循环条件表达式的值不为0,则执行循环体,如此反复,直到循环条件表达式的值为0,结束循环。 dowhile()语句与while()语句的主要区别在于循环条件的判断与循环体的执行顺序不同while()语句是先判断后执行,而dowhile()语句是先执行后判断。 因此,while()语句中的循环体可以一次也不执行,而dowhile()语句中的循环体至少要执行一次。 for语句格式for(;)其中(i=1,2,3)为任一合法的表达式,当省略时,系统约定其值为1。 有多条语句时必须用括起。 执行流程为 5、控制执行顺序的语句break语句的执行,并把控制转移到该开关语句之后的第一个语句。 用在循环语句的循环体中时,其作break语句只能用于开关语句和循环语句中。 用在开关语句里,其作用是结束开关语句用是结束该循环语句的执行,把控制转移到紧跟该循环语句之后的语句。 continue语句continue语句只能用在循环语句的循环体中,其作用是结束本次循环,跳到判断循环的位置重新开始下一次循环。 对于while()语句,转而计算循环条件表达式,判断是否继续下一次循环;对for()语句,转而计算和的值,判断是否继续下次循环。 goto语句格式goto;/A:/B当执行到goto语句时,无条件地将控制转移到标有该标号名的语句处执行。 exit()函数格式exit();正常终止程序的执行,将控制返回给系统。 其中,的值只能是整数类型,它通常取一个常数,表示程序终止的原因取0时表示正常退出,而取其它整数时(通常为1)表示异常退出。 abort()异常终止程序的执行。 重点和难点 1、C+中语句的基本格式; 2、单选条件语句和双选条件语句的使用,嵌套的条件语句注意if和else的配对问题; 3、开关语句switch中表达式和常量表达的要求及其使用; 4、for()语句,while()语句,dowhile()语句的特点和使用;非00求解表达式1表达式2循环体求解表达式3for()语句的后继语句 5、break和continue语句的区别和使用。 习题分析 1、在循环语句的循环体中使用break语句的作用是()A.结束本次循环B.结束该层的循环C.结束开关语句D.结束程序执行答案为B。 continue语句结束的是本次循环,使控制跳到判断循环的地方准备开始下一次循环,break语句用在开关语句中可以结束开关语句的执行。 2、设整型变量x的当前值为3,执行以下循环语句后,输出结果()do cout 答案为B。 dowhile()语句先执行循环体再判断循环条件,所以首先输出1,x的值为1,“!(-x)”使x的值变为0,取反后整个表达式的值为1,所以继续执行循环体,输出-2,x的值为-2,再进行循环条件判断“!(-x)”,表达式的值为0,退出循环。 3、在“while(!a)”中,其中“!a”与表达式()等价。 Aa=0B.a=1C.a!=1D.a!=0答案为A。 当a为0时,(!a)的值为1,将执行循环体中的语句,而a不为0时,(!a)的值为0将退出循环体,所以是否执行循环的条件是判断a是否为0。 4、循环语句for(;)中,的执行情况是()A.至少执行一次B.至少执行两次C.可能执行,也可能不执行D.不执行答案为C。 根据for语句的执行顺序,首先执行表达式1,再执行表达式2,如果表达式2的值不为0则执行循环体的语句;如果表达式2的值为0则不执行循环体退出for语句的执行。 5、设有语句“for(int i=5,sum=0;i10,sum+;i+)sum+=i;”,则for()语句的执行情况是()A.循环0次B.循环4次C.循环5次D.循环6次答案为A。 在该for语句中,表达式2是一个逗号表达式,取最后一个表达式的值作为整个逗号表达式的值,sum的初值为0,求解表达式sum+的值为0,sum的值为1。 所以表达式2的值为0,一次也不执行循环体。 6、循环语句“for(int x=0,y=0;y!=100|x10;)x+;”,执行的循环次数是()A.无限次B.10C.11D.100答案为A。 该for语句中表达式2是一个逻辑或表达式,两边的关系表达式只要有一个成立,整个逻辑表达式的值就为1。 在循环中只改变了x的值没有改变y的值,所以关系式y!=100始终成立,表达式2的值始终为1,循环体将执行无限次。 7、执行以下程序段时,输出()int s1=0,s2=0,s3=0,s4=0;for(int t=1;t=4:s1+;break;case t=3;s2+;break;case t=2:s3+;default:s4+cout 在switch语句中,case后只能为常量表达式且常量表达式的值必须各不相同,而题目中的switch语句case后的表达式是关系表达式。 8、执行下列程序段后,变量i的值为()int i=10;switch(i)case9:i+=1;case10:i+=1;case11:i+=1;default:i+=1;A.13B.12C.11D.14答案为A。 因为i的值为10,根据i的值跳到case10:分支执行,i的值增1,因其后没有break语句,所以继续执行case11:后的语句,依次类推,直至case语句结束,所以i的值变为13。 第二部分构造类型和指针类型数据知识点1.一维数组(!)定义格式存储类型;说明存储类型一般省略是数组中各元素的类型,可以是除void类型之外的任何基本类型或构造类型是给数组起一个名字,可以是任意合法的标识符必须为正整数,它表示数组的大小,即该数组所能容纳元素的最大数目int a10;/定义一个10个元素的整型数组/定义两个字符型数组,分别20个和30元素char str120,str230; (2)数组的初始化方法一定义变量的同时给数组元素赋值int s10=1,2,3,4,5,6,7,8,9,10;/初始化所有元素int array20=1,1;/初始化部分元素,其余元素值为0/省略下标,根据初始化元素的个数系统自动计算char str=”I ama student”;方法二通过输入语句给数组元素赋值只有字符数组可以整体输入,其余类型数组只能逐个输入数组元素int a10;for(int i=0;iai;cin.getlinestr1,20;/输入长度不超过20个字符的字符串,以回车结束,可以包含空格cinstr2;/输入时以空格或者回车等字符结束方法三通过赋值语句给数组元素赋值int a10;for(int i=0;i10;i+)ai=2*i+1;当数组定义为全局变量或静态变量时,系统自动将所有元素赋初值为0,数组为局部变量时使用之前一定要自己进行初始化,使之有明确的值,否则是随机数。 (3)数组元素的访问格式数组名表达式表达式的值必须是整型数,最小为0,最大为定义时数组元素个数减1。 下标不能越界。 如果要访问数组中的所有元素,一般用循环语句配合。 字符数组可以直接使用,其余类型数组只能使用其中的元素,而不能将整个数组作为一个整体使用。 (4)数组的输出字符数组,即字符串可以直接整体输出,其余类型数组只能逐个元素输出cout (1)定义格式存储类型;说明表示行数表示列数 (2)元素的存放顺序先按行从小到大的顺序,再按列从小到大的顺序依次来存放,即先存放第0行的所有元素,之后第1行,然后第2行 (3)数组的初始化方法一以数组中的行作为单位依次赋初值int array43=1,3,2,4,5,2,23,7,1,3,2,6;方法二按数组元素的排列顺序依次赋初值float score24=73.1,68,93.5,54.6,87,74.2,65,82.5;方法三只对部分元素赋初值,也分为两种方式以行作为单位或按元素排列顺序int array43=1,2,5,2,23,7,1,3,2,6;float score24=68,79.5,54.6,74.2,65,82.5;方法四根据初始化的数据,自动确定数组的行数,但是列数不能省int array3=1,2,5,2,23,7,1;/行数为3 (4)元素的使用一般使用嵌套循环for语句a是一个row行,column列的int、float、double型数组for(i=0;i (1)结构体数据类型的定义struct;变量2;;;和一般标识符的命名规则相同,大括号中定义的变量称为结构体的成员,每一个成员可以是任何一种类型的数据,包括基本类型和构造类型。 不能指定成员的存储类型为auto、register、extern,但是可以指定其为static。 (2)定义结构体类型变量一般格式,;共有三种方法来定义方法一先定义结构体类型,再定义结构体类型变量struct studentint id;char name20;char sex;int age;float eng,phy,math;student s1,s220;方法二定义结构体类型同时定义结构体类型变量,并给结构体类型命名struct studentint id;char name20;char sex;int age;float eng,phy,math;s1,s220;方法三定义结构体类型同时定义结构体类型变量,不给结构体类型命名structint id;char name20;char sex;int age;float eng,phy,math;s1,s220;推荐使用方法一。 (3)结构体类型与结构体类型变量必须先定义结构体类型,再定义结构体类型变量。 定义结构体类型时不给成员分配存储空间,定义结构体类型变量时才真正为其分配存储空间。 使用时必须通过变量来完成具体的操作。 结构体变量的存储空间为其所有成员占用的空间之和。 例如2+20+1+2+4*3=37(bytes)s1的存储空间为 (4)结构体类型变量的初始化student s1=1012,“mary”,F,19,87,92.5,72;初始值表中的数据类型必须与定义结构体类型时成员表中的类型一致。 另外,初始值表中的数据的个数只能小于等于结构体成员表中元素的个数。 (5)结构体类型变量的应用对结构体变量的使用一般是通过对其成员的引用来实现的。 一般格式为.例题输入20个学生的基本信息到数组s2for(i=0;s2i.sexs2i.ages2i.engs2i.phys2i.math;统计20个人的各门课程的平均成绩for(i=0;i20;i+)ave_eng+=s2i.eng;ave_phy+=s2i.phy;ave_math+=s2i.math;ave_eng=ave_eng/20;ave_phy=ave_phy/20;ave_math=ave_math/20;输出20个学生的基本信息和各门课程的平均成绩cout”学号t”姓名t”性别t”英语成绩t”物理成绩t”数学成绩n”;for(i=0;i20;i+)cout (1)定义共同体类型格式union; (2)定义共同体类型变量基本格式,;同结构体类型变量一样也有三种定义方法。 (3)结构体和共同体的区别共同体变量分配的存储空间为其成员中最大的一个所占的空间,所有成员使用同一个存储空间,因此在某一时刻,只有一个成员是有效的。 结构体变量分配的存储空间为其所有成员所占的空间之和,各个成员都有自己的存储空间,在任一时刻,所有成员都是有效的。 5.枚举类型 (1)枚举类型的定义基本格式enum;与标识符的命名规则相同由逗号隔开的标识符组成,这些标识符称为枚举元素或枚举常量。 例如enum weekdaySun,Mon,Tue,Wed,Thu,Fri,Sat;weekday有七个元素,这七个元素的名字分别为Sun、Mon、Tue、Wed、Thu、Fri、Sat,但实际存储整型值,默认从0开始,依次加1。 如例题中的值分别为 0、 1、 2、 3、 4、 5、6定义枚举类型时也可以指定元素的值为一整型数例如enum weekdaySun=7,Mon=1,Tue,Wed,Thu,Fri,Sat;这时Sun、Mon、Tue、Wed、Thu、Fri、Sat对应的整型值分别为7,1,2,3,4,5,6指定的整型数也可以相同例如enum colorwhite,red,blue=1,green,yellow,black=2;这时white,red,blue,green,yellow,black对应的整型值分别为0,1,1,2,3,2 (2)枚举类型变量的定义与结构体变量的定义方法类似,也有三种方法,常用第一种方法。 例如weekday day1,day2;color c10; (3)枚举类型的应用枚举类型变量能进行两种类型的运算赋值运算和关系运算赋值运算不同类型的枚举变量之间不能相互赋值不能将一个整数直接赋值给枚举类型变量,可以通过强制类型转换后赋值枚举类型变量只能取其类型定义中所列举出的任一个枚举量值关系运算只有相同类型的枚举变量之间可以进行比较运算枚举变量也可以和相同类型的枚举常量之间进行比较运算大小关系是按枚举值对应的整型数的大小进行比较枚举类型不能直接输入、输出,一般是通过switchcase语句,配合与int型之间进行强制转换来实现。 ?6.指针 (1)简单指针定义格式*;作用存放相同数据类型的变量的地址,或者一维数组元素的地址应用举例int a,b,c10,*p1=&a,*p2,*p3;/定义指针变量p1的同时进行初始化p2=&b;/初始化指针变量p2p3=c;cout (2)指向数组的指针定义格式(*)整型常量表达式;作用存放相同数据类型的二维数组的行地址,整型常量表达式的值与二维数组的列数相同应用举例int a34,(*p1)4;for(i=0;i3;i+)p1=a+i;for(j=0;j4;j+)cout(*p1)jt;cout (3)指针数组定义格式*整型常量表达式;作用数组的每个元素都是指针类型,存放相同数据类型变量的地址,经常用于若干个字符串的处理,整型常量表达式的值与字符串的个数相同应用举例char a520,*p5;for(i=0;i5;i+)pi=ai;cin.getline(a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 兖州煤业全员安全培训课件
- 内蒙古渔业安全培训课件
- 化学安全培训意义课件
- 内蒙古中环安全培训课件
- 先烈的英雄事迹课件
- 创卫食品安全培训简报课件
- 创办和改善你的企业课件
- 统编版(2024)一年级上册语文园地一 公开课一等奖创新教学设计
- 化妆实训室安全培训内容课件
- 化妆品灌装安全培训课件
- 延长保修协议书 保修期延保承诺书
- GB/T 5008.2-2023起动用铅酸蓄电池第2部分:产品品种规格和端子尺寸、标记
- Unit3+Understanding+ideas+The+New+Age+of+Invention外研版(2019)高中英语必修第三册
- 锻造操作机安全检查表模版
- 钢结构深化设计工作流程
- 落地式钢管脚手架验收记录表
- GA 1814.2-2023铁路系统反恐怖防范要求第2部分:旅客列车
- 个人养老保险重复缴费退费申请表
- 大气污染控制工程课程设计 车间除尘系统设计说明书1
- JJF 1059.2-2012用蒙特卡洛法评定测量不确定度
- GA/T 1788.3-2021公安视频图像信息系统安全技术要求第3部分:安全交互
评论
0/150
提交评论