C++语言程序设计二

PPT
  • 阅读 85 次
  • 下载 0 次
  • 页数 105 页
  • 大小 783.500 KB
  • 2022-11-12 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档40.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
C++语言程序设计二
可在后台配置第一页与第二页中间广告代码
C++语言程序设计二
可在后台配置第二页与第三页中间广告代码
C++语言程序设计二
可在后台配置第三页与第四页中间广告代码
C++语言程序设计二
C++语言程序设计二
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 105
  • 收藏
  • 违规举报
  • © 版权认领
下载文档40.00 元 加入VIP免费下载
文本内容

【文档说明】C++语言程序设计二.ppt,共(105)页,783.500 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-2182.html

以下为本文档部分文字说明:

2021/7/261(最新整理)C++语言程序设计(清华大学郑莉)二2021/7/262第二章C++简单程序设计清华大学郑莉C++语言程序设计C++语言程序设计清华大学郑莉2021/7/263本章主要内容⚫C++语言概述⚫基本数据类型和表达式⚫数据的输入与输出⚫算法的基本控制结构⚫自定义数据类

型C++语言程序设计清华大学郑莉2021/7/264C++语言的产生⚫C++是从C语言发展演变而来的,首先是一个更好的C⚫引入了类的机制,最初的C++被称为“带类的C”⚫1983年正式取名为C++⚫从1989年开始C++语言的标准化工作⚫于1994年制定了AN

SIC++标准草案⚫于1998年11月被国际标准化组织(ISO)批准为国际标准,成为目前的C++C++语言概述C++语言程序设计清华大学郑莉2021/7/265C++的特点⚫全面兼容C–它保持了C的简洁、高效和接近汇编语言等特点–对C的类型系统进行了改革和扩充–C+

+也支持面向过程的程序设计,不是一个纯正的面向对象的语言⚫支持面向对象的方法C++语言概述C++语言程序设计清华大学郑莉2021/7/266C++程序实例—例2-1//2_1.cpp#include<iostream>usingnamespa

cestd;intmain(){cout<<"Hello!"<<endl;cout<<"Welcometoc++!"<<endl;return0;}运行结果:Hello!Welcometoc++!C++语言概述C++语言程序设计清华大学郑莉2021/7/267C++字符集⚫大小写的

英文字母:A~Z,a~z⚫数字字符:0~9⚫特殊字符:!#%^&*_+=-~<>/\‘“;.,:?()[]{}C++语言概述C++语言程序设计清华大学郑莉2021/7/268词法记号⚫关键字C++预定义的单词⚫标识符程序员声明的单词,它命名程序正文中的一些实体⚫

文字在程序中直接使用符号表示的数据⚫操作符用于实现各种运算的符号⚫分隔符(){},:;用于分隔各个词法记号或程序正文⚫空白符空格、制表符(TAB键产生的字符)、垂直制表符、换行符、回车符和注释的总称C++语言概述C++语言程序设计清华大学郑莉2021/7/269标识符的构成规则⚫以大写字母、小

写字母或下划线(_)开始。⚫可以由以大写字母、小写字母、下划线(_)或数字0~9组成。⚫大写字母和小写字母代表不同的标识符。C++语言概述C++语言程序设计清华大学郑莉2021/7/2610数据类型——常量与变量#include<iostream>usingnamespacestd;intmain

(){constintPRICE=30;intnum,total;floatv,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;return0;}常量变量变量

先声明后使用符号常量基本数据类型和表达式C++语言程序设计清华大学郑莉2021/7/2611#include<iostream>usingnamespacestd;intmain(){constint

PRICE=30;intnum,total;floatv,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;return0;}数据类型——整型数据sho

rtunsignedshort2字节intunsignedint4字节longunsignedlong4字节整型变量声明基本数据类型和表达式整型变量整型常量C++语言程序设计清华大学郑莉2021/7/2612数据类型—整型数据及取值

范围类型说明符位数数值范围短整short16-32768~32767基本int32-231~(231-1)长整long32-231~(231-1)无符号unsignedshort160~65535unsig

ned[int]320~(232-1)unsignedlong320~(232-1)基本数据类型和表达式C++语言程序设计清华大学郑莉2021/7/2613#include<iostream>usingnamespacestd;intmain

(){constintPRICE=30;intnum,total;floatv,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;return0;}数据类型——实型数据实型常量float4字节3.4×10±387位有效数字double8字节1.7×10±30815位有效数字longdouble8字节1.7×10±30815位有效数字实型变量•默

认为double型•后缀F(或f)为float型•后缀L(或l)为longdouble型基本数据类型和表达式C++语言程序设计清华大学郑莉2021/7/2614数据类型——字符型数据(一)⚫字符常量–单引号括起来的一个字符,如:'a','D','?','$'⚫字符变量–用来存放字符常量例:

charc1,c2;c1='a';c2='A';⚫字符数据在内存中的存储形式–以ASCII码存储,占1字节,用7个二进制位基本数据类型和表达式C++语言程序设计清华大学郑莉2021/7/2615⚫字符数据的使用方法–字符数据和整型数据之间可以运

算。–字符数据与整型数据可以互相赋值。⚫字符串常量例:"CHINA""a"'a'所以:charc;c="a";CHINA\0a\0aPage15数据类型——字符型数据(二)基本数据类型和表达式C++语言程序设计

清华大学郑莉2021/7/2616数据类型——布尔型数据⚫布尔型变量的说明:例:boolflag;⚫布尔型数据的取值:只有false和true两个值基本数据类型和表达式C++语言程序设计清华大学郑莉2021/7/261

7数据类型——变量初始化例:inta=3;doublef=3.56;charc='a';intc(5);Page17基本数据类型和表达式C++语言程序设计清华大学郑莉2021/7/2618数据类型—混合运算时的类型转换⚫不同类型数据进行混合运算

时,C++编译器会自动进行类型转换。⚫为了避免不同的数据类型在运算中出现类型问题,应尽量使用同种类型数据。⚫可以采用强制类型转换:例如:floatc;inta,b;c=float(a)/float(b);或c=(float)a/(float)b;基

本数据类型和表达式C++语言程序设计清华大学郑莉2021/7/2619变量的存储类型⚫auto–属于一时性存储,其存储空间可以被若干变量多次覆盖使用。⚫register–存放在通用寄存器中。⚫extern–在所有函数和程序段中都可引用。⚫static–在内存中是以固定地址存放的,在整个程序运

行期间都有效。基本数据类型和表达式C++语言程序设计清华大学郑莉2021/7/2620算术运算符与算术表达式⚫基本算术运算符+-*/(若整数相除,结果取整)%(取余,操作数为整数)⚫优先级与结合性先乘除,后加减,同级自左至右⚫++,--(自增、自减)例:i++;

--j;Page20基本数据类型和表达式C++语言程序设计清华大学郑莉2021/7/2621赋值运算符和赋值表达式简单的赋值运算符"="⚫举例n=n+5⚫表达式的类型等号左边对象的类型⚫表达式的值等号左边对象被

赋值后的值Page21基本数据类型和表达式C++语言程序设计清华大学郑莉2021/7/2622赋值运算符和赋值表达式复合的赋值运算符⚫有10种复合运算符:+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=⚫例a+=3等

价于a=a+3x*=y+8等价于x=x*(y+8)基本数据类型和表达式C++语言程序设计清华大学郑莉2021/7/2623赋值运算符和赋值表达式——赋值表达式举例a=5表达式值为5a=b=c=5表达式值为5,a,b,c均为5a=5+(c=6)表达式值为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)Page23基本数据类型和表达式C++语言程序设计清华大学郑莉2021/7

/2624逗号运算和逗号表达式⚫格式表达式1,表达式2⚫求解顺序及结果先求解1,再求解2,最终结果为表达式2的值⚫例a=3*5,a*4最终结果为60Page24基本数据类型和表达式C++语言程序设计清华大学郑莉2021/

7/2625关系运算与关系表达式⚫关系运算是比较简单的一种逻辑运算,优先次序为:<<=>>===!=优先级相同(高)优先级相同(低)⚫关系表达式是一种最简单的逻辑表达式其结果类型为bool,值只能为tru

e或false。⚫例如:a>b,c<=a+b,x+y==3基本数据类型和表达式C++语言程序设计清华大学郑莉2021/7/2626逻辑运算与逻辑表达式⚫逻辑运算符!(非)&&(与)||(或)优先次序:高→低⚫逻辑表达式例如:(a>b)&&(x>y)

其结果类型为bool,值只能为true或false基本数据类型和表达式C++语言程序设计清华大学郑莉2021/7/2627逻辑运算与逻辑表达式⚫“&&”的“短路特性”表达式1&&表达式2–先求解表达式1–若表达式1的值为false,则最终结果为false,不再求解表达式2–若表达式1的结果为tr

ue,则求解表达式2,以表达式2的结果作为最终结果⚫“||”也具有类似的特性基本数据类型和表达式C++语言程序设计清华大学郑莉2021/7/2628条件运算符与条件表达式⚫一般形式表达式1?表达式2:表达式3表达式1必须是bool类型⚫执行顺序–先求解表达式1,–若表达式1

的值为true,则求解表达式2,表达式2的值为最终结果–若表达式1的值为false,则求解表达式3,表达式3的值为最终结果⚫例:x=a>b?a:b;基本数据类型和表达式C++语言程序设计清华大学郑莉2021/7/2629条件运算符与条件表达式⚫

注意:–条件运算符优先级高于赋值运算符,低于逻辑运算符–表达式2、3的类型可以不同,条件表达式的最终类型为2和3中较高的类型。⚫例:x=a>b?a:b;基本数据类型和表达式①②C++语言程序设计清华大学郑

莉2021/7/2630sizeof运算符⚫语法形式sizeof(类型名)或sizeof表达式⚫结果值:“类型名”所指定的类型或“表达式”的结果类型所占的字节数。⚫例:sizeof(short)sizeofx基

本数据类型和表达式C++语言程序设计清华大学郑莉2021/7/2631位运算——按位与(&)⚫运算规则–将两个运算量的每一个位进行逻辑与操作⚫举例:计算3&53:000000115:(&)000001

013&5:00000001⚫用途:–将某一位置0,其他位不变。例如:将char型变量a的最低位置0:a=a&0xfe;–取指定位。例如:有charc;inta;取出a的低字节,置于c中:c=a&0xff;基本数据类型和表达式C++语言程序设计清华大学郑莉2021/7/2

632位运算——按位或(|)⚫运算规则–将两个运算量的每一个位进行逻辑或操作⚫举例:计算3|53:000000115:(|)000001013|5:00000111⚫用途:–将某些位置1,其他位不变。例如:将int型变量a的低字节置1:a=a|0xff

;基本数据类型和表达式C++语言程序设计清华大学郑莉2021/7/2633位运算——按位异或(^)⚫运算规则–两个操作数进行异或:若对应位相同,则结果该位为0,若对应位不同,则结果该位为1,⚫举例:计算071^052071:00111001052

:(^)00101010071^052:00010011基本数据类型和表达式C++语言程序设计清华大学郑莉2021/7/2634位运算——按位异或(^)⚫用途:–使特定位翻转(与0异或保持原值,与1异或取反)例如:要使01111010低四位翻转:0

1111010(^)0000111101110101基本数据类型和表达式C++语言程序设计清华大学郑莉2021/7/2635位运算——取反(~)单目运算符,对一个二进制数按位取反。例:025:000000000001010

1~025:1111111111101010基本数据类型和表达式C++语言程序设计清华大学郑莉2021/7/2636位运算——移位⚫左移运算(<<)左移后,低位补0,高位舍弃。⚫右移运算(>>)右移后,低位:

舍弃高位:无符号数:补0有符号数:补“符号位”基本数据类型和表达式C++语言程序设计清华大学郑莉2021/7/2637运算符优先级括号++,--,sizeof*,/,%+,-==,!=位运算&&||?:赋值运算逗号运算低高基本数据类型和表达式C++语言程序设计清华大学郑莉20

21/7/2638混合运算时数据类型的转换——隐含转换⚫一些二元运算符(算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符)要求两个操作数的类型一致。⚫在算术运算和关系运算中如果参与运算的操作数类型不一致,编译系统会自动对数据进行转换(即隐含转换),基本原则是将低类型数据转换为高类型数据。c

har,short,int,unsigned,long,unsignedlong,float,double低高基本数据类型和表达式C++语言程序设计清华大学郑莉2021/7/2639混合运算时数据类型的转换——隐含转换⚫当参与运算的操作数必须是b

ool型时,如果操作数是其它类型,编译系统会自动将非0数据转换为true,0转换为false。⚫位运算的操作数必须是整数,当二元位运算的操作数是不同类型的整数时,也会自动进行类型转换,⚫赋值运算要求左值与右值的类型相

同,若类型不同,编译系统会自动将右值转换为左值的类型。基本数据类型和表达式C++语言程序设计清华大学郑莉2021/7/2640混合运算时数据类型的转换——显式转换⚫语法形式(3种):–类型说明符(表达式)–(类型说明

符)表达式–类型转换操作符<类型说明符>(表达式)⚫类型转换操作符可以是:const_cast、dynamic_cast、reinterpret_cast、static_cast⚫显式类型转换的作用是将表达式的结果类型转换为类型说明符所指定的类型。⚫例:int(z),(int)z,s

tatic_cast<int>(z)三种完全等价基本数据类型和表达式C++语言程序设计清华大学郑莉2021/7/2641语句⚫空语句⚫声明语句⚫表达式语句⚫选择语句⚫循环语句⚫跳转语句⚫复合语句⚫标号语句C++语言程序设计清华大学郑莉2021

/7/2642表达式语句⚫格式:表达式;⚫表达式语句与表达式的区别:表达式可以包含在其他表达式中,而语句不可。例如:if((a=b)>0)t=a;不可写为:if((a=b;)>0)t=a;语句C++语言程序设计清华大学郑莉2021/7/2643复合语句⚫将多

个语句用一对大括号包围,便构成一个复合语句⚫例如{sum=sum+i;i++;}语句C++语言程序设计清华大学郑莉2021/7/2644简单的输入、输出⚫向标准输出设备(显示器)输出例:intx;cout<<"x="<<x;⚫从标准输入设备(键

盘)输入例:intx;cin>>x;C++语言程序设计清华大学郑莉2021/7/2645•顺序结构•分支结构•循环结构算法的基本控制结构C++语言程序设计清华大学郑莉2021/7/2646如何解决分支问题?例2-2输入一个年份,判断是否闰年。算法的基本控制结构#inclu

de<iostream>usingnamespacestd;intmain(){intyear;boolIsLeapYear;cout<<"Entertheyear:";cin>>year;IsLeapYear=((year%4==0&&year%100!=0)||(year%400==0))

;if(IsLeapYear)cout<<year<<"isaleapyear“<<endl;elsecout<<year<<"isnotaleapyear“<<endl;return0;}47运行结果:Entertheyear:20002000isa

leapyear48C++语言程序设计清华大学郑莉2021/7/2649if(表达式)语句例:if(x>y)cout<<x;if(表达式)语句1else语句2例:if(x>y)cout<<x;elsecout<<y;i

f(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3…else语句nif语句——三种形式算法的基本控制结构C++语言程序设计清华大学郑莉2021/7/2650如何解决多分问

题?例2-3输入两个整数,比较两个数的大小。算法的基本控制结构#include<iostream>usingnamespacestd;intmain(){intx,y;cout<<"Enterxandy:";cin>>x>>y;i

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

:58x<y运行结果2:Enterxandy:88x=y运行结果3:Enterxandy:128x>y52C++语言程序设计清华大学郑莉2021/7/2653⚫一般形式if()if()语句1else语句2elseif(

)语句3else语句4⚫注意语句1、2、3、4可以是复合语句,每层的if与else配对,或用{}来确定层次关系。if语句——嵌套算法的基本控制结构C++语言程序设计清华大学郑莉2021/7/2654特殊的多分支结构例2-4输入

一个0~6的整数,转换成星期输出。算法的基本控制结构#include<iostream>usingnamespacestd;intmain(){intday;cin>>day;switch(day){case0:cout<<"Sunday"<<endl;break;case1:cout<<"M

onday"<<endl;break;case2:cout<<"Tuesday"<<endl;break;case3:cout<<"Wednesday"<<endl;break;case4:cout<<"Thursday"<<endl;break;case5:cout<<"Friday"<<e

ndl;break;case6:cout<<"Saturday"<<endl;break;default:cout<<"DayoutofrangeSunday..Saturday"<<endl;break;}return0;}55C++语言程序设计清华大

学郑莉2021/7/2656⚫一般形式switch(表达式){case常量表达式1:语句1case常量表达式2:语句2┆case常量表达式n:语句ndefault:语句n+1}switch语句⚫执行顺序以case中的常量表达式值为入口标号,由此开始顺序执行。因此,每个case分支最

后应该加break语句。每个常量表达式的值不能相同,次序不影响执行结果。可以是多个语句,但不必用{}。可以是整型、字符型、枚举型算法的基本控制结构C++语言程序设计清华大学郑莉2021/7/2657使用s

witch语句应注意的问题⚫case分支可包含多个语句,且不用{}。⚫表达式、判断值都是int型或char型。⚫若干分支执行内容相同可共用一组语句。算法的基本控制结构C++语言程序设计清华大学郑莉2021/7/2658如何有效地完成

重复工作例2-5求自然数1~10之和分析:本题需要用累加算法,累加过程是一个循环过程,可以用while语句实现。算法的基本控制结构#include<iostream>usingnamespacestd;intmain()

{inti=1,sum=0;while(i<=10){sum+=i;//相当于sum=sum+i;i++;}cout<<"sum="<<sum<<endl;return0;}运行结果:sum=5559C++语言程序设计清华大学郑莉2021/7/2660while语句⚫形式while(表达式)

语句可以是复合语句,其中必须含有改变条件表达式值的语句。⚫执行顺序先判断表达式的值,若为true时,执行语句。算法的基本控制结构C++语言程序设计清华大学郑莉2021/7/2661先执行循环体,后判断条件的情况例2-6输入一个整数,将各位数字反转后输出。算法的基本控制结构#include<iost

ream>usingnamespacestd;intmain(){intn,right_digit,newnum=0;cout<<"Enterthenumber:";cin>>n;cout<<"Thenum

berinreverseorderis";do{right_digit=n%10;cout<<right_digit;n/=10;//相当于n=n/10}while(n!=0);cout<<endl;return0;}62运行结果:Enterthenumber:365Thenu

mberinreverseorderis56363C++语言程序设计清华大学郑莉2021/7/2664do-while语句⚫一般形式do语句while(表达式)可以是复合语句,其中必须含有改变条件表达式

值的语句。⚫执行顺序先执行循环体语句,后判断条件。表达式为true时,继续执行循环体⚫与while语句的比较:–while语句执行顺序先判断表达式的值,为true时,再执行语句算法的基本控制结构对比下列程序:程序1:#in

clude<iostream>usingnamespacestd;intmain(){inti,sum=0;cin>>i;while(i<=10){sum+=i;i++;}cout<<"sum="<<sum<<endl;return0;}算法的基本控制结构程序2:#inc

lude<iostream>usingnamespacestd;intmain(){inti,sum=0;cin>>i;do{sum+=i;i++;}while(i<=10);cout<<"sum="<<sum<<endl;return0;}65C++语言程序设计清华

大学郑莉2021/7/2666for语句语法形式for(初始语句;表达式1;表达式2)语句循环前先求解为true时执行循环体每次执行完循环体后求解算法的基本控制结构C++语言程序设计清华大学郑莉2021/7/2667例2-8输入一个整数,求出它的所有因子。算法的

基本控制结构#include<iostream>usingnamespacestd;intmain(){intn;cout<<"Enterapositiveinteger:";cin>>n;cout<<"Number"<<n<<"Factors";for(in

tk=1;k<=n;k++)if(n%k==0)cout<<k<<"";cout<<endl;return0;}68运行结果1:Enterapositiveinteger:36Number36Factors123469121836

运行结果2:Enterapositiveinteger:7Number7Factors1769C++语言程序设计清华大学郑莉2021/7/2670例2-9编写程序输出以下图案*************************算法的基本

控制结构#include<iostream>usingnamespacestd;intmain(){constintN=4;for(inti=1;i<=N;i++){//输出前4行图案for(intj=1;j<=30;j++)cout<<'';//在图案左侧空

30列for(intj=1;j<=8-2*i;j++)cout<<'';for(intj=1;j<=2*i-1;j++)cout<<'*';cout<<endl;}71//输出后3行图案for(inti

=1;i<=N-1;i++){for(intj=1;j<=30;j++)cout<<'';//在图案左侧空30列for(intj=1;j<=7-2*i;j++)cout<<'*';cout<<endl;}return0;}72C++语言程序设计清华大学郑莉2021/7

/2673循环结构与选择结构相互嵌套#include<iostream>usingnamespacestd;intmain(){for(intn=100;n<=200;n++){if(n%3!=0)cout<<n;}return0;}算法的基本控制结构C++语言程序设计清

华大学郑莉2021/7/2674例2-10⚫读入一系列整数,统计出正整数个数i和负整数个数j,读入0则结束。⚫分析:–需要读入一系列整数,但是整数个数不定,要在每次读入之后进行判断,因此使用while循环最为合适。循环控制条件应该是n!=0。由于要判断数的正负并分别进行统计,

所以需要在循环内部嵌入选择结构。算法的基本控制结构#include<iostream>usingnamespacestd;intmain(){inti=0,j=0,n;cout<<"Entersomeintegersplease(enter0toquit):"<<endl;cin

>>n;while(n!=0){if(n>0)i+=1;if(n<0)j+=1;cin>>n;}cout<<"Countofpositiveintegers:"<<i<<endl;cout<<"Countofnegativeintegers:"<<j<<

endl;return0;}75C++语言程序设计清华大学郑莉2021/7/2676break和continue语句⚫break语句使程序从循环体和switch语句内跳出,继续执行逻辑上的下一条语句。不宜用在别处。⚫continue语句结束本次循环,接着判

断是否执行下一次循环。算法的基本控制结构C++语言程序设计清华大学郑莉2021/7/2677typedef语句⚫为一个已有的数据类型另外命名⚫语法形式typedef已有类型名新类型名表;⚫例如typedefdoubleArea,Volume;typedefintNatural;N

aturali1,i2;Areaa;Volumev;自定义数据类型C++语言程序设计清华大学郑莉2021/7/2678枚举类型—enum⚫只要将需要的变量值一一列举出来,便构成了一个枚举类型。⚫枚举类型的声明形式如下:enum枚举类型名{变量值列表};⚫例如:

enumWeekday{SUN,MON,TUE,WED,THU,FRI,SAT};自定义数据类型C++语言程序设计清华大学郑莉2021/7/2679枚举类型—enum⚫枚举类型应用说明:–对枚举元素按常量处理,不能对它们赋值。例如,不能写:SUN=0;–

枚举元素具有默认值,它们依次为:0,1,2,......。–也可以在声明时另行指定枚举元素的值,如:enumWeekday{SUN=7,MON=1,TUE,WED,THU,FRI,SAT};–枚举值可以进行关系运算。–整数值不能直接赋给枚举变量,如需要将整数赋值给枚举变量,应进

行强制类型转换。自定义数据类型C++语言程序设计清华大学郑莉2021/7/2680例2-11⚫设某次体育比赛的结果有四种可能:胜(WIN)、负(LOSE)、平局(TIE)、比赛取消(CANCEL),编写程序顺序输出这四种情况。

⚫分析:由于比赛结果只有四种可能,所以可以声明一个枚举类型,声明一个枚举类型的变量来存放比赛结果。自定义数据类型#include<iostream>usingnamespacestd;enumGameResult{WI

N,LOSE,TIE,CANCEL};intmain(){GameResultresult;enumGameResultomit=CANCEL;for(intcount=WIN;count<=CANCEL;count++){result=GameResult(count);

if(result==omit)cout<<"Thegamewascancelled"<<endl;else{cout<<"Thegamewasplayed";if(result==WIN)cout<<"andwewon!";if(result==LOSE)cout<<

"andwelost.";cout<<endl;}}return0;}81运行结果Thegamewasplayedandwewon!Thegamewasplayedandwelost.ThegamewasplayedThegamewas

cancelled82C++语言程序设计清华大学郑莉2021/7/2683结构体——结构的声明⚫结构的概念结构是由不同数据类型的数据组成的集合体。⚫声明结构类型struct结构名{数据类型成员名1;数据类型成员名2;┆数据类型成员名n;};自定义数据类型C++语言程序设计清华大学郑莉

2021/7/2684结构体——结构的声明⚫举例:structStudent{//学生信息结构体intnum;//学号stringname;//姓名chargender;//性别intage;//年龄floatscore;//成绩stringaddr;/

/住址};自定义数据类型C++语言程序设计清华大学郑莉2021/7/2685结构体——结构变量说明⚫变量说明形式结构名结构变量名;⚫注意:–结构变量的存储类型概念、它的寿命、可见性及使用范围与普通变量完全一致。–结构变量说明在

结构类型声明之后,二者也可同时进行。–结构变量占内存大小可用sizeof运算求出:sizeof(运算量)自定义数据类型C++语言程序设计清华大学郑莉2021/7/2686结构体——结构变量的初始化和使用⚫初始化说明结构变量的同时可以直接设置初值。⚫使用结构体成员的引用

形式:结构变量名.成员名自定义数据类型C++语言程序设计清华大学郑莉2021/7/2687例2-12结构体变量的初始化和使用#include<iostream>#include<iomanip>#include<string>usingna

mespacestd;structStudent{//学生信息结构体intnum;//学号stringname;//姓名chargender;//性别intage;//年龄}stu={97001,"LinLin",'F',19};intma

in(){cout<<setw(7)<<stu.num<<setw(20)<<stu.name<<setw(3)<<stu.sex<<setw(3)<<stu.age;return0;}自定义数据类型运行结

果:97001LinLinF19C++语言程序设计清华大学郑莉2021/7/2688联合体⚫声明形式:union联合名{数据类型成员名1;数据类型成员名2;:数据类型成员名n;};⚫联合体类型变量说明的语法形式联合名联合变量名;⚫引用形式:联合名.成员名自

定义数据类型C++语言程序设计清华大学郑莉2021/7/2689例:unionUArea{charcData;shortsData;longlData;}UAreacDatalDatasData联合体自定义数据类型C++语言程序设计清华

大学郑莉2021/7/2690无名联合⚫无名联合没有标记名,只是声明一个成员项的集合,这些成员项具有相同的内存地址,可以由成员项的名字直接访问。⚫例:union{inti;floatf;}在程序中可以这样使用:i=10;f=2.2;自定义数据类型C++语言程序设

计清华大学郑莉2021/7/2691变量是如何工作的?⚫站在目标代码的角度上看问题⚫变量具有两个重要属性——数据类型和变量名–它们都用文字表示,便于人们理解,但不便于CPU识别,因此它们不能出现在目标代码中;–下面将讨论它们在目标代码中的表示方式。深度探索C

++语言程序设计清华大学郑莉2021/7/2692变量是如何工作的?⚫变量名–源代码中,变量依靠变量名来标识;–目标代码中,变量依靠地址来标识,每个变量的地址互不相同。深度探索inta,b;intmain(){a++;b++;return0;}incl0x80495f8

incl0x80495fc地址C++语言程序设计清华大学郑莉2021/7/2693变量是如何工作的?⚫数据类型–任何数据在内存中都是用二进制串的形式表示的;–一串二进制数,只有确定了类型,才有真实的含义;–例:10111111,10000000,0000000

0,00000000⚫解释为int型:-1,082,130,432⚫解释为unsigned型:3,212,836,864⚫解释为float型:-1.0深度探索C++语言程序设计清华大学郑莉2021/7/2694变量是如何工作的?⚫目标代码体

现数据类型的方式–类型的特性蕴含于操作之中;–对不同数据类型,源代码中形式上相同的操作,会被转化为目标代码中的不同操作。深度探索94inta;shortb;charc;intmain(){a++;b++;c++;return0;}in

cl0x80495f8incw0x80495fcincb0x80495fe不同的操作C++语言程序设计清华大学郑莉2021/7/2695变量是如何工作的?⚫变量的声明–将一个标识符声明为变量,告诉编译器这个标识符表示变量,同时还指出了它的数据类型;–只有确定了一个变量的数据类型,变量

参与的操作才具有完整的意义,编译器才能将该变量参与的表达式翻译为合适的操作。⚫变量的定义–不仅确定了一个标识符表示变量,以及该变量的类型,还确定了变量地址的分配位置。深度探索C++语言程序设计清华大学郑莉2021/7/2696表达式的执行原理⚫什么是寄存器?–CPU内部的存储单元–读写速度非常快

–数量很少⚫IA-32有eax、ebx、ecx、edx、esp、ebp、esi、edi八个通用寄存器⚫大部分CPU指令都需要读写寄存器。⚫复杂的表达式,分步执行,每条指令只能做一次基本运算,中间结果暂存在寄存器中。深度探索C++语言程序设计清华大学郑莉2

021/7/2697表达式的执行原理inta,b,c,d;inte;intmain(){a=4;b=2;c=1;d=10;e=(a+b)*(c-d);return0;}movl$0x4,0x80495d8movl$0x2,0x80495dcmovl$0x1,0x804

95e0movl$0xa,0x80495e4深度探索把4存入地址0x80495d8中0x80495d8:a变量0x80495dc:b变量0x80495e0:c变量0x80495e4:d变量0x80495e8:e变量C++语言程序设计清华大学郑莉2021/7/269

8表达式的执行原理inta,b,c,d;inte;intmain(){a=4;b=2;c=1;d=10;e=(a+b)*(c-d);return0;}mov0x80495dc,%eaxmov0x80495d

8,%ecxadd%eax,%ecxmov0x80495e4,%edxmov0x80495e0,%eaxsub%edx,%eaximul%ecx,%eaxmov%eax,0x80495e8深度探索把0x80495dc地址的值放到eax寄存器中0x80495d8:a变

量0x80495dc:b变量0x80495e0:c变量0x80495e4:d变量0x80495e8:e变量ecxecx+eaxeaxeax-eaxeax(eax*eax)的低32位C++语言程序

设计清华大学郑莉2021/7/2699结构体的位成员⚫结构体中位成员的声明形式–数据类型说明符成员名:位数;⚫位成员的作用–通过“打包”,使结构体的不同成员共享相同的字节,从而节省存储空间。⚫注意事项–具

体的打包方式,因编译器而异;–只有bool、char、int和枚举类型的成员,允许定义为位成员;–节省空间,但可能牺牲时间。深度探索C++语言程序设计清华大学郑莉2021/7/26100例2-15⚫设计一个结构体存储学生的成绩信息,需要包括学号、年级和成绩三项内

容,学号的范围是0到99,999,999,年级分为freshman、sophomore、junior、senior四种,成绩包括A、B、C、D四个等级。深度探索C++语言程序设计清华大学郑莉2021/7/26101例2-15#include<iostre

am>usingnamespacestd;enumLevel{FRESHMAN,SOPHOMORE,JUNIOR,SENIOR};enumGrade{A,B,C,D};structStudent{unsignednumber

:27;Levellevel:2;Gradegrade:2;};intmain(){Students={12345678,SOPHOMORE,B};cout<<"SizeofStudent:"<<sizeof

(Student)<<endl;cout<<"Number:"<<s.number<<endl;cout<<"Level:“;C++语言程序设计清华大学郑莉2021/7/26102例2-15switch(s.

level){caseFRESHMAN:cout<<"freshman";break;caseSOPHOMORE:cout<<"sophomore";break;caseJUNIOR:cout<<"junior";break;caseSENIOR:cout<<"senior";break;}co

ut<<endl;cout<<"Grade:";switch(s.grade){caseA:cout<<"A";break;caseB:cout<<"B";break;caseC:cout<<"C";break;caseD:cout<<"D";break;}cout<<endl;return0;

}C++语言程序设计清华大学郑莉2021/7/26103例2-15⚫运行结果:(运行结果第一行会因编译环境的不同而有所差异)SizeofStudent:4Number:12345678Level:sophomoreGrade:BC++语言程序设计清华大学郑莉2021/7/

26104小结与复习建议⚫主要内容–C++语言概述、基本数据类型和表达式、数据的输入与输出、算法的基本控制结构、自定义数据类型⚫达到的目标–掌握C++语言的基本概念和基本语句,能够编写简单的程序段。⚫实验任务–实验二C++语言

程序设计清华大学郑莉2021/7/26105

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?