C,VC++程序设计3.ppt

上传人:hyn****60 文档编号:70989180 上传时间:2023-01-31 格式:PPT 页数:62 大小:413.50KB
返回 下载 相关 举报
C,VC++程序设计3.ppt_第1页
第1页 / 共62页
C,VC++程序设计3.ppt_第2页
第2页 / 共62页
点击查看更多>>
资源描述

《C,VC++程序设计3.ppt》由会员分享,可在线阅读,更多相关《C,VC++程序设计3.ppt(62页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第四部分第四部分第四部分第四部分 数组、指针数组、指针数组、指针数组、指针(第四、七章)(第四、七章)(第四、七章)(第四、七章)C+语言程序设计C+语言程序设计数组数组数组数组是具有一定顺序关系顺序关系的若干相同类相同类型型变量的集合体,数组属于自定义类型,用于存储和处理大量相同类型相同类型的数据。组成数组的变量称为该数组的元素元素。数组常分为一维数组一维数组、二维数组二维数组2C+语言程序设计一维数组的声明与引用一维数组的声明与引用 语法:类型说明符类型说明符 数组名数组名 常量表达式常量表达式;例如:int a10;表示 a 为整型数组,有10个元素:a0.a9引用:不能越界不能越界!必

2、须先声明,后使用。只能逐个引用数组元素,而不能一次引用整个数组例:a0=a5+a7-a2*33C+语言程序设计例例6.1.cpp#include using namespace std;int main()int A10,B10;int i;for(i=0;i10;i+)Ai=i*2-1;B10-i-1=Ai;for(i=0;i10;i+)coutAi =Ai;cout Bi=Biendl;4C+语言程序设计数组元素在内存中顺次存放顺次存放,它们的地址地址是连续是连续的。例如:int a10数组名字数组名字是数组首元素首元素的内存地址内存地址。数组名是一个常量常量,不能被赋值。一维数组的存储顺

3、序一维数组的存储顺序a0a1 a2a3a4 a5a6a7a8a9a5C+语言程序设计一维数组的初始化一维数组的初始化可以在编译阶段使数组得到初值:在声明数组时对数组元素赋以初值。static int a10=0,1,2,3,4,5,6,7,8,9;可以只给一部分元素赋初值。static int a10=0,1,2,3,4;在对全部数组元素赋初值时,可以不指定数组长度。static int a=1,2,3,4,56C+语言程序设计【问题】循环从键盘读入若干组选择题答案,计算并输出每组答案的正确率,直到输入ctrl+z为止。正确答案为acbad。每组连续输入5个答案,每个答案可以是a.d。【运行结

4、果】acbbaacbba *ScoreScore 60%60%acbadacbad Score 100%Score 100%实例实例6-2.cpp7#include include using namespace std;using namespace std;int main()int main()charchar key=a,c,b,a,d;key=a,c,b,a,d;char c;char c;intint ques=0,numques=5,numcorrect=0;ques=0,numques=5,numcorrect=0;coutEnter the numques question

5、tests:endl;coutEnter the numques question tests:endl;while(cin.get(c)while(cin.get(c)if(c!=n)if(c!=n)if(c=keyques)if(c=keyques)numcorrect+;numcorrect+;cout ;cout ;elseelse cout*;cout*;elseelse cout Score cout Score float(numcorrect)/numques*100%;float(numcorrect)/numques*100%;ques=0;ques=0;numcorrec

6、t=0;numcorrect=0;cout endl;cout endl;continue;continue;ques+;ques+;88C+语言程序设计二维数组的声明及引用二维数组的声明及引用 数据类型 数组名常量表达式 常量表达式 例:int a34;存储顺序 按行行存放,上例中数组a的存储顺序为:引用 b12=a23/2a0a00 a01 a02 a03a0a00 a01 a02 a03a1a1 a10 a11 a12 a13a10 a11 a12 a13a2a20 a21 a22 a23a2a20 a21 a22 a23aa00 a01 a02 a03 a10 a11 a12 a13

7、a20 a21 a22 a23a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a239C+语言程序设计 将所有数据写在一个将所有数据写在一个 内,按顺序赋值内,按顺序赋值 static static intint a34=1,2,3,4,5,6,7,8,9,10,11,12;a34=1,2,3,4,5,6,7,8,9,10,11,12;(声明时才能这样(声明时才能这样赋值,)赋值,)错误例子:错误例子:a34=1,2,3,4,5,6,7,8,9,10,11,12;a34=1,2,3,4,5,6,7,8,9,10,11,12;(只能一个一个(只能一个一个赋

8、值)赋值)分行给二维数组赋初值分行给二维数组赋初值 static static intint a34 a34 =1,2,3,4,5,6,7,8,9,10,11,12;=1,2,3,4,5,6,7,8,9,10,11,12;可以对部分元素赋初值可以对部分元素赋初值 static static intint a34=1,0,6,0,0,11;a34=1,0,6,0,0,11;二维数组的初始化二维数组的初始化10C+语言程序设计数组作为函数参数数组作为函数参数数组元素数组元素作实参,与单个变量一样。数组名数组名作参数,形、实参数都应是数组名,类型要一样,传送的是数组首首地址地址。对形参数组的改变会直

9、接影响直接影响到实参数组。11C+语言程序设计例例6-2.cpp【问题】编程实现在主函数中初始化一个矩阵并将每个元素都输出,然后调用子函数,分别计算每一行的元素之和,将和直接存放在每行的第一个元素中,再输出各行元素的和。【运行结果】1 2 3 41 2 3 4 2 3 4 52 3 4 5 3 4 5 63 4 5 6 Sum of row 0 is 10Sum of row 0 is 10 Sum of row 1 is 14Sum of row 1 is 14 Sum of row 2 is 18Sum of row 2 is 1812#include include using name

10、space std;using namespace std;void RowSum(void RowSum(int A4,int A4,int nrow)int nrow)/数组作形参数组作形参 int sum;int sum;for(int i=0;i nrow;i+)for(int i=0;i nrow;i+)sum=0;sum=0;for(int j=0;j 4;j+)for(int j=0;j 4;j+)sum+=Aij;sum+=Aij;cout Sum of row i cout Sum of row i is sum endl;is sum endl;Ai0=sum;Ai0=su

11、m;1313int main()int main()int Table34=1,2,3,4,2,3,4,5,3,4,5,6;int Table34=1,2,3,4,2,3,4,5,3,4,5,6;for(int i=0;i 3;i+)for(int i=0;i 3;i+)for(int j=0;j 4;j+)for(int j=0;j 4;j+)cout Tableij ;cout Tableij ;cout endl;cout endl;RowSum(RowSum(TableTable,3);,3);/数组名作实参数组名作实参数组名作实参数组名作实参 for(int i=0;i 3;i+)f

12、or(int i=0;i 3;i+)cout Tableicout Tablei0 0 1414C+语言程序设计课堂练习课堂练习编辑实现求输入的10个学生成绩中最高分的学生学号及成绩?分析:所用到知识点有结构体、数组、函数(数组作参数)15C+语言程序设计对象数组对象数组数组的元素可是基本类型,可是自定义类型对象数组的元素是对象对象,有数据、函数成员声明:类名类名 数组名数组名元素个数元素个数;访问方法:通过下标访问 数组名数组名下标下标.成员名成员名16C+语言程序设计对象数组初始化对象数组初始化数组中每一个元素对象被创建时,系统都会调用类构造函数初始化该对象。通过初始化列表赋值初始化列表赋

13、值。Point A2=Point(1,2),Point(3,4);Point A2=Point(1,2),Point(3,4);如果没有为数组元素指定显式初始值,数组元素便使用默认值初始化(调用默认构造函数)。17C+语言程序设计对象数组元素的构造函数对象数组元素的构造函数不声明构造函数,则采用默认构造函数各元素对象的初值要求为相同初值要求为相同的值时,可以声明具有默认形参值默认形参值的构造函数。各元素对象的初值要求为不同的值初值要求为不同的值时,需要声明带形参的带形参的构造函数。当数组中每一个对象被删除时,系统都要调用一次析构函数。18C+语言程序设计例例6-3.cpp#if!#if!def

14、ined(_POINT_Hdefined(_POINT_H)/)/Point.hPoint.h#define _POINT_H#define _POINT_Hclass Pointclass Point public:public:Point();Point();Point(intPoint(int xx,intxx,int yyyy););Point();Point();void void Move(intMove(int x,intx,int y);y);intint GetXGetX()return X;()return X;intint GetYGetY()return Y;()ret

15、urn Y;private:private:intint X,Y;X,Y;#endifendif19#include#include/6-2.cpp/6-2.cppusing namespace std;using namespace std;#include Point.h#include Point.hPoint:Point()Point:Point()X=Y=0;X=Y=0;coutcoutDefault Constructor called.Default Constructor called.endlendl;Point:Point(intPoint:Point(int xx,int

16、xx,int yyyy)X=xx;X=xx;Y=Y=yyyy;coutcout Constructor called.Constructor called.endlendl;Point:Point()Point:Point()coutcoutDestructor called.Destructor called.endlendl;void Point:void Point:Move(intMove(int x,intx,int y)y)X=x;Y=y;X=x;Y=y;2020#include#include#include Point.h#include Point.husing namesp

17、ace std;using namespace std;intint main()main()coutcoutEntering main.Entering main.endlendl;Point A2;Point A2;/对象数组对象数组 for(intfor(int i=0;i2;i+)i=0;i2;i+)Ai.Move(i+10,i+20Ai.Move(i+10,i+20);/);/对象数组元素对象数组元素 coutcoutExiting main.Exiting main.endlendl;return 0;return 0;/思考运行结果?思考运行结果?思考运行结果?思考运行结果?21

18、 运行结果:Entering main.Default Constructor called.Default Constructor called.Exiting main.Destructor called.Destructor called.21C+语言程序设计内存地址内存地址计算机内存中每个字节是一个基本存储单元,都有一个地址地址。C+从内存中存取数据的方式:1.通过变量名;2.通过地址。在变量获得内存空间的同时,变量名也就成为了相应内存空间的名称,在变量的整个生存期内都可以用该名字访问该内存空间。但若没有变量名或用变量名不方便时(如动态分配的内存单元),则只能通过地址访问22C+语言程

19、序设计指针指针指针指针也是一种数据类型数据类型,具有指针类型的变量称为指针变量。指针变量指针变量用于存放内存单元地址地址。通过变量名访问一个变量是直接的,而通过指针访问指针访问一个变量是间接间接的。声明形式:数据类型数据类型 *标识符;标识符;例:int*p/声明一个指向整型变量指针p数据类型可以是任意类型,表明了指针所指向的对象对象是何种类型。23C+语言程序设计“*”和和“&”“*”:定义时,表示声明一个指针变量;使用时,表示指针所指向的变量的值。“&”:取地址运算符,用来得到一个对象的地址,是一个一元操作符。注意区别:int*p;int r;coutp;m=&r;cout*p;m=?;*

20、m=?;24C+语言程序设计指针的赋值指针的赋值声明了一个指针变量,但此时指针中所具有的地址值还不具任何意义,需对指针进行赋值对指针赋值得方法:1.声明指针同时进行初始化,语法形式为:数据类型数据类型 *指针名指针名 初始地址;初始地址;例:int x;int*m=x;2.声明后单独使用赋值语句,语法形式为:指针名指针名 地址;地址;例:int*p;int x;p=&x;25C+语言程序设计内存用户数据区变量 i变量 j变量 i_pointer362000200020043010例:例:intint i=3,j=6;i=3,j=6;intint *i_pointeri_pointer=&i;=

21、&i;指针变量的存储指针变量的存储200020003 3i_pointeri_pointer*i_pointer*i_pointeri i26C+语言程序设计例例6-5.cpp#include#include using namespace std;using namespace std;intint main()main()intint*i_pointeri_pointer;/声明声明intint型指针型指针i_pointeri_pointer intint i;/i;/声明声明intint型数型数i i i_pointeri_pointer=&i;/=&i;/取取i i的地址赋给的地址赋给

22、i_pointeri_pointer i=10;/int i=10;/int型数赋初值型数赋初值 coutcoutOutput Output intint i=i i=iendlendl;/;/输出输出intint型数的值型数的值 coutcoutOutput Output intint pointer i=*pointer i=*i_pointeri_pointerendlendl;/输出输出intint型指针所指地址的内容型指针所指地址的内容 27C+语言程序设计指针注意事项指针注意事项1.常量指针常量指针:指向常量的指针,不能通过指针来改变所指对象的值,但指针本身可以改变,可以指向另外的

23、对象。const int*i=10;i=x;/正确 *i=20;/错误错误2.指针常量指针常量:指针本身是常量,不能被改变 char*const c=“hello”;c=“ok”;/错误错误28C+语言程序设计void类型指针类型指针VoidVoid类型指针:可以存储类型指针:可以存储任何类型任何类型任何类型任何类型的对象地址。的对象地址。通过访问该指针可以访问通过访问该指针可以访问任何类型任何类型任何类型任何类型的数据。的数据。void void vobjectvobject;/;/错,不能声明错,不能声明voidvoid类型的变量类型的变量 void*void*pvpv;/;/对,可以声明

24、对,可以声明voidvoid类型的指针类型的指针 intint *pint;*pint;intint i;i;intint main()main()pvpv=&i;/void=&i;/void类型指针指向整型变量类型指针指向整型变量 /void/void指针赋值给指针赋值给intint指针需要指针需要类型强制转换类型强制转换类型强制转换类型强制转换:pint=(pint=(intint*)*)pvpv;29C+语言程序设计指针变量的算术运算指针变量的算术运算指针p加或减整数n意义是指针当前指向位置的前方或后方第n个数据的地址。这种运算的结果值取决于指针指向的数据类型指针p+/+p或p-/-p意

25、义指向下一个或前一个数据。例如:y=*px+相当于 y=*(px+)30C+语言程序设计关系运算关系运算指向相同类型数据的指针之间可以进行各种指向相同类型数据的指针之间可以进行各种关系运算。关系运算。指向不同数据类型的指针,以及与一般整数指向不同数据类型的指针,以及与一般整数变量之间不能进行关系运算。变量之间不能进行关系运算。指针可以和零之间进行等于或不等于的关系指针可以和零之间进行等于或不等于的关系运算。例如:运算。例如:p=0p=0或或p!=0p!=0赋值运算赋值运算向指针变量赋的值必须是地址常量或变量,向指针变量赋的值必须是地址常量或变量,不能是普通整数。但可以赋值为整数不能是普通整数。

26、但可以赋值为整数0 0,表,表示空指针。示空指针。31C+语言程序设计指向数组元素的指针指向数组元素的指针声明与赋值 int a10,*pa;pa=&a0;或 pa=a;通过指针引用数组元素*pa就是a0,*(pa+1)就是a1,.ai,*(pa+i),*(a+i),pai都是等效的能写pa+,但不能写 a+,因为a是数组 首地址是常量。32C+语言程序设计指针数组指针数组数组的元素全部是指针类型变量。声明:类型说明符*数组名常量表达式 例:Point *pa2;表示由pa0,pa1两个指针组成33C+语言程序设计例例6-8.cpp【问题】利用指针数组输出单位矩阵【运行结果】Matrix te

27、st:1,0,0 0,1,0 0,0,134#include#include using namespace std;using namespace std;intint main()main()intint line13=1,0,0,0,1,0,0,0,1;line13=1,0,0,0,1,0,0,0,1;intint*p_line3;/*p_line3;/声明整型指针数组声明整型指针数组p_line0=line1;/p_line0=line1;/初始化指针数组元素初始化指针数组元素p_line1=line2;p_line1=line2;p_line2=line3;p_line2=line3

28、;coutcoutMatrix test:Matrix test:endlendl;for(intfor(int i=0;i3;i+)/i=0;i3;i+)/对指针数组元素循环对指针数组元素循环 for(intfor(int j=0;j3;j+)/j=0;j3;j+)/对矩阵每一行循环对矩阵每一行循环 coutcoutp_lineijp_lineij;coutcoutendlendl;3535C+语言程序设计指针作为函数参数指针作为函数参数以地址方式传递数据,可用来返回函数返回函数处理结果。处理结果。实例6-10.cpp实参是数组名时形参可以是指针。指针作为函数的参数传递,与数组作为函数的参数

29、传递是类似的,都是形参改形参改变,实参也相应改变。变,实参也相应改变。思考:用指针改写用指针改写实例实例6-2.cpp?36C+语言程序设计实例实例6-10.cpp【问题问题】读入三个浮点数,输出整数和小数部分读入三个浮点数,输出整数和小数部分【运行结果运行结果】Enter three(Enter three(2 2)floating point numbers)floating point numbers 4.74.7 Integer Part is 4 Fraction Part is 0.7Integer Part is 4 Fraction Part is 0.7 -4.7518-4.

30、7518 Integer Part is-4 Fraction Part is-0.7518Integer Part is-4 Fraction Part is-0.751837#include include using namespace std;using namespace std;void splitfloat(float x,int*intpart,float*fracpart)void splitfloat(float x,int*intpart,float*fracpart)*intpart=int(x);*intpart=int(x);/取取x x的整数部分的整数部分 *fr

31、acpart=x-*intpart;/*fracpart=x-*intpart;/取取x x的小数部分的小数部分 int main()int main()int i,n;int i,n;float x,f;float x,f;coutEnter three(coutEnter three(2 2)floating point numbers)floating point numbersendlendlfor(i=0;i for(i=0;i x;cin x;splitfloat(x,&n,&f);/splitfloat(x,&n,&f);/变量地址做实参变量地址做实参 coutInteger P

32、art is n coutInteger Part is n Fraction Part is fendl;Fraction Part is fendl;3838C+语言程序设计当函数的返回值是地址地址时,该函数就是 指针形函数指针形函数。声明形式:数据类型数据类型 *函数名函数名(参数参数)主在目的是把大量数据返回大量数据返回,而通常非 指针型函数只能返回一个变量或对象。39C+语言程序设计指向函数的指针指向函数的指针函数指针函数指针:用来存放函数代码首地址代码首地址的变量在程序中可以象使用函数名一样使用指向函数指针来调用函数。声明:数据类型数据类型 (*函数指针名函数指针名)(形参表形参表

33、)函数指针使用前要进行赋值,使指针指向一 个已经存在的函数代码起始地址(函数名)语法形式:函数指针名函数指针名 函数名;函数名;40C+语言程序设计例例6-11.cpp#include using namespace std;void print_stuff(float data_to_ignore);void(*function_pointer)(float);int main()float pi=(float)3.14159;float two_pi=(float)2.0*pi;print_stuff(pi);function_pointer=print_stuff;function_po

34、inter(pi);41C+语言程序设计对象指针对象指针每个对象在初始化后都会占用一定内存空间。故可通过对象地址来访问一个对象。对象指针对象指针就是用于存放对象地址对象地址的变量。声明:类名类名*对象指针名;对象指针名;Point A(5,10);Piont*ptr;ptr=&A;使用:对象指针名对象指针名成员名成员名ptr-getx();相当于(*ptr).getx();42C+语言程序设计class Fred;/前向引用声明class Barney Fred x;/错误:类Fred的/声明尚不完善class Fred Barney y;class Fred;class Barney Fre

35、d*x;class Fred Barney y;43C+语言程序设计this指针指针This指针是一个隐含于每个类的成员函数中的特殊指针,它用于指向当前所当前所操作的对象当通过一个对象调用成员函数时,系统先将该对象的地址赋给this指针,然后调用成员函数,成员函数对对象的数据成员进行操作时,就隐含使用了this指针。一般程序设计中,不直接使用this指针来引用对象成员。44C+语言程序设计this指针(续)指针(续)例如:Point类的构造函数体中的语句:X=xx;Y=yy;等价于:this-X=xx;(隐含使用this)this-Y=yy;在成员函数中,可以使用*this来标识正来标识正在调

36、用该函数的对象。在调用该函数的对象。45C+语言程序设计字符串字符串 字符串常量,例如:china 没有字符串变量,C+用字符数组字符数组来存储和 处理,并0为结束标志。char str8=p,r,o,g,r,a,m,0;char str8=program;char str=program;46C+语言程序设计字符串的输入字符串的输入/输出输出方法方法逐个字符输入输出逐个字符输入输出将整个字符串一次输入或输出将整个字符串一次输入或输出例:例:char c=“China”;char c=“China”;coutcoutc;/str1str2str3;str1str2str3;运行时输入数据:运行

37、时输入数据:How are you?How are you?若改为:若改为:static char str13;static char str13;cincinstrstr;运行时输入数据:运行时输入数据:How are you?How are you?内存中变量状态如下:str1:H o w 0 str2:a r e 0 str3:y o u?0内存中变量 str 内容如下 H o w 0 48C+语言程序设计整行输入字符串整行输入字符串cin.getline(cin.getline(字符数组名字符数组名字符数组名字符数组名St,St,字符个数字符个数字符个数字符个数N,N,结束符结束符结束

38、符结束符););cin.getcin.get(字符数组名字符数组名字符数组名字符数组名StSt,字符个数字符个数字符个数字符个数NN,结束符结束符结束符结束符););功能:功能:一次连续读入多个字符(含空格)一次连续读入多个字符(含空格),直到直到 读满读满NN个,或遇到指定的结束符(默认个,或遇到指定的结束符(默认 n n).读读 入的字符串存放于字符数组入的字符串存放于字符数组StSt中中.前者读取但不存储结束符,后者既不读取也不前者读取但不存储结束符,后者既不读取也不 存储结束符存储结束符49C+语言程序设计字符串实例字符串实例#include#include using namespa

39、ce std;using namespace std;void main(void)void main(void)char city80;char city80;char state80;char state80;intint i;i;for(i=0;i 2;i+)for(i=0;i 2;i+)cin.getline(city,80,);cin.getline(city,80,);cin.getline(state,80,n);cin.getline(state,80,n);coutcoutCity:city State:City:city State:state stateendlendl;

40、50C+语言程序设计课堂练习课堂练习编写函数reverse(char*s,char*news)将一个字符串逆序,并生成一个新的字符串例:已知字符串“abc”,逆序为 cba“参考答案 51C+语言程序设计String类类 C+中,预定义字符串类String,提供了对字符串进行处理所需要的操作。使用string类,需包含#include 常用的字符串处理函数:strcat(连接),strcpy(复制),strcmp(比较),strlen(求长度),strlwr(换为小写),strupr(换为大写)52C+语言程序设计例例6-21.cpp#include#include#include#inclu

41、de using namespace std;using namespace std;void void trueFalse(inttrueFalse(int x)x)coutcout(x?True:False)(x?True:False)endlendl;intint main()main()string S1=DEF,S2=123;string S1=DEF,S2=123;char CP1=ABC;char CP1=ABC;char CP2=DEF;char CP2=DEF;coutcoutS1=CP1 returned;S1=CP1 returned;trueFalse(trueFals

42、e(S1=CP1S1=CP1);/);/等价于等价于strcmp(S1,CP1)strcmp(S1,CP1)S2+=S1;S2+=S1;/等价于等价于strcat(S2,S1);strcat(S2,S1);coutcoutS2=S2+S1:S2S2=S2+S1:S2endlendl;coutcoutlength of S2:S2.length()length of S2:S2.length()endlendl;53C+语言程序设计typedef语句语句自定义数据类型:自定义数据类型:枚举类型枚举类型枚举类型枚举类型、结构类型结构类型结构类型结构类型、联合类型联合类型联合类型联合类型、数组类型数

43、组类型数组类型数组类型、类类型类类型类类型类类型。类型定义语句类型定义语句typedeftypedef语法形式:语法形式:typedeftypedef 已有类型名已有类型名 新类型名表;新类型名表;新类型名表中可以有多个标识符,它们之间以逗号新类型名表中可以有多个标识符,它们之间以逗号隔开。隔开。为已有类型另外命名,有力于提高程序可读性。为已有类型另外命名,有力于提高程序可读性。新类型名等同于原类型名使用。新类型名等同于原类型名使用。例:例:typedeftypedef double area double area,v v;typedeftypedef intint nature natur

44、e;nature inature i,j j;area xarea x;v zv z;54C+语言程序设计枚举类型枚举类型enum将需要的变量值一一列出,用将需要的变量值一一列出,用enumenum声明出来,即为声明出来,即为枚举型。枚举型。语法形式:语法形式:enumenum 枚举类型名枚举类型名 变量值变量值,变量值变量值2,2,变量值变量值n;n;例例 enmuenmu week week sun,mon,tue,wed,thu,fri,satsun,mon,tue,wed,thu,fri,sat;注意:注意:1 1、枚举类型定义后,不可对枚举元素赋值;、枚举类型定义后,不可对枚举元素赋

45、值;2 2、枚举元素具有默认值,依次为、枚举元素具有默认值,依次为0,1,2.0,1,2.。3 3、枚举值可以进行关系运算。、枚举值可以进行关系运算。4 4、可在声明时对枚举元素另行赋值。、可在声明时对枚举元素另行赋值。5 5、整数值不可直接赋给枚举变量;如需要将、整数值不可直接赋给枚举变量;如需要将 整数赋值给枚举变量,应进行强制转换。整数赋值给枚举变量,应进行强制转换。55C+语言程序设计 实例实例2-11.cpp 枚举枚举【问题】设某次体育比赛的结果有四种可能:胜win,负lose,平局tie,取消cancel,编写程序输出四种情况【分析】由于比赛结果只有四种可能,所以可以声 明一个枚举

46、类型的变量来存放比赛结果。【运行结果】The game was played and we won!The game was played and we lost.The game was played The game was cancelled56C+语言程序设计#include using namespace std;enum game_result WIN,LOSE,TIE,CANCEL;int main()game_result result;enum game_result omit=CANCEL;int count;for(count=WIN;count=CANCEL;count

47、+)result=(game_result)count;if(result=omit)cout The game was cancelledn;else cout The game was played;if(result=WIN)cout and we won!;if(result=LOSE)cout and we lost.;cout n;return 0;5757C+语言程序设计结构体结构体struct 结构体结构体structstruct由不同数据类型的数据组成的集合体。由不同数据类型的数据组成的集合体。语法形式:语法形式:structstruct 结构名结构名 数据类型说明符数据类型

48、说明符1 1 成员名成员名1 1;数据类型说明符数据类型说明符2 2 成员名成员名2 2;数据类型说明符数据类型说明符n n 成员名成员名n n;;例:学生信息例:学生信息 structstruct student student intint num;char name20;char sex;num;char name20;char sex;intint age;float age;float score;score;结构体变量的声明:结构体变量的声明:结构名结构名 结构变量名;结构变量名;例例 student astudent a;注意:注意:1 1、结构变量声明在结构类型声明之后,也可同

49、时进行、结构变量声明在结构类型声明之后,也可同时进行 2 2、结构变量占内存大小可用、结构变量占内存大小可用sizeofsizeof运算求出运算求出 3 3、说明结构变量的同时可以直接设置初值、说明结构变量的同时可以直接设置初值58C+语言程序设计结构体结构体struct(续)(续)结构变量体成员的引用形式:结构变量名结构变量体成员的引用形式:结构变量名.成员名成员名#include#include /例例2-122-12#include#include using namespace std;using namespace std;structstruct student/student/学

50、生信息结构体学生信息结构体 intint num;/num;/学号学号 char name20;/char name20;/姓名姓名 char gender;/char gender;/性别性别 intint age;/age;/年龄年龄 stustu=97001,Lin Lin,F,19;=97001,Lin Lin,F,19;intint main()main()coutcoutsetw(7)setw(7)stu.numstu.numsetw(20)setw(20)stu.namestu.name setw(3)setw(3)stu.sexstu.sexsetw(3)setw(3)stu.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com