2048课件-第一讲语言基础_第1页
2048课件-第一讲语言基础_第2页
2048课件-第一讲语言基础_第3页
2048课件-第一讲语言基础_第4页
2048课件-第一讲语言基础_第5页
免费预览已结束,剩余123页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一讲C++语言基础中国地质大学(

)计算机学院面

象程序设计(A)联系邮箱:

作业邮箱:2课程主要内容第一部分:面

象程序设计与C++语言程序设计与C++语言基础数组、指针与字符串函数类与对象继承与多态流与异常处理标准模板库3课程主要内容第二部分:基于MFC的面象程序设计等Windows程序设计基础MFC程序设计基础基于文档/视图结构的程序利用CDC实现绘图程序用户交互对象—菜单、框和常用控件动态

库与静态

库COM组件与ActiveX控件4课程主要内容第三部分:跨平台UI的面象程序设计基于wxWidget的程序设计基于Qt的程序设计选学内容,不在考试范围之内!!!5课程安排授课:11-18,每周2次:–周三,5,6节课,综合楼111–周五,3,4节课,综合楼111实

共5次:14-18周综合楼315作业:5次,学委邮件提交答疑:平时通过邮件;北区计算机学院1136考核方式闭卷

考试平时成绩10%作业成绩30%考试成绩60%7本章主要内容1.程序设计与C++语言简介2.基本数据类型和表达式3.数据的输入与输出4.算法的基本控制结构5.自定义数据类型1.程序设计与C++语言9程序设计及其语言程序设计方法演变C++语言简介C++语言的产生C++语言的特点C++语言字符集C++的词法记号1.1

程序设计及其语言1936年图灵(Turing)

重要

《论可计算数及其在判定问题上的应用》1939年阿塔纳索夫(Atanasoff)和(

Berry)在爱荷华州立大学制造了ABC计算机(Atanasoff-Berry

Computer),世界上第一台电脑埃尼(ENIAC)在

宾夕法尼亚大学诞生。由莫齐来(Mauchly)和爱克特(Eckert)发明10程序设计是采用某种编程语言,为了解决某个特定领域的问题,而使用某种设计方法编写计算机程序的活动。包括4个层次:算法的设计与分析程序设计语言程序设计方法学程序设计环境与工具111.2

程序设计方法的演变结构化程序设计面

象程序设计基于组件的程序设计面向Agent的程序设计12结构化程序设计诞生于20世纪60年代,到了20世纪80年代已经成为程序设计的主流。思想是:①程序实体主要由算法和数据结构组成;②其分析与设计方法采用的是“自顶向下,逐步求精”的程序设计方法;③在程序的流程控制结构上遵循“单 /单出口”的理念;④任何程序的结构都是由顺序、选择与循环来完成的,取消了goto语句。结构化程序设计面

象程序设计是对结构化程序设计的继承和发展,其主要的改变是把反映事物的属性与

该属性的方法组装成一体,形成一个实体对象。属性是指某对象的属性,方法是指某对象的行为或动作。相同类型的对象构成一个类,对象是类的一个实例。类是构成面

象程序设计的基石。面象程序设计Used

for

simulating

system

behavior

in

the

late

1960s,

SIMULA

was

theobject-oriented

language.

In

the

1970s,

Xerox's

Smalltalk

was

theobject-oriented

programmingObject-oriented

programming

(OOP)

:is

a

programming

paradigm

that

represents

concepts

as

"objects"

that

have

data

fields(attributes

that

describe

the

object)

and

associatedprocedures

known

as

methods.

Objects,

which

areusually

instances

of

classes,

are

used

to

interact

with

oneanother

to

design

applications

and

computer

programs.OOP

Languages:Used

for

simulating

system

behavior

inthe

late

1960s,

SIMULA

was

the

object-oriented

language.Today,

C++

and

Java

are

the

major

OOP

languages,

while

C#,Visual

Basic.NET,

Python

and

JavaScript

are

also

popular.ACTOR

and

Eiffel

were

earlier

OOP

languages基于组件的程序设计是面

象程序设计的延伸,强调在不同平台、不同程序设计语言的开发环境下进行开发和重用。如COM组件、.Net组件、Java

Bean等。组件是指系统中明确辨识的构成部分,是可以被复用的

实体。它由组件规约和组件实现两部分组成,其中组件规约主要由组件模型来进行描述。当前组件的设计采用的模型主要有和。基于组件的程序设计Agent( )是一种比图灵机理论更接近现实的计算模型,它将具有智能化的各

系统部件系统地组合起来,建立起高度智能的实体。在面向

程序设计中,程序是由多个具有独立功能的Agent组成的,其关键是设计每一个具有智能行为的Agent实体。Agent是一个被密封的计算机系统,它能被放置在某个环境中,并在那个环境中变化和自治行动,以达到它的设计目标。面向AGENT的程序设计181.3 C++语言简介C++语言的产生C++语言的特点C++语言的字符集C++语言的词法记号TIOBE

programming

community

index1.3.1

C++语言的产生C++是从C语言发展演变而来的,首先是一个更好的C。引入了类的机制,最初的C++被称为"带类的C"。1983年正式取名为C++。C++语言的标准化工作从

开始,于1994年制定了ANSIC++标准草案。以后又经过不断完善,成为C++

03。C++11

was

published

as

ISO/IEC14882:2011

in

September

2011C++语言概述202(百科C++/C%2B%2B)1Visual

C++Visual

Studio中的Visual

C++不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(Integrated

DevelopmentEnvironment,

IDE)。Visual

C++由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导ClassWizard等开发工具。这些组件通过一个名为

Developer

Studio的组件集成为和谐的开发环境。22建立Win32控制台程序(打印

o)建立Win32

Application

(打印

o)建立MFC应用程序(打印

o)用Visual

C++建立工程本课程涉及的三种主要工程类型关于讲义配套例子程序的说明每个例子的 为:章节号+例子序号,如第3章第5个例子记为3_5.对于不涉及MFC的所有的例子放在一个工程运行方式:输入 直接运行1.3.2

C++的特点全面兼容C它保持了C的简洁、高效和接近汇编语言等特点对C的类型系统进行了 和扩充–C++也支持面向过程的程序设计,不是一个纯正的面 象的语言支持面

象的方法C++语言概述26C++程序实例—例1-1C++版

oWorld#include

<iostream>cout<<"cout<<"o!\n";e

\to

c++!\n";}C++语void

main(void)o

{概述C版

o

World#include

<stdio.h>void

main(void){printf("printf(“o!\n");e

\to

c++!\n");}27C++程序实例运行结果:o!e

to

c++!C++语言概述281.3.3

C++字符集29大小写的英文字母:A~Z,a~z数字字符:0~9特殊字符:空格

!

#

%

^

&

*_(下划线)+

=

-

~<

>

/\'";.

,

()[]{}C++语言概述1.3.4

词法记号关键字C++预定义的单词(见下页)。标识符程序员 的单词,它命名程序正文中的一些实体。文字

在程序中直接使用符号表示的数据操作符

用于实现各种运算的符号。分隔符

用于分隔各个词法记号或程序正文:(

)

{}

,

:

;空白:空格、制表符(TAB键产生的字

符)、换行符(Enter键所产生的字符)和注释的总称。C++语言概述30C+

关键字共 个,新增关键字:alignas、alignof、char16_t、char32_t、constexpr、decltype、noexcept、nullptr、static_assert、thread_local;32标识符的构成规则以大写字母、小写字母或下划线(_)开始。可以由以大写字母、小写字母、下划线(_)或数字0~9组成。大写字母和小写字母代表不同的标识符。C++语言概述332.基本数据类型和表达式2.1数据类型常量与变量整型数据实型数据字符型数据布尔型数据*类型转换2.2运算符与表达式算术运算符与算术表达式赋值运算符与赋值表达式逗号运算与逗号表达关系运算与关系表达式逻辑运算与逻辑表达式条件运算与条件表达式sizeof运算位运算–运算优先级别与隐含转换2.1.1数据类型——常量与变量#include<iostream.h>void

main(void){const

int

PRICE=30;int

num,total;float

v

,r,h;num=10;total=num*PRICE;cout<<total

<<endl;r=2.5;h=3.2;v=3.14159*r*r*h;cout<<v

<<endl;}常量变量变量先定义后使用符号常量34基本数据类型和表达式变量的

与

类型<auto类型>

<变量类型>

<变量列表>类–属于一时性,其 空间可以被若干变量多次覆盖使用。register

类–存放在通用寄存器中。extern

类–

在所有函数和程序段中都可

。static

类–在内存中是以固定地址存放的,在整个程序运行期间都有效。基本数据类型和表达式35数据类型——变量赋初值36例:int

a=3;double

f=3.56;char

c='a';intc=5;基本数据类型和表达式37voidmain(void){const

int

PRICE=30;int

num,total;float

v

,r,h;num=10;total=num*PRICE;cout<<total

<<endl;r=2.5;h=3.2;v=3.14159*r*r*h;cout<<v

<<endl;}2.1.2数据类型——整型数据#include<iostream.h>整型常量shortunsigned

short2字节int、unsigned

int4字节longunsigned

long4字节整型变量整型变量基本数据类型和表达式38数据类型—整型数据及取值范围类型

说明符

位数

数值范围shortintlong163232-32768~32767-231~(231-1)-231~(231-1)短整

基本

长整

无符号unsigned

shortunsigned

[int]unsigned

longunsigned

long

long16

0~6553532 0~(232-1)32 0~(232-1)64 0~(264-1)基本数据类型和表达式39{const

float

PI=3.14f;int

num,total;float

v

,r,h;num=10;total=num*PI;cout<<total<<endl;r=2.5;h=3.2;v=PI*r*r*h;cout<<v<<endl;}2.1.3

数据类型——实型数据#include<iostream.h>void

main(void)实型常量缺省为double型后缀

F(或

f)为float型后缀

L(或

l)为long

double型基本数据类实型变量float 4字节型

3.4×10±38和

7位有效数字double

8字节表

1.7×10±308达

15位有效数字式long

double8字节1.7×10±30815位有效数字2.1.4

数据类型–单引号括起来的一个字符,如:'a','D','?','$'–用来存放字符常量例:char

c1,c2;c1='a';c2='A';–

以ASCII码 ,占1字节,用7个二进制位基——字符型数据(一)*数

字符常量据类

字符变量型和表达式

字符数据在内存中的

形式40例:"CHINA""a"'a'所以:char

c;c="a";CHINA\0a\0a数据类型——字符型数据(二)字符数据的使用方法字符数据和整型数据之间可以运算。字符数据与整型数据可以互相赋值。字符串常量41基本数据类型和表达式2.1.5数据类型——布尔型数据*42布尔型变量的说明:例:bool

flag;布尔型数据的取值:只有false

和true

两个值基本数据类型和表达式2.1.6数据类型—不同类型数据混合运算时的类型转换43器会自动进行类型转换。淆,应尽量使用同种类型数据。例如:float

c;int

a,b;c=float(a)/float(b);或c=(float)a/(float)b;基*数

不同类型数据进行混合运算时,C++编译据类

为了避免不同的数据类型在运算中出现混型和

可以采用强制类型转换:表达式2.2.1算术运算符与算术表达式基本算术运算符+

-

*

/%(取余)(若整数相除,结果取整)优先级与结合性先乘除,后加减,同级自左至右

++,--(自增、自减)例:i++;

j--;基本数据类型和表达式442.2.2赋值运算符和赋值表达式简单的赋值运算符"="45举例:n=n+5类型:等号左边对象的类型值:等号左边对象被赋值后的值基本数据类型和表达式2.2.2赋值运算符和赋值表达式复合的赋值运算符46有10种复合运算符:+=,

-=,

*=,

/=,

%=,<<=,>>=,&=,^=,|=例:a+=3

等价于

a=a+3x*=y+8

等价于

x=x*(y+8)基本数据类型和表达式赋值运算符和赋值表达式——赋值表达式举例47a=5a=b=c=5a=5+(c=6)表达式值为5表达式值为5,a,b,c均为5表达式值为11,a为11,c为6a=(b=4)+(c=6)表达式值为10,a为10,b为4,c为6a=(b=10)/(c=2)表达式值为5,a为5,b为10,c为2a+=a-=a*a

相当于:

a=a+(a=a-a*a)基本数据类型和表达式赋值表达式与赋值语句48格式:赋值表达式;赋值语句与赋值表达式的区别:赋值表达式可以包含在其它表达式中,而赋值语句不可。例:if((a=b)>0)

t=a;不可写为:if((a=b;)>0)

t=a;2.2.3逗号运算和逗号表达式49格式:表达式1,表达式2求解顺序及结果:先求解1,再求解2,最终结果为表达式2的值例a=3*5,a*4

最终结果为60基本数据类型和表达式2.2.4关系运算与关系表达式50关系运算是比较简单的一种逻辑运算,优先次序为:<

<=

>

>=

== !=优先级相同(高) 优先级相同(低)关系表达式是一种最简单的逻辑表达式其结果类型为bool,值只能为true

或false。例如:a>b,c<=a+b,x+y==3基本数据类型和表达式2.2.5逻辑运算与逻辑表达式51逻辑运算符:!(非)优先次序:高&&(与)

||(或)→

低逻辑表达式例如:(a>b)&&(x>y)其结果类型为bool,值只能为true或false。基本数据类型和表达式2.2.6条件运算符与条件表达式52一般形式:表达式1?表达式2:表达式3表达式1必须是bool类型执行顺序:–先求解表达式1,–若表达式1的值为true,则求解表达式2,表达式2的值为最终结果–若表达式1的值为false,则求解表达式3,表达式3的值为最终结果基本数据类型和表达式条件运算符与条件表达式53注意:–条件运算符优级高于赋值运算符,低于逻辑运算符–结合方向为自右至左–表达式2、3的类型可以不同,条件表达式的最终类型为2和3中较高的类型。基本数据类型和表达式2.2.7

sizeof

操作符54语法形式sizeof(类型名)或sizeof(表达式)结果值:“类型名”所指定的类型或“表达式”的结果类型所占的字节数。基本数据类型和表达式3: 0

000

001

15:(&)

0

00

0

01

0

13&5: 0

000

000

1用途:将某一位置0,其它位不变。例如:将char

型变量a

的最低位置0:a=a

&

0376;取指定位。例

char

c;

int

a;取出a

的低字节,置于c

中:c=a

&

0377;基

2.2.8位运算——按位与(&)本

运算规则数

–

将两个运算量的每一个位进行逻辑与操作据

举例:计算3

&

5类型和表达式55位运算——按位或(|)56运算规则将两个运算量的每一个位进行逻辑或操作举例:计算3

|

53: 0

0

0

0

0

0

1

15:(|)

0

0

0

0

0

10

13|5: 0

000

011

1用途:将某些位置1,其它位不变。例如:将int

型变量a

的低字节置1

:a

=a

|0xff;基本数据类型和表达式位运算——按位异或(^)57运算规则–两个操作数进行异或:若对应位相同,则结果该位为0,若对应位不同,则结果该位为1,举例:计算071^052071:052:071^052

:0

0

1

1

1

0

0

1(^)

001

010

1

00

0

0

1

0

0

1

1基本数据类型和表达式位运算——按位异或(^)58用途:–使特定位翻转(与0异或保持原值,与1异或取反)例如:要使01111010

低四位翻转:0

1

1

1

1

0

1

0(^)

0

0

0

01

11101

110

101基本数据类型和表达式位运算——取反(~)59单目运算符:对一个二进制数按位取反。例:025:0000000000010101~025:1111111111101010基本数据类型和表达式位运算——移位舍弃。左移运算(<<)左移后,低位补0,右移运算(>>)右移后,低位:舍弃:无符号数:补0有符号数:补“符号位”基本数据类型和表达式602.2.9运算符优先级::,

->,

.,

(),

[]++,--,sizeof*,

/,

%+,-==,

!=&,|,~,^!,&&,

||?:赋值运算逗号运算低61高基本数据类型和表达式括号++,--,sizeof算术运算符关系运算符位运算符号逻辑运算符条件运算符赋值运算符逗号运算符2.2.10混合运算时数据类型的转换——隐含转换一些二元运算符(算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符)要求两个操作数的类型一致。在算术运算和关系运算中如果参与运算的操作数类型不一致,编译系统会自动对数据进行转换(即隐含转换),基本原则是将低类型数据转换为高类型数据。char

short

int

unsigned

long unsigned

long

float

double低

高基本数据类型和表达式62混合运算时数据类型的转换——隐含转换63基本数

参与运算的操作数必须是bool型,如果操作数是其据它类型,编译系统会自动将非0数据转换为true,0类转换为false。型

位运算的操作数必须是整数,当二元位运算的操和作数是不同类型的整数时,也会自动进行类型转表换,达

赋值运算要求左值与右值的类型相同,若类型不式同,编译系统会自动律将右值转换为左值的类型。混合运算时数据类型的转换——强制类型转换64语法形式:类型说明符(表达式)或(类型说明符)表达式强制类型转换的作用是将表达式的结果类型转换为类型说明符所指定的类型。基本数据类型和表达式3.简单的输入、输出*65向标准输出设备(显示器)输出例:int

x;cout<<“x=“<<x;从标准输入设备(键盘)输入例:int

x;cin>>x;顺序结构分支结构循环结构664.算法的基本控制结构如何解决分支问题?67例1-2输入一个年份,判断是否闰年。算法的基本控制结构#include

<iostream.h>voidmain(void){

int

year;bool

IsLeapYear;cout

<<

"Enter

the

year:

";cin

>>

year;IsLeapYear

=

((year

%

4

==

0

&&year

%

100

!=

0)||(year

%

400

==

0));if(IsLeapYear)cout

<<

year

<<

"

is

a

leap

year"<<endl;elsecout

<<

year

<<

"

is

not

a

leap

year"<<

endl;}运行结果:Enter

the

year:

20002000

is

a

leap

year70if

(表达式)

语句例:if

(x>y)

cout<<x;if

(表达式)

语句1

else

语句2例:if

(x>y)

cout<<x;else

cout<<y;if

(表达式1)

语句1elseif(表达式2)语句2else…if(表达式3)语句else

语句nif语句——三种形式算法的基本控制结构71如何解决多分之问题?例1-3输入两个整数,比较两个数的大小。算法的基本控制结构#include<iostream.h>void

main(

){int

x,y;cout<<"Enter

x

and

y:";cin>>x>>y;if

(x!=y)if(x>y)cout<<"x>y"<<endl;elsecout<<"x<y"<<endl;elsecout<<"x=y"<<endl;}运行结果1:Enter

x

and

y:5

8x<y运行结果2:Enter

x

and

y:88x=y运行结果3:Enter

x

and

y:12

8x>yelseif

(

)if

(

)

语句1else

语句2elseif

(

)

语句3语句4语句1、2、3、4

可以是复合语句,每层的if与else

配对,或用{}来确定层次关系。if语句——嵌套74算法

一般形式的基本控制结

注意构特殊的多分支结构75例1-4输入一个0~6的整数,转换成星期输出。算法的基本控制结构#include

<iostream.h>void

main(void){ int

day;cin

>>

day;switch

(day){case

0:case

1:case

2:cout

<<

"Sunday"

<<

endl;break;cout

<<"Monday"

<<

endl;break;cout

<<"Tuesday"

<<

endl;break;case

3:case

4:case

5:case

6:cout

<<

"Wednesday"

<<

endl;break;cout

<<

"Thursday"

<<

endl;break;cout

<<

"Friday"

<<

endl;break;cout

<<

"Saturday"

<<

endl;break;default:cout

<<

"Day

out

of

range

Sunday

..Saturday"<<

endl;break;}}一般形式switch (表达式)常量表达式

1:语句1{

casecase常量表达式

2:语句2┆case

常量表达式

n:语句ndefault

:

语句n+1}switch语句标号,由此开始顺序执行。因此,每个case分支最后应该加break语句。每个常量表达式的值不能相同,次序不影响执行结果。可以是多个语句,但不必用{}。可以是整型、字符型、枚举型算法的基本控制结

执行顺序以case中的常量表达式值为构78case分支可包含多个语句,且不用{}。79表达式、判断值都是int型或char型。若干分支执行内容相同可共用一组语句。算使用switch语句应注意的问题法的基本控制结构如何有效地完成重复工作80例1-5求自然数1~10之和分析:本题需要用累加算法,累加过程是一个循环过程,可以用while语句实现。算法的基本控制结构#include<iostream.h>void

main(

){int

i(1),

sum(0);while(i<=10){sum+=i;i++;}cout<<"sum="<<sum<<endl;}运行结果:sum=55while语句形式while(表达式)语句可以是复合语句,其中必须含有改变条件表达式值的语句。82执行顺序先判断表达式的值,为true时,再执行语句。算法的基本控制结构先执行循环体,后判断条件的情况83例1-6输入一个整数,将各位数字反转后输出。算法的基本控制结构#include

<iostream.h>void

main(void){int

n,

right_digit,

newnum

=

0;cout

<<

"Enter

the

number:";cin

>>

n;cout

<<

"The

number

in

reverse

order

is

";do{right_digit

=

n

%

10;cout

<<

right_digit;n

/=

10;}while

(n

!=

0);cout<<endl;}运行结果:Enter

the

number:

365The

number

in

reverse

order

is

56386do-while语句一般形式do语句可以是复合语句,其中必须含有改变条件表达式值的语句。while(表达式)执行顺序先执行循环体语句,后判断条件。表达式为true

时,继续执行循环体与while语句的比较:–While语句执行顺序先判断表达式的值,为true时,再执行语句算法的基本控制结构对比下列程序(例1-7){int

i,

sum(0);cin>>i;while(i<=10){sum+=i;i++;}cout<<"sum="<<sum<<endl;}算程序1:法#include<iostream.h>的void

main()基本控制结构程序2:#include<iostream.h>void

main(){int

i,

sum(0);cin>>i;do

{sum+=i;i++;}

while(i<=10)

;cout<<"sum="<<sum<<endl;}当输入i=11的时候:88for语句语法形式for (表达式1;表达式2;表达式3) 语句循环前先求解非0时执行循环体每次执行完循环体后求解89算法的基本控制结构例1-890输入一个整数,求出它的所有因子。算法的基本控制结构#include<iostream.h>void

main(void){int

n,

k;cout

<<

"Enter

a

positive

integer:

";cin

>>

n;cout

<<

"Number "

<<

n

<<

"

Factors

";for

(k=1;

k

<=

n;

k++)if(n

%

k

==

0)cout

<<

k

<<

"

";cout

<<

endl;}运行结果1:Enter

a

positive

integer:

36Number36Factors1234

691218

36运行结果2:Enter

a

positive

integer:

7Number

7

Factors

1

7循环结构的嵌套93#include<iostream.h>void

main(

){inti(1),a(0);for(;i<=5;i++){do{i++;a++;}while(i<3);i++;}cout<<a<<”,”<<i<<endl;}算法的基本控制结构例1-9

编写程序输出以下图案94*************************算法的基本控制结构#include<iostream.h>void

main(){ int

i,j,n=4;for(i=1;i<=n;i++) //输出前4行图案{

for(j=1;j<=30;j++)cout<<''; //在图案左侧空30列for(j=1;j<=8-2*i;j++)cout<<'

';for(j=1;

j<=2*i-1

;j++)cout<<'*';cout<<endl;}for(i=1;i<=n-1;i++)

//输出后3行图案{

for(j=1;j<=30;j++)cout<<''; //在图案左侧空30列for(j=1;j<=7-2*i

;j++)cout<<'*';cout<<endl;}}循环结构与选择结构相互嵌套97算法

#include<iostream.h>的

void

main(

)基

{*

int

n;控

for(n=100;

n<=200;

n++)制

{结

if

(n%3!=0)构

printf(“%d”,n);}}例1-10读入一系列整数,统计出正整数个数i和负整数个数j,读入0则结束。分析:–需要读入一系列整数,但是整数个数不定,要在每次读入之后进行判断,因此使用while循环最为合适。循环控制条件应该是n!=0。由于要判断数的正负并分别进行统计,所以需要在循环 嵌入选择结构。算法的基本控制结构98#include<iostream.h>void

main(

){int i=0,

j=0,

n;cout<<"请输入若干整数(输入0则结束):";cin>>n;while(

n!=0

){ if(n>0)

i+=1;if(n<0)j+=1;负整数个数:cin>>n

;}cout<<"正整数个数:"<<i<<""<<j<<endl;}break和continue语句100break语句使程序从循环体和switch语句内跳出,继续执行逻辑上的下一条语句。不宜用在别处。continue

语句结束本次循环,接着判断是否执行下一次循环。算法的基本控制结构5.自定义数据类型101typedef语句枚举类型结构体*联合类(见第四讲)*typedef语句102为一个已有的数据类型另外命名语法形式typedef

已有类型名新类型名表;例如typedef

double

area,volume;typedef

int

natural;natural

i1,i2;area

a;volume

v;自定义数据类型枚举类型—enum只要将需要的变量值一一列举出来,便构成了一个枚举类型。枚举类型的

形式如下:enum

枚举类型名{变量值列表};例如:enum

weekday

{sun,mon,tue,wed,thu,fri,sat};自定义数据类型103104枚举类型—enum枚举类型应用说明:

对枚举元素按常量处理,不能对它们赋值。例如,不能写:sun=0;枚举元素具有缺省值,它们依次为:0,1,2,......。也可以在 时另行指定枚举元素的值,如enum

weekday

{sun=7,mon=1,tue,wed,thu,fri,sat};枚举值可以进行关系运算。

整数值不能直接赋给枚举变量,如需要将整数赋值给枚举变量,应进行强制类型转换。自定义数据类型105例1-11设某次体育比赛的结果有四种可能:胜(win)、负(lose)、平局(tie)、比赛取消(cancel),编写程序顺序输出这四种情况。分析:由于比赛结果只有四种可能,所以可以

一个枚举类型,

一个枚举类型的变量来存放比赛结果。自定义数据类型#include

<iostream.h>enum

game_result

{WIN,

LOSE,

TIE,

CANCEL};int

main(

){game_result

result;enum

game_result

omit=

CANCEL;intcount;for

(count

=

WIN

;

count

<=

CANCEL

;

count++){result

=

(game_result)count;if(result

==

omit){cout

<<

"The

game

was

cancelled\n";}else{cout

<<

"The

game

was

played

";if

(result

==

WIN)cout

<<

"and

we

won!";if

(result

==

LOSE)cout

<<

"and

we

lost.";cout

<<"\n";}}return

0;}运行结果The

game

was

played

and

we

won!The

game

was

played

and

we

lost.The

game

was

playedThe

game

was

cancelled109例1-12口袋中有红、黄、蓝、白、黑五种颜色的球若干个。每次从口袋中取出3个不同颜色的球,问有多少种取法。分析:由于球只能是五种颜色之一,故可

用枚举类型表示球的颜色。设取出的球为i、j、k,根据题意,i、j、k分别可以有五种取值,且i≠j≠k。可以用穷举法,逐个检验每一种可能的组合,从中找出符合要求的

组合并输出。自定义数据类型#include<iostream.h>void

main(

){enum

color{red,yellow,blue,white,black};enum

color

pri;intn,loop,i,j,k;charc;n=0;for(i=red;i<=black;i++)for(j=red;j<=black;j++)if(i!=j)//前两个球不同{for(k=red;k<=black;k++)if((k!=i)&&(k!=j))//第三个球不同于前两个{

n=n+1;cout.width(4);cout<<n;for(loop=1;loop<=3;loop++){switch(loop){ case

1:

pri=(enum

color)i;break;case

2:

pri=(enum

color)j;break;case

3:

pri=(enum

color)k;break;default:

break;}switch(pri)red";yellow";blue";white";black";{ case

red:

cout<<"break;case

yellow:

cout<<"break;case

blue:

cout<<"break;case

white:

cout<<"break;case

black:

cout<<"break;default:

break;}}cout<<endl;}}cout<<"total:"<<n<<endl;}113结构体——结构的结构的概念–结构是由不同数据类型的数据组成的集合体。结构类型struct

结构名{成员名

1;成员名

2;数据类型数据类型......数据类型成员名n;};自定义数据类型结构体——结构的//学生信息结构体举例:struct

student{intnum; //学号char

name[20];

//char

sex;

//int

age;

//float

score; //成绩char

addr[30];

//住址}自定义数据类型114结构体——结构变量说明变量说明形式结构名结构变量名;注意:结构变量的 类型概念、它的

、可见性及使用范围与普通变量完全一致。结构变量说明在结构类型

之后,二者也可同时进行。结构变量占内存大小可用sizeof

运算求出:sizeof(运算量)自定义数据类型115116结构体——结构变量的初始化和使用初始化说明结构变量的同时可以直接设置初值。使用结构体成员的 形式:结构变量名.成员名自定义数据类型117例1-13

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论