《C程序设计基础概要实用实用教案》由会员分享,可在线阅读,更多相关《C程序设计基础概要实用实用教案(98页珍藏版)》请在金锄头文库上搜索。
1、1本章主要(zhyo)内容基本( jbn)数据类型和表达式数据的输入与输出算法的基本( jbn)控制结构自定义数据类型第1页/共97页第一页,共98页。2C+程序(chngx)实例例2-1#includevoidmain(void)coutHello!n;coutWelcometoc+!n;运行(ynxng)结果:Hello!Welcometoc+!C+语言(yyn)概述第2页/共97页第二页,共98页。3C+字符集大小写的英文字母:AZ,az数字(shz)字符:09特殊字符:空格!#%&*_(下划线)+=-/;.,()C+语言(yyn)概述第3页/共97页第三页,共98页。4词法(cf)记号
2、关键字C+预定义的单词。标识符程序员声明的单词,它命名程序正文中的一些实体。文字在程序中直接使用符号表示的数据操作符用于实现(shxin)各种运算的符号。分隔符用于分隔各个词法记号或程序正文:(),:;空白:空格、制表符(TAB键产生的字符)、换行符(Enter键所产生的字符)和注释的总称。C+语言(yyn)概述第4页/共97页第四页,共98页。5标识符的构成(guchng)规则以大写字母、小写字母或下划线(_)开始(kish)。可以由以大写字母、小写字母、下划线(_)或数字09组成。大写字母和小写字母代表不同的标识符。C+语言(yyn)概述第5页/共97页第五页,共98页。6 数据类型数据类
3、型 常量常量(chngling)(chngling)(chngling)(chngling)与变量与变量#includevoidmain(void)constintPRICE=30;intnum,total;floatv,r,h;num=10;total=num*PRICE;couttotalendl;r=2.5;h=3.2;v=3.14159*r*r*h;coutvendl;常量常量变量变量变量先定变量先定义后使用义后使用符号常量符号常量Page 6基本(jbn)数据类型和表达式第6页/共97页第六页,共98页。7#includevoidmain(void)constintPRICE=30;
4、intnum,total;floatv,r,h;num=10;total=num*PRICE;couttotalendl;r=2.5;h=3.2;v=3.14159*r*r*h;coutvendl; 数据数据(shj)(shj)(shj)(shj)类型类型 整型数据整型数据(shj)(shj)(shj)(shj)整型常量整型常量(chngling)(chngling)shortunsigned short 2字节字节(z ji)int、unsigned int 4字节字节(z ji)longunsigned long 4字节字节(z ji)整型变量整型变量声明整型变量声明基本数据类型和表达式第
5、7页/共97页第七页,共98页。8数据数据(shj)(shj)(shj)(shj)类型类型 整型数据整型数据(shj)(shj)(shj)(shj)及取值范围及取值范围类型(lixng)说明符 位数 数值范围短整short16-3276832767基本 int32 -231(231-1)长整long32-231(231-1)无符号unsigned short16065535 unsigned int320(232-1)unsigned long320(232-1)基本(jbn)数据类型和表达式第8页/共97页第八页,共98页。9#includevoidmain(void)constintPRI
6、CE=30;intnum,total;floatv,r,h;num=10;total=num*PRICE;couttotalendl;r=2.5;h=3.2;v=3.14159*r*r*h;coutvendl; 数据(shj)(shj)类型 实型数据(shj)(shj)实型常量实型常量(chngling)(chngling)float 4字节(z ji) 3.41038 7位有效数字double 8字节(z ji) 1.710308 15位有效数字long double 8字节(z ji) 1.710308 15位有效数字实型变量实型变量缺省为缺省为doubledouble型型后缀后缀 F F
7、(或(或 f f)为为 floatfloat型型后缀后缀 L L(或(或 l l)为为 long doublelong double型型基本数据类型和表达式第9页/共97页第九页,共98页。10 数据类型 字符(z f)(z f)型数据(一)字符常量单引号括起来的一个字符,如:a,D,?,$字符变量用来存放字符常量例:charc1,c2;c1=a;c2=A;字符数据在内存(nicn)中的存储形式以ASCII码存储,占1字节,用7个二进制位Page 10基本(jbn)数据类型和表达式第10页/共97页第十页,共98页。11字符(zf)数据的使用方法字符(zf)数据和整型数据之间可以运算。字符(z
8、f)数据与整型数据可以互相赋值。字符(zf)串常量例:CHINAaa所以:charc;c=a; C H I N A 0a a 00a aPage 11 数据类型 字符(z f)(z f)型数据(二)基本(jbn)数据类型和表达式第11页/共97页第十一页,共98页。12 数据数据(shj)(shj)(shj)(shj)类型类型 布尔型数据布尔型数据(shj)(shj)(shj)(shj)布尔型变量的说明:例:boolflag;布尔型数据(shj)的取值:只有false和true两个值基本(jbn)数据类型和表达式第12页/共97页第十二页,共98页。13 数据类型数据类型 变量变量(binli
9、ng)(binling)(binling)(binling)赋初值赋初值例: inta=3;doublef=3.56;charc=a;intc=5;Page 13基本(jbn)数据类型和表达式第13页/共97页第十三页,共98页。14数据类型数据类型不同不同(b tn)(b tn)(b tn)(b tn)类型数据混合运算时的类型数据混合运算时的类型转换类型转换不同类型数据进行混合运算(ynsun)时,C+编译器会自动进行类型转换。为了避免不同的数据类型在运算(ynsun)中出现混淆,应尽量使用同种类型数据。可以采用强制类型转换:例如:floatc;inta,b;c=float(a)/float
10、(b);或c=(float)a/(float)b;基本(jbn)数据类型和表达式第14页/共97页第十四页,共98页。15算术算术(sunsh)(sunsh)(sunsh)(sunsh)运算符与算术运算符与算术(sunsh)(sunsh)(sunsh)(sunsh)表达表达式式基本算术运算符+-*/%(取余)(若整数(zhngsh)相除,结果取整)优先级与结合性先乘除,后加减,同级自左至右+,-(自增、自减)例:i+;j-;Page 15基本(jbn)数据类型和表达式第15页/共97页第十五页,共98页。16赋值运算符和赋值表达式赋值运算符和赋值表达式 简单简单(jindn)(jindn)(j
11、indn)(jindn)的赋值运算符的赋值运算符=举例(jl):n=n+5类型:等号左边对象的类型值:等号左边对象被赋值后的值Page 16基本(jbn)数据类型和表达式第16页/共97页第十六页,共98页。17赋值运算符和赋值表达式赋值运算符和赋值表达式 复合复合(fh)(fh)(fh)(fh)的赋值运算符的赋值运算符有10种复合(fh)运算符:+=,-=,*=,/=,%=,=,&=,=,|=例:a+=3等价于a=a+3x*=y+8等价于x=x*(y+8)基本(jbn)数据类型和表达式第17页/共97页第十七页,共98页。18赋值运算符和赋值表达式赋值运算符和赋值表达式 赋值表达式举例赋值表
12、达式举例(j l)(j l)(j l)(j l)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)Page 18基本(jbn)数据类型和表达式第18页/共97页第十八页,共98页。19逗号逗号(duho)(duho)(duho)(duho)运算和逗号运算和逗号(duho)(duho)(duho)(duho)表达式表达式格式:表达式1,表达式2求解顺序及
13、结果( jigu):先求解1,再求解2,最终结果( jigu)为表达式2的值例a=3*5,a*4最终结果( jigu)为60Page 19基本(jbn)数据类型和表达式第19页/共97页第十九页,共98页。20关系(gunx)运算与关系(gunx)表达式关系运算是比较简单的一种逻辑运算,优先次序为:=!=优先级相同(高)优先级相同(低)关系表达式是一种最简单的逻辑表达式其结果类型为bool,值只能(zhnn)为true或false。例如:ab,cb)&(xy)其结果类型为bool,值只能为true或false。基本(jbn)数据类型和表达式第21页/共97页第二十一页,共98页。22条件条件(
14、tiojin)(tiojin)(tiojin)(tiojin)运算符与条件运算符与条件(tiojin)(tiojin)(tiojin)(tiojin)表达式表达式一般形式(xngsh):表达式1?表达式2:表达式3表达式1必须是bool类型执行顺序:先求解表达式1,若表达式1的值为true,则求解表达式2,表达式2的值为最终结果若表达式1的值为false,则求解表达式3,表达式3的值为最终结果基本(jbn)数据类型和表达式第22页/共97页第二十二页,共98页。23条件条件(tiojin)(tiojin)(tiojin)(tiojin)运算符与条件运算符与条件(tiojin)(tiojin)(
15、tiojin)(tiojin)表达式表达式注意:条件运算符优级高于赋值运算符,低于逻辑运算符结合方向(fngxing)为自右至左表达式2、3的类型可以不同,条件表达式的最终类型为 2 和 3 中较高的类型。基本(jbn)数据类型和表达式第23页/共97页第二十三页,共98页。24sizeof操作符语法形式sizeof(类型名)或sizeof(表达式)结果值:“类型名”指定(zhdng)的类型或“表达式”的结果类型在内存中所占的字节数。基本(jbn)数据类型和表达式第24页/共97页第二十四页,共98页。25位运算位运算(yn sun)(yn sun)(yn sun)(yn sun)按位与(按位
16、与(& & & &)运算规则将两个(lin)运算量的每一个位进行逻辑与操作举例:计算3&53:000000115:(&)000001013&5:00000001用途:将某一位置0,其它位不变。例如:将char型变量a的最低位置0:a=a&0xfe;取指定位。例如:有charc;inta;取出a的低字节,置于c中:c=a&0xff;基本(jbn)数据类型和表达式第25页/共97页第二十五页,共98页。26位运算位运算(yn sun)(yn sun)(yn sun)(yn sun)按位或(按位或(| | | |)运算规则(guz)将两个运算量的每一个位进行逻辑或操作举例:计算3|53:000000
17、115:(|)000001013|5:00000111用途:将某些位置1,其它位不变。例如:将int型变量a的低字节置1:a=a|0xff;基本(jbn)数据类型和表达式第26页/共97页第二十六页,共98页。27位运算位运算(yn sun)(yn sun)(yn sun)(yn sun)按位异或(按位异或( )运算规则两个操作数进行异或:若对应位相同,则结果(ji gu)该位为 0,若对应位不同,则结果(ji gu)该位为 1,举例:计算 071052 071: 0 0 1 1 1 0 0 1 052: () 0 0 1 0 1 0 1 0 071052 : 0 0 0 1 0 0 1 1基
18、本(jbn)数据类型和表达式第27页/共97页第二十七页,共98页。28位运算位运算(yn sun)(yn sun)(yn sun)(yn sun)按位异或(按位异或( )用途:使特定(tdng)位翻转(与0异或保持原值,与1异或取反) 例如:要使 01111010 低四位翻转: 0 1 1 1 1 0 1 0 ()0 0 0 0 1 1 1 10 1 1 1 0 1 0 1基本(jbn)数据类型和表达式第28页/共97页第二十八页,共98页。29位运算位运算(yn sun)(yn sun)(yn sun)(yn sun)取反取反()()()()单目运算符:对一个(y )二进制数按位取反。例:
19、 025:0000000000010101 025:1111111111101010基本(jbn)数据类型和表达式第29页/共97页第二十九页,共98页。30位运算位运算(yn sun)(yn sun)(yn sun)(yn sun)移位移位左移运算(ynsun)()右移后,低位:舍弃高位:无符号数:补0有符号数:补“符号位”基本(jbn)数据类型和表达式第30页/共97页第三十页,共98页。31运算符优先级括号+,-,sizeof*,/,%+,-=,!=位运算(ynsun)&|?:赋值运算(ynsun)逗号运算(ynsun)低高基本(jbn)数据类型和表达式第31页/共97页第三十一页,共9
20、8页。32混合运算(ynsun)时数据类型的转换隐含转换一些二元运算符(算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符)要求两个(lin)操作数的类型一致。在算术运算和关系运算中如果参与运算的操作数类型不一致,编译系统会自动对数据进行转换(即隐含转换),基本原则是将低类型数据转换为高类型数据。charshortintunsignedlongunsignedlongfloatdouble低高基本(jbn)数据类型和表达式第32页/共97页第三十二页,共98页。33混合运算时数据类型的转换(zhunhun)隐含转换(zhunhun)逻辑运算符要求参与运算的操作数必须是bool型,如果操作
21、数是其它(qt)类型,编译系统会自动将非0数据转换为true,0转换为false。位运算的操作数必须是整数,当二元位运算的操作数是不同类型的整数时,也会自动进行类型转换,赋值运算要求左值与右值的类型相同,若类型不同,编译系统会自动律将右值转换为左值的类型。基本(jbn)数据类型和表达式第33页/共97页第三十三页,共98页。34混合(hnh)运算时数据类型的转换强制类型转换语法形式:类型说明符(表达式)或(类型说明符)表达式强制类型转换的作用是将表达式的结果( jigu)类型转换为类型说明符所指定的类型。基本(jbn)数据类型和表达式第34页/共97页第三十四页,共98页。35赋值语句赋值语句
22、(yj)(yj)(yj)(yj)格式:赋值表达式;赋值语句与赋值表达式的区别(qbi):赋值表达式可以包含在其它表达式中,而赋值语句不可。例:if(a=b)0)t=a;不可写为:if(a=b;)0)t=a;第35页/共97页第三十五页,共98页。36简单(jindn)的输入、输出向标准输出设备(shchshbi)(显示器)输出例:cout“Hello,everyone!”endl;intx;cout“x=“x;第36页/共97页第三十六页,共98页。37顺序结构(jigu)分支结构(jigu)循环结构(jigu)算法(sunf)的基本控制结构第37页/共97页第三十七页,共98页。38如何(r
23、h)解决分支问题?例2-2输入一个(y )年份,判断是否闰年。算法(sun f)的基本控制结构第38页/共97页第三十八页,共98页。#include void main(void)int year; bool IsLeapYear; cout year;IsLeapYear = (year % 4 = 0 & year % 100 != 0)|(year % 400 = 0); if (IsLeapYear) cout year is a leap year endl;else cout year is not a leap year endl;第39页/共97页第三十九页,共98页。运行(
24、ynxng)结果:Enter the year: 20002000 is a leap year第40页/共97页第四十页,共98页。41如何解决多分(dufn)之问题?例2-3 输入(shr)两个整数,比较两个数的大小。算法(sun f)的基本控制结构第41页/共97页第四十一页,共98页。#includevoid main() int x,y; coutxy; if (x!=y) if (xy) coutyendl; else coutxyendl; else coutx=yendl;第42页/共97页第四十二页,共98页。运行(ynxng)结果1:Enterxandy:58xy第43页/
25、共97页第四十三页,共98页。44一般形式if()if()语句1else语句2elseif()语句3else语句4注意语句1、2、3、4可以(ky)是复合语句,每层的if与else配对,或用来确定层次关系。if if 语句 嵌套算法(sun f)的基本控制结构第44页/共97页第四十四页,共98页。45if(表达式)语句(yj)例:if(xy)couty)coutx;elsecouty;if(表达式1)语句(yj)1elseif(表达式2)语句(yj)2elseif(表达式3)语句(yj)3else语句(yj)n if if if if 语句语句(yj)(yj)(yj)(yj) 三种形式三种形
26、式算法(sun f)的基本控制结构第45页/共97页第四十五页,共98页。46一般形式switch (表达式) case 常量(chngling)表达式 1:语句1 case 常量(chngling)表达式 2:语句2 case 常量(chngling)表达式 n:语句n default : 语句n+1 switch switch switch switch 语句语句(yj)(yj)(yj)(yj)l执行顺序执行顺序l以以casecase中的常量表达式值为入口标号,由中的常量表达式值为入口标号,由此开始顺序执行。因此此开始顺序执行。因此(ync)(ync),每个,每个casecase分支最后应
27、该加分支最后应该加breakbreak语句。语句。每个常量表达式的值不每个常量表达式的值不能相同,次序不影响执能相同,次序不影响执行结果。行结果。可以是多个语句,但不必用 。可以是整型、字符型、枚举型可以是整型、字符型、枚举型算法的基本控制结构第46页/共97页第四十六页,共98页。47特殊的多分支(fnzh)结构例2-4输入一个06的整数(zhngsh),转换成星期输出。算法(sun f)的基本控制结构第47页/共97页第四十七页,共98页。#includevoidmain(void) intday;cinday;switch(day)case0:coutSundayendl;break;c
28、ase1:coutMondayendl;break;case2:coutTuesdayendl;break;第48页/共97页第四十八页,共98页。case3:coutWednesdayendl;break;case4:coutThursdayendl;break;case5:coutFridayendl;break;case6:coutSaturdayendl;break;default:coutDayoutofrangeSunday.Saturdayendl;break;第49页/共97页第四十九页,共98页。50使用(shyng)switch(shyng)switch语句应注意的问题ca
29、se分支可包含多个语句,且不用。表达式、判断(pndun)值都是int型或char型。若干分支执行内容相同可共用一组语句。算法(sun f)的基本控制结构第50页/共97页第五十页,共98页。51如何有效地完成(wnchng)重复工作例2-5求自然数110之和分析(fnx):本题需要用累加算法,累加过程是一个循环过程,可以用while语句实现。算法(sun f)的基本控制结构第51页/共97页第五十一页,共98页。#includevoidmain()inti(1),sum(0);while(i=10)sum+=i;i+;coutsum=sumendl;运行(ynxng)结果:sum=55第52
30、页/共97页第五十二页,共98页。53while while while while 语句语句(yj)(yj)(yj)(yj)形式(xngsh)while (表达式) 语句可以是复合语句,其中必须含有改变条件表达式值的语句。执行顺序执行顺序先判断先判断(pndun)表达式的值,为表达式的值,为 true 时,再执行语句。时,再执行语句。算法的基本控制结构第53页/共97页第五十三页,共98页。54先执行循环体,后判断(pndun)条件的情况例2-6 输入一个(y )整数,将各位数字反转后输出。算法(sun f)的基本控制结构第54页/共97页第五十四页,共98页。#include void m
31、ain(void)int n, right_digit, newnum = 0; cout n; cout The number in reverse order is ;doright_digit = n % 10;cout right_digit;n /= 10; while (n != 0); coutendl;第55页/共97页第五十五页,共98页。运行(ynxng)结果:Enter the number: 365The number in reverse order is 563第56页/共97页第五十六页,共98页。57do-while do-while do-while do-w
32、hile 语句语句(yj)(yj)(yj)(yj)一般(ybn)形式do 语句while (表达式)可以是复合语句,其中必须含可以是复合语句,其中必须含有改变条件表达式值的语句。有改变条件表达式值的语句。执行执行(zhxng)(zhxng)顺序顺序先执行先执行(zhxng)(zhxng)循环体语句,后判断条件。循环体语句,后判断条件。表达式为表达式为 true true 时,继续执行时,继续执行(zhxng)(zhxng)循循环体环体与与while while 语句的比较:语句的比较:While While 语句执行语句执行(zhxng)(zhxng)顺序顺序 先判断表达式的值,为先判断表达式
33、的值,为true true 时,再执行时,再执行(zhxng)(zhxng)语句语句算法的基本控制结构第57页/共97页第五十七页,共98页。对比下列(xili)程序:程序(chngx)1:#includevoidmain()inti,sum(0);cini;while(i=10)sum+=i;i+;coutsum=sumendl;算法(sun f)的基本控制结构程序2:#includevoidmain()inti,sum(0);cini;dosum+=i;i+;while(i=10);coutsum=sumendl;第58页/共97页第五十八页,共98页。59for for for for
34、语句语句(yj)(yj)(yj)(yj)语法(yf)形式for (表达式1;表达式2;表达式3) 语句 循环循环(xnhun)前前先求解先求解非非0时执行循环体时执行循环体每次执行完循环体后求解每次执行完循环体后求解算法的基本控制结构第59页/共97页第五十九页,共98页。60例2-8输入一个(y)整数,求出它的所有因子。算法(sun f)的基本控制结构第60页/共97页第六十页,共98页。#include void main(void) int n, k;cout n;cout Number n Factors ;for (k=1; k = n; k+)if (n % k = 0)cout
35、k ; cout endl;第61页/共97页第六十一页,共98页。运行(ynxng)结果1:Enter a positive integer: 36Number 36 Factors 1 2 3 4 6 9 12 18 36 运行(ynxng)结果2:Enter a positive integer: 7Number 7 Factors 1 7 第62页/共97页第六十二页,共98页。63循环(xnhun)结构的嵌套#includevoid main()int i(1),a(0);for(;i=5;i+) do i+; a+; while(i3); i+;couta”,”iendl;算法(s
36、un f)的基本控制结构第63页/共97页第六十三页,共98页。64例2-9编写程序输出(shch)以下图案 * * * * * * *算法(sun f)的基本控制结构第64页/共97页第六十四页,共98页。#includevoid main() int i,j,n=4; for(i=1;i=n;i+) /输出(shch)前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*; coutendl; 第65页/共97页第六十五页,共98页。 for(i=1;
37、i=n-1;i+) /输出(shch)后3行图案 for(j=1;j=30;j+) cout ; /在图案左侧空30列 for(j=1; j=7-2*i ;j+) cout*; coutendl; 第66页/共97页第六十六页,共98页。67循环结构(jigu)与选择结构(jigu)相互嵌套#includevoid main() int n;for(n=100; n=200; n+) if (n%3!=0) printf(“%d”,n);算法(sun f)的基本控制结构第67页/共97页第六十七页,共98页。68例例2-102-102-102-10读入一系列整数,统计出正整数个数i和负整数个数
38、j,读入0则结束。分析:需要读入一系列整数,但是整数个数不定,要在每次读入之后进行( jnxng)判断,因此使用while循环最为合适。循环控制条件应该是n!=0。由于要判断数的正负并分别进行( jnxng)统计,所以需要在循环内部嵌入选择结构。算法(sun f)的基本控制结构第68页/共97页第六十八页,共98页。#includevoidmain()inti=0,j=0,n;coutn;while(n!=0)if(n0)i+=1;if(nn;cout正整数(zhngsh)个数:i负整数(zhngsh)个数:jendl;第69页/共97页第六十九页,共98页。70break break bre
39、ak break 和和 continue continue continue continue 语句语句(yj)(yj)(yj)(yj)break语句使程序从循环体和switch语句内跳出,继续执行逻辑上的下一条语句。不宜(by)用在别处。continue语句结束本次循环,接着判断是否执行下一次循环。算法(sun f)的基本控制结构第70页/共97页第七十页,共98页。71typedef语句(yj)为一个已有的数据类型(lixng)另外命名语法形式typedef已有类型(lixng)名新类型(lixng)名表;例如typedefdoublearea,volume;typedefintnatur
40、al;naturali1,i2;areaa;volumev;自定义数据类型第71页/共97页第七十一页,共98页。72枚举(mij)类型enum只要将需要的变量值一一列举出来,便构成(guchng)了一个枚举类型。枚举类型的声明形式如下:enum枚举类型名变量值列表;例如:enumweekdaysun,mon,tue,wed,thu,fri,sat;自定义数据类型第72页/共97页第七十二页,共98页。73枚举(mij)类型enum枚举类型应用说明:对枚举元素按常量处理,不能对它们赋值。例如,不能写:sun=0;枚举元素具有缺省值,它们依次为:0,1,2,.。也可以在声明时另行指定枚举元素的值
41、,如:enumweekdaysun=7,mon=1,tue,wed,thu,fri,sat;枚举值可以进行关系运算(ynsun)。整数值不能直接赋给枚举变量,如需要将整数赋值给枚举变量,应进行强制类型转换。自定义数据类型第73页/共97页第七十三页,共98页。74例2-11设某次体育比赛的结果有四种可能:胜(win)、负(lose)、平局(tie)、比赛取消(cancel),编写程序顺序输出这四种情况。分析:由于比赛结果只有四种可能,所以可以声明一个(y)枚举类型,声明一个(y)枚举类型的变量来存放比赛结果。自定义数据类型第74页/共97页第七十四页,共98页。#includeenumgame
42、_resultWIN,LOSE,TIE,CANCEL;intmain()game_resultresult;enumgame_resultomit=CANCEL;intcount;for(count=WIN;count=CANCEL;count+)result=(game_result)count;if(result=omit)coutThegamewascancelledn;第75页/共97页第七十五页,共98页。elsecoutThegamewasplayed;if(result=WIN)coutandwewon!;if(result=LOSE)coutandwelost.;coutn;r
43、eturn0;第76页/共97页第七十六页,共98页。运行(ynxng)结果Thegamewasplayedandwewon!Thegamewasplayedandwelost.ThegamewasplayedThegamewascancelled第77页/共97页第七十七页,共98页。78例2-12口袋中有红、黄、蓝、白、黑五种颜色的球若干个。每次从口袋中取出3个不同颜色的球,问有多少种取法。分析:由于球只能(zhnn)是五种颜色之一,故可用枚举类型表示球的颜色。设取出的球为i、j、k,根据题意,i、j、k分别可以有五种取值,且ijk。可以用穷举法,逐个检验每一种可能的组合,从中找出符合要求
44、的组合并输出。自定义数据类型第78页/共97页第七十八页,共98页。#includevoidmain()enumcolorred,yellow,blue,white,black;enumcolorpri;intn,loop,i,j,k;charc;n=0;for(i=red;i=black;i+)for(j=red;j=black;j+)if(i!=j)/前两个(lin)球不同for(k=red;k=black;k+)第79页/共97页第七十九页,共98页。if(k!=i)&(k!=j)/第三个球不同于前两个(lin)n=n+1;cout.width(4);coutn;for(loop=1;l
45、oop=3;loop+)switch(loop)case1:pri=(enumcolor)i;break;case2:pri=(enumcolor)j;break;case3:pri=(enumcolor)k;break;default:break;第80页/共97页第八十页,共98页。switch(pri)casered:coutred;break;caseyellow:coutyellow;break;caseblue:coutblue;break;casewhite:coutwhite;break;caseblack:coutblack;break;default:break;coute
46、ndl;couttotal:nendl;第81页/共97页第八十一页,共98页。82结构(jigu)体结构(jigu)的声明结构的概念结构是由不同(btn)数据类型的数据组成的集合体。声明结构类型struct结构名数据类型成员名1;数据类型成员名2;:数据类型成员名n;;自定义数据类型第82页/共97页第八十二页,共98页。83结构(jigu)体结构(jigu)的声明举例( jl):structstudent/学生信息结构体intnum;/学号charname20;/姓名charsex;/性别intage;/年龄floatscore;/成绩charaddr30;/住址自定义数据类型第83页/共
47、97页第八十三页,共98页。84结构(jigu)体结构(jigu)变量说明变量说明形式结构名结构变量名;注意:结构变量的存储类型(lixng)概念、它的寿命、可见性及使用范围与普通变量完全一致。结构变量说明在结构类型(lixng)声明之后,二者也可同时进行。结构变量占内存大小可用sizeof运算求出:sizeof(运算量)自定义数据类型第84页/共97页第八十四页,共98页。85结构(jigu)体结构(jigu)变量的初始化和使用初始化说明结构变量的同时可以直接设置初值。使用(shyng)结构体成员的引用形式:结构变量名.成员名自定义数据类型第85页/共97页第八十五页,共98页。86例2-1
48、3结构体变量的初始化和使用#include#includestructstudent/学生(xusheng)信息结构体intnum;/学号charname20;/姓名charsex;/性别intage;/年龄stu=97001,LinLin,F,19;自定义数据类型第86页/共97页第八十六页,共98页。voidmain()coutsetw(7)stu.numsetw(20)stu.namesetw(3)stu.sexsetw(3)stu.age;运行(ynxng)结果:97001LinLinF19第87页/共97页第八十七页,共98页。88例2-14有三只动物,都具有重量和身长两个属性,现在
49、需要对它们(tmen)的重量和身长赋值,并且输出它们(tmen)的重量。#includestructanimalintweight;intfeet;intmain()animaldog1,dog2,chicken;自定义数据类型第88页/共97页第八十八页,共98页。dog1.weight=15;dog2.weight=37;chicken.weight=3;dog1.feet=4;dog2.feet=4;chicken.feet=2;coutTheweightofdog1isdog1.weightn;coutTheweightofdog2isdog2.weightn;coutTheweigh
50、tofchickenischicken.weightn;return0;第89页/共97页第八十九页,共98页。运行(ynxng)结果 The weight of dog1 is 15 The weight of dog2 is 37 The weight of chicken is 3第90页/共97页第九十页,共98页。91联合体声明形式:union联合名数据类型成员名1;数据类型成员名2;:数据类型成员名n;;联合体类型变量说明(shumng)的语法形式联合名联合变量名;引用形式:联合名.成员名自定义数据类型第91页/共97页第九十一页,共98页。92例:union uarea char
51、 c_data; short s_data; long l_data;uareac_datal_datas_data联合体自定义数据类型第92页/共97页第九十二页,共98页。93无名(wmng)联合无名联合(linh)没有标记名,只是声明一个成员项的集合,这些成员项具有相同的内存地址,可以由成员项的名字直接访问。例:unioninti;floatf;在程序中可以这样使用:i=10;f=2.2;自定义数据类型第93页/共97页第九十三页,共98页。94例2-15#include struct aircraft int wingspan; int passengers; union float
52、fuel_load; float bomb_load; int pallets; ; fighter, bomber, transport;自定义数据类型第94页/共97页第九十四页,共98页。int main() fighter.wingspan = 40; fighter.passengers = 1; fighter.fuel_load = 12000.0; bomber.wingspan = 90; bomber.passengers = 12; bomber.bomb_load = 14000.0; transport.wingspan = 106; transport.passen
53、gers = 4; transport.pallets = 42; transport.fuel_load = 18000.0; fighter.pallets = 4;第95页/共97页第九十五页,共98页。 cout The fighter carries fighter.pallets pallets.n; cout The bomber bomb load is bomber.bomb_load n; return 0;运行(ynxng)结果: The fighter carries 4 pallets. The bomber bomb load is 14000第96页/共97页第九十六页,共98页。97感谢您的欣赏(xnshng)!第97页/共97页第九十七页,共98页。内容(nirng)总结1。void main(void)。大小写的英文字母:AZ,az。算术(sunsh)运算符与算术(sunsh)表达式。逗号运算和逗号表达式。|。从标准输入设备(键盘)输入。输入两个整数,比较两个数的大小。对枚举元素按常量处理,不能对它们赋值。game_result result。分析:由于球只能是五种颜色之一,故可用枚举类型表示球的颜色。感谢您的欣赏第九十八页,共98页。