c语言程序设计郑莉件实用教案

上传人:工**** 文档编号:568630059 上传时间:2024-07-25 格式:PPT 页数:103 大小:2.15MB
返回 下载 相关 举报
c语言程序设计郑莉件实用教案_第1页
第1页 / 共103页
c语言程序设计郑莉件实用教案_第2页
第2页 / 共103页
c语言程序设计郑莉件实用教案_第3页
第3页 / 共103页
c语言程序设计郑莉件实用教案_第4页
第4页 / 共103页
c语言程序设计郑莉件实用教案_第5页
第5页 / 共103页
点击查看更多>>
资源描述

《c语言程序设计郑莉件实用教案》由会员分享,可在线阅读,更多相关《c语言程序设计郑莉件实用教案(103页珍藏版)》请在金锄头文库上搜索。

1、11C+语言(yyn)的产生C+是从C语言发展演变而来的,首先(shuxin)是一个更好的C引入了类的机制,最初的C+被称为“带类的C”1983年正式取名为C+从1989年开始C+语言的标准化工作于1994年制定了ANSI C+标准草案于1998年11月被国际标准化组织(ISO)批准为国际标准,成为目前的C+C+语言(yyn)概述第1页/共102页第一页,共103页。22C+的特点(tdin)全面(qunmin)兼容C它保持了C的简洁、高效和接近汇编语言等特点对C的类型系统进行了改革和扩充C+也支持面向过程的程序设计,不是一个纯正的面向对象的语言支持面向对象的方法C+语言(yyn)概述第2页/

2、共102页第二页,共103页。33C+程序(chngx)实例例2-1/2_1.cpp#include using namespace std;int main() cout Hello! endl;cout Welcome to c+! endl;return 0;运行(ynxng)结果:Hello!Welcome to c+!C+语言(yyn)概述第3页/共102页第三页,共103页。44C+字符集大小写的英文字母:AZ,az数字(shz)字符:09特殊字符:!#%&*_+=-/“;.,:?()C+语言(yyn)概述第4页/共102页第四页,共103页。55词法(cf)记号关键字C+预定义的

3、单词标识符程序员声明的单词,它命名程序正文中的一些实体文字在程序中直接使用符号表示的数据操作符用于实现各种( zhn)运算的符号分隔符 () , : ; 用于分隔各个词法记号或程序正文空白符空格、制表符(TAB键产生的字符)、垂直制表符、换行符、回车符和注释的总称C+语言(yyn)概述第5页/共102页第五页,共103页。66标识符的构成(guchng)规则以大写字母、小写字母或下划线(_)开始(kish)。可以由以大写字母、小写字母、下划线(_)或数字09组成。大写字母和小写字母代表不同的标识符。C+语言(yyn)概述第6页/共102页第六页,共103页。77 数据类型数据类型 常量常量(c

4、hngling)(chngling)(chngling)(chngling)与变量与变量#include using namespace std;int main() 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; return 0;常量变量变量先声明后使用符号常量基本(jbn)数据类型和表达式第7页/共102页第七页,共103页。

5、88#include using namespace std;int main() 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; return 0; 数据数据(shj)(shj)(shj)(shj)类型类型 整型数据整型数据(shj)(shj)(shj)(shj)shortunsigned short 2字节(z ji)intun

6、signed int 4字节(z ji)longunsigned long 4字节(z ji)整型变量声明基本(jbn)数据类型和表达式整型变量整型常量第8页/共102页第八页,共103页。99数据数据(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

7、long320(232-1)基本(jbn)数据类型和表达式第9页/共102页第九页,共103页。1010#include using namespace std;int main() 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; return 0; 数据(shj)(shj)类型 实型数据(shj)(shj)实型常量(chnglin

8、g)float 4float 4字节字节(z ji)(z ji) 3.41038 3.41038 7 7位有效数字位有效数字double 8double 8字节字节(z ji)(z ji) 1.710308 1.710308 15 15位有效数字位有效数字long double long double 8 8字节字节(z ji)(z ji) 1.710308 1.710308 15 15位有效数字位有效数字实型变量默认为double型后缀 F(或 f)为 float型后缀 L(或 l)为 long double型基本数据类型和表达式第10页/共102页第十页,共103页。1111 数据类型 字

9、符(z f)(z f)型数据(一)字符常量单引号括起来的一个字符,如:a, D, ?, $字符变量用来(yn li)存放字符常量例:char c1, c2; c1 = a; c2 = A;字符数据在内存中的存储形式以ASCII码存储,占1字节,用7个二进制位基本(jbn)数据类型和表达式第11页/共102页第十一页,共103页。1212字符数据的使用方法(fngf)字符数据和整型数据之间可以运算。字符数据与整型数据可以互相赋值。字符串常量例:CHINA a a所以:char c; c=a;C H I N A 0a 0aPage 12 数据类型 字符(z f)(z f)型数据(二)基本(jbn)

10、数据类型和表达式第12页/共102页第十二页,共103页。1313 数据数据(shj)(shj)(shj)(shj)类型类型 布尔型数据布尔型数据(shj)(shj)(shj)(shj)布尔型变量的说明(shumng):例:bool flag;布尔型数据的取值:只有 false 和 true 两个值基本(jbn)数据类型和表达式第13页/共102页第十三页,共103页。1414 数据类型数据类型 变量变量(binling)(binling)(binling)(binling)初始化初始化例: int a = 3; double f = 3.56; char c = a; int c(5);Pa

11、ge 14基本(jbn)数据类型和表达式第14页/共102页第十四页,共103页。1515数据类型数据类型 混合混合(hnh)(hnh)(hnh)(hnh)运算时的类型转换运算时的类型转换不同类型数据进行混合运算时,C+编译器会自动进行类型转换。为了避免不同的数据类型在运算中出现类型问题,应尽量使用同种(tn zhn)类型数据。可以采用强制类型转换:例如:float c;int a, b;c = float(a) / float(b); 或 c = (float)a / (float)b; 基本(jbn)数据类型和表达式第15页/共102页第十五页,共103页。1616变量(binling)的

12、存储类型auto属于一时性存储,其存储空间可以被若干变量多次覆盖使用(shyng)。register存放在通用寄存器中。extern在所有函数和程序段中都可引用。static在内存中是以固定地址存放的,在整个程序运行期间都有效。基本(jbn)数据类型和表达式第16页/共102页第十六页,共103页。1717算术算术(sunsh)(sunsh)(sunsh)(sunsh)运算符与算术运算符与算术(sunsh)(sunsh)(sunsh)(sunsh)表达表达式式基本算术运算符 + - * /(若整数相除,结果(ji gu)取整) %(取余,操作数为整数)优先级与结合性先乘除,后加减,同级自左至右

13、+, -(自增、自减)例:i+; -j;Page 17基本(jbn)数据类型和表达式第17页/共102页第十七页,共103页。1818赋值运算符和赋值表达式赋值运算符和赋值表达式 简单简单(jindn)(jindn)(jindn)(jindn)的赋值运算符的赋值运算符=举例(j l)n = n + 5表达式的类型等号左边对象的类型表达式的值等号左边对象被赋值后的值Page 18基本(jbn)数据类型和表达式第18页/共102页第十八页,共103页。1919赋值运算符和赋值表达式赋值运算符和赋值表达式 复合复合(fh)(fh)(fh)(fh)的赋值运算符的赋值运算符有10种复合(fh)运算符:+

14、=, -=, *=, /=, %=,=, &=, =, |= 例a += 3 等价于 a = a + 3x *= y + 8 等价于 x = x * (y + 8)基本(jbn)数据类型和表达式第19页/共102页第十九页,共103页。2020赋值运算符和赋值表达式赋值运算符和赋值表达式 赋值表达式举例赋值表达式举例(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 = 1

15、0) / (c = 2)表达式值为5,a为5,b为10,c为2a += a -= a * a 相当于 a = a + (a = a - a * a)Page 20基本(jbn)数据类型和表达式第20页/共102页第二十页,共103页。2121逗号逗号(duho)(duho)(duho)(duho)运算和逗号运算和逗号(duho)(duho)(duho)(duho)表达式表达式格式表达式1,表达式2求解顺序及结果(ji gu)先求解1,再求解2,最终结果(ji gu)为表达式2的值例a = 3 * 5 , a * 4 最终结果(ji gu)为60Page 21基本(jbn)数据类型和表达式第21

16、页/共102页第二十一页,共103页。2222关系(gunx)运算与关系(gunx)表达式关系运算是比较简单的一种逻辑运算,优先次序为: = = != 优先级相同(高) 优先级相同(低) 关系表达式是一种最简单的逻辑表达式其结果(ji gu)类型为 bool,值只能为 true 或 false。例如:a b,c b) & (x y) 其结果(ji gu)类型为 bool,值只能为 true 或 false基本(jbn)数据类型和表达式第23页/共102页第二十三页,共103页。2424逻辑逻辑(lu j)(lu j)(lu j)(lu j)运算与逻辑运算与逻辑(lu j)(lu j)(lu j

17、)(lu j)表达式表达式 “&”“&”的的“短路特性短路特性” 表达式表达式1&1&表达式表达式2 2 先求解表达式先求解表达式1 1 若表达式若表达式1 1的值为的值为falsefalse,则最终,则最终(zuzhn)(zuzhn)结果为结果为falsefalse,不再求解表达式,不再求解表达式2 2 若表达式若表达式1 1的结果为的结果为truetrue,则求解表达式,则求解表达式2 2,以表达式,以表达式2 2的结果作为最终的结果作为最终(zuzhn)(zuzhn)结果结果 “|”“|”也具有类似的特性也具有类似的特性基本(jbn)数据类型和表达式第24页/共102页第二十四页,共10

18、3页。2525条件条件(tiojin)(tiojin)(tiojin)(tiojin)运算符与条件运算符与条件(tiojin)(tiojin)(tiojin)(tiojin)表达式表达式一般形式表达式1?表达式2:表达式3表达式1必须是bool类型执行顺序先求解(qiji)表达式1,若表达式1的值为true,则求解(qiji)表达式2,表达式2的值为最终结果若表达式1的值为false,则求解(qiji)表达式3,表达式3的值为最终结果例:x=ab?a:b;基本(jbn)数据类型和表达式第25页/共102页第二十五页,共103页。2626条件条件(tiojin)(tiojin)(tiojin)(

19、tiojin)运算符与条件运算符与条件(tiojin)(tiojin)(tiojin)(tiojin)表达式表达式注意:条件运算符优先级高于赋值运算符,低于逻辑(lu j)运算符表达式2、3的类型可以不同,条件表达式的最终类型为 2 和 3 中较高的类型。例: x = a b ? a : b;基本(jbn)数据类型和表达式第26页/共102页第二十六页,共103页。2727sizeof运算符语法形式(xngsh)sizeof (类型名)或 sizeof 表达式结果值:“类型名”所指定的类型或“表达式”的结果类型所占的字节数。例:sizeof(short)sizeof x基本(jbn)数据类型和

20、表达式第27页/共102页第二十七页,共103页。2828位运算位运算(yn sun)(yn sun)(yn sun)(yn sun)按位与(按位与(& & & &)运算(yn sun)规则将两个运算(yn sun)量的每一个位进行逻辑与操作举例:计算 3 & 5 3: 0 0 0 0 0 0 1 1 5:(&) 0 0 0 0 0 1 0 13 & 5: 0 0 0 0 0 0 0 1用途:将某一位置0,其他位不变。例如:将char型变量a的最低位置0: a = a & 0xfe;取指定位。例如:有char c; int a; 取出a的低字节,置于c中:c=a & 0xff;基本(jbn)数

21、据类型和表达式第28页/共102页第二十八页,共103页。2929位运算位运算(yn sun)(yn sun)(yn sun)(yn sun)按位或(按位或(| | | |)运算规则将两个运算量的每一个位进行逻辑或操作举例:计算 3 | 5 3: 0 0 0 0 0 0 1 1 5:(|) 0 0 0 0 0 1 0 13 | 5: 0 0 0 0 0 1 1 1用途:将某些(mu xi)位置1,其他位不变。例如:将 int 型变量 a 的低字节置 1 : a = a | 0xff;基本(jbn)数据类型和表达式第29页/共102页第二十九页,共103页。3030位运算位运算(yn sun)(

22、yn sun)(yn sun)(yn sun)按位异或(按位异或( )运算规则两个操作数进行(jnxng)异或:若对应位相同,则结果该位为 0,若对应位不同,则结果该位为 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基本(jbn)数据类型和表达式第30页/共102页第三十页,共103页。3131位运算位运算(yn sun)(yn sun)(yn sun)(yn sun)按位异或(按位异或( )用途:使特定(tdng)位翻转(与0异或保持原值,与1异或取反) 例如:要使 0

23、1111010 低四位翻转: 0 1 1 1 1 0 1 0 ()0 0 0 0 1 1 1 10 1 1 1 0 1 0 1基本(jbn)数据类型和表达式第31页/共102页第三十一页,共103页。3232位运算位运算(yn sun)(yn sun)(yn sun)(yn sun)取反取反()()()()单目运算符,对一个(y )二进制数按位取反。例: 025:0000000000010101 025:1111111111101010基本(jbn)数据类型和表达式第32页/共102页第三十二页,共103页。3333位运算位运算(yn sun)(yn sun)(yn sun)(yn sun)移

24、位移位左移运算()右移后,低位:舍弃高位(o wi):无符号数:补0 有符号数:补“符号位”基本(jbn)数据类型和表达式第33页/共102页第三十三页,共103页。3434运算符优先级括号+,-,sizeof*, /, %+, -=, !=位运算(yn sun)&|?:赋值运算(yn sun)逗号运算(yn sun)低高基本(jbn)数据类型和表达式第34页/共102页第三十四页,共103页。3535混合运算时数据类型的转换(zhunhun)隐含转换(zhunhun)一些二元运算符(算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符)要求两个操作数的类型一致。在算术运算和关系运算中如果

25、参与(cny)运算的操作数类型不一致,编译系统会自动对数据进行转换(即隐含转换),基本原则是将低类型数据转换为高类型数据。char,short,int,unsigned,long,unsigned long,float,double低 高基本(jbn)数据类型和表达式第35页/共102页第三十五页,共103页。3636混合运算(ynsun)时数据类型的转换隐含转换当参与运算的操作数必须是bool型时,如果操作数是其它类型,编译系统会自动将非0数据转换为true,0转换为false。将低类型数据转换为高类型数据;位运算的操作数必须是整数(zhngsh),当二元位运算的操作数是不同类型的整数(zh

26、ngsh)时,也会自动进行类型转换,赋值运算要求左值与右值的类型相同,若类型不同,编译系统会自动将右值转换为左值的类型。基本(jbn)数据类型和表达式第36页/共102页第三十六页,共103页。3737混合(hnh)运算时数据类型的转换显式转换语法形式(xngsh)(3种):类型说明符(表达式)(类型说明符)表达式类型转换操作符(表达式)类型转换操作符可以是:const_cast、dynamic_cast、reinterpret_cast、static_cast显式类型转换的作用是将表达式的结果类型转换为类型说明符所指定的类型。例:int(z), (int)z, static_cast(z)三

27、种完全等价基本(jbn)数据类型和表达式第37页/共102页第三十七页,共103页。3838语句(yj)空语句(yj)声明语句(yj)表达式语句(yj)选择语句(yj)循环语句(yj)跳转语句(yj)复合语句(yj)标号语句(yj) 第38页/共102页第三十八页,共103页。3939表达式语句表达式语句(yj)(yj)(yj)(yj)格式:表达式;表达式语句与表达式的区别:表达式可以包含(bohn)在其他表达式中,而语句不可。例如:if (a = b) 0) t = a;不可写为:if (a = b;) 0) t = a;语 句第39页/共102页第三十九页,共103页。4040复合(fh)

28、语句将多个语句用一对大括号包围,便构成(guchng)一个复合语句例如sum=sum+i;i+;语 句第40页/共102页第四十页,共103页。4141简单的输入(shr)、输出向标准(biozhn)输出设备(显示器)输出例:int x; cout x= x;第41页/共102页第四十一页,共103页。4242顺序结构分支(fnzh)结构循环结构算法(sunf)的基本控制结构第42页/共102页第四十二页,共103页。4343如何解决分支(fnzh)问题?例2-2输入(shr)一个年份,判断是否闰年。算法(sun f)的基本控制结构第43页/共102页第四十三页,共103页。#include

29、using namespace std;int main() 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“ y) cout y) cout x; else cout y;if (表达式1) 语句(yj)1else if (表达式2) 语句(yj)2else if (表达式3)

30、 语句(yj)3 else 语句(yj) n if if if if 语句语句(yj)(yj)(yj)(yj) 三种形式三种形式算法(sun f)的基本控制结构第46页/共102页第四十六页,共103页。4747如何解决(jiju)多分问题?例2-3 输入(shr)两个整数,比较两个数的大小。算法(sun f)的基本控制结构第47页/共102页第四十七页,共103页。#includeusing namespace std;int main() int x, y;cout x y;if (x != y)if (x y)cout y endl;elsecout x y endl;elsecout

31、x = y endl;return 0;48第48页/共102页第四十八页,共103页。运行(ynxng)结果1:Enter x and y:5 8x y49第49页/共102页第四十九页,共103页。5050一般形式if( ) if( ) 语句 1 else 语句 2else if( ) 语句 3 else 语句 4注意语句 1、2、3、4 可以(ky)是复合语句,每层的 if 与 else 配对,或用 来确定层次关系。if if 语句 嵌套算法(sun f)的基本控制结构第50页/共102页第五十页,共103页。5151特殊的多分支(fnzh)结构例2-4输入一个(y )06的整数,转换成

32、星期输出。算法(sun f)的基本控制结构第51页/共102页第五十一页,共103页。#include using namespace std;int main() int day;cin day;switch (day) case 0: cout Sunday endl; break; case 1: cout Monday endl; break; case 2: cout Tuesday endl; break; case 3: cout Wednesday endl; break; case 4: cout Thursday endl; break; case 5: cout Frid

33、ay endl; break; case 6: cout Saturday endl; break; default: cout Day out of range Sunday . Saturday endl; break;return 0;52第52页/共102页第五十二页,共103页。5353一般形式(xngsh)switch (表达式) case 常量表达式 1:语句1 case 常量表达式 2:语句2 case 常量表达式 n:语句n default : 语句n+1 switch switch switch switch 语句语句(yj)(yj)(yj)(yj)l执行顺序执行顺序(sh

34、nx)(shnx)l以以casecase中的常量表达式值为入口标号,由此中的常量表达式值为入口标号,由此开始顺序开始顺序(shnx)(shnx)执行。因此,每个执行。因此,每个casecase分分支最后应该加支最后应该加breakbreak语句。语句。每个常量表达式的值不能相同,次序不影响执行结果。可以是多个语句,但不必用 。可以是整型、字符型、枚举型算法的基本控制结构第53页/共102页第五十三页,共103页。5454使用switchswitch语句应注意(zh (zh y)y)的问题case分支可包含多个语句,且不用 。表达式、判断值都是int型或char型。若干分支执行内容相同(xin

35、tn)可共用一组语句。算法(sun f)的基本控制结构第54页/共102页第五十四页,共103页。5555如何有效地完成(wnchng)重复工作例2-5求自然数110之和分析:本题需要用累加算法,累加过程是一个循环过程,可以(ky)用while语句实现。算法(sun f)的基本控制结构第55页/共102页第五十五页,共103页。#include using namespace std;int main() int i = 1, sum = 0; while (i = 10) sum += i; /相当于sum = sum + i; i+; cout sum = sum endl;return

36、0;运行(ynxng)结果:sum=5556第56页/共102页第五十六页,共103页。5757while while while while 语句语句(yj)(yj)(yj)(yj)形式(xngsh)while (表达式) 语句可以是复合语句,其中必须含有改变条件表达式值的语句。l执行顺序执行顺序l先判断先判断(pndun)(pndun)表达式的值,若为表达式的值,若为 true true 时,执行语句。时,执行语句。算法的基本控制结构第57页/共102页第五十七页,共103页。5858先执行循环体,后判断(pndun)条件的情况例2-6 输入(shr)一个整数,将各位数字反转后输出。算法(

37、sun f)的基本控制结构第58页/共102页第五十八页,共103页。#include using namespace std;int main() int n, right_digit, newnum = 0; cout n; cout The number in reverse order is ;do right_digit = n % 10;cout right_digit;n /= 10; /相当于n=n/10 while (n != 0); cout endl;return 0;59第59页/共102页第五十九页,共103页。运行(ynxng)结果:Enter the number

38、: 365The number in reverse order is 56360第60页/共102页第六十页,共103页。6161do-while do-while do-while do-while 语句语句(yj)(yj)(yj)(yj)一般形式(xngsh)do 语句while (表达式)可以是复合语句,其中必须含有改变条件表达式值的语句。l执行顺序执行顺序l先执行循环体语句,后判断条件先执行循环体语句,后判断条件(tiojin)(tiojin)。表达式为表达式为 true true 时,继续执行循环体时,继续执行循环体l与与whilewhile语句的比较:语句的比较:lwhile w

39、hile 语句执行顺序语句执行顺序 先判断表达式的值,为先判断表达式的值,为truetrue时,再执行时,再执行语句语句算法的基本控制结构第61页/共102页第六十一页,共103页。对比(dub)下列程序:程序(chngx)1:#include using namespace std;int main() int i=1, sum = 0; while (i = 10) sum += i; i+; cout sum= sum endl; return 0;算法(sun f)的基本控制结构程序2:#include using namespace std;int main() int i=1, s

40、um = 0; do sum += i; i+; while (i = 10); cout sum= sum endl; return 0;62第62页/共102页第六十二页,共103页。6363for for 语句(yj)(yj)既可以用于循环次数已知,也可用于次数未知语法形式(xngsh)for (初始语句;表达式1;表达式2) 语句 循环前先求解为true时执行(zhxng)循环体循环控制条件每次执行完循环体后求解算法的基本控制结构第63页/共102页第六十三页,共103页。6464例2-8输入一个(y)整数,求出它的所有因子。算法(sun f)的基本控制结构第64页/共102页第六十四

41、页,共103页。#include using namespace std;int main() int n;cout n;cout Number n Factors ;for (int k = 1; k = n; k+) if (n % k = 0) cout k ; cout endl; return 0;65第65页/共102页第六十五页,共103页。运行(ynxng)结果1:Enter a positive integer: 36Number 36 Factors 1 2 3 4 6 9 12 18 36 运行(ynxng)结果2:Enter a positive integer: 7N

42、umber 7 Factors 1 7 66第66页/共102页第六十六页,共103页。6767例2-9编写程序输出以下(yxi)图案 * * * * * * *算法(sun f)的基本控制结构第67页/共102页第六十七页,共103页。#include using namespace std;int main() const int N = 4;for (int i = 1; i = N; i+) /输出前4行图案(t n) for (int j = 1; j = 30; j+) cout ;/在图案(t n)左侧空30列 for (int j = 1; j = 8 - 2 * i; j+)

43、 cout ; for (int j = 1; j = 2 * i - 1; j+) cout *; cout endl;68第68页/共102页第六十八页,共103页。/输出(shch)后3行图案for (int i = 1; i = N - 1; i+) for (int j = 1; j = 30; j+) cout ; /在图案左侧空30列 for (int j = 1; j = 7 - 2 * i ;j+) cout *; cout endl;return 0;69第69页/共102页第六十九页,共103页。7070循环结构与选择(xunz)结构相互嵌套#include using

44、namespace std;int main() for (int n = 100; n = 200; n+) if (n % 3 != 0) cout n; return 0;算法(sun f)的基本控制结构第70页/共102页第七十页,共103页。7171例例2-102-102-102-10读入一系列整数,统计出正整数个数i和负整数个数j,读入0则结束。分析:需要读入一系列整数,但是整数个数不定,要在每次读入之后(zhhu)进行判断,因此使用while循环最为合适。循环控制条件应该是n!=0。由于要判断数的正负并分别进行统计,所以需要在循环内部嵌入选择结构。算法(sun f)的基本控制结构

45、第71页/共102页第七十一页,共103页。#include using namespace std;int main() int i = 0, j = 0, n;cout Enter some integers please (enter 0 to quit): n;while (n != 0) if (n 0) i += 1; if (n n;cout Count of positive integers: i endl;cout Count of negative integers: j endl;return 0;72第72页/共102页第七十二页,共103页。7373break br

46、eak break break 和和 continue continue continue continue 语句语句(yj)(yj)(yj)(yj)break语句(yj)使程序从循环体和switch语句(yj)内跳出,继续执行逻辑上的下一条语句(yj)。不宜用在别处。continue 语句(yj)结束本次循环,接着判断是否执行下一次循环。算法(sun f)的基本控制结构第73页/共102页第七十三页,共103页。7474typedef语句(yj)为一个已有的数据类型另外命名语法形式(xngsh)typedef 已有类型名 新类型名表;例如typedef double Area, Volume

47、;typedef int Natural;Natural i1, i2;Area a;Volume v;自定义数据类型第74页/共102页第七十四页,共103页。7575枚举(mij)类型enum只要将需要的变量值一一列举出来,便构成了一个(y )枚举类型。枚举类型的声明形式如下:enum 枚举类型名 变量值列表;例如:enum WeekdaySUN, MON, TUE, WED, THU, FRI, SAT;自定义数据类型第75页/共102页第七十五页,共103页。7676枚举(mij)类型enum枚举类型应用说明:对枚举元素按常量处理,不能对它们赋值。例如,不能写:SUN = 0;枚举元素

48、具有(jyu)默认值,它们依次为: 0,1,2,.。也可以在声明时另行指定枚举元素的值,如:enum WeekdaySUN=7,MON=1,TUE,WED,THU,FRI,SAT;枚举值可以进行关系运算。整数值不能直接赋给枚举变量,如需要将整数赋值给枚举变量,应进行强制类型转换。自定义数据类型第76页/共102页第七十六页,共103页。7777例2-11设某次体育比赛的结果有四种可能:胜(WIN)、负(LOSE)、平局(TIE)、比赛取消(CANCEL),编写程序顺序输出这四种情况。分析:由于比赛结果只有四种可能,所以可以声明一个枚举(mi j)类型,声明一个枚举(mi j)类型的变量来存放比

49、赛结果。自定义数据类型第77页/共102页第七十七页,共103页。#include using namespace std;enum GameResult WIN, LOSE, TIE, CANCEL;int main() GameResult result;enum GameResult omit = CANCEL;/可不用(byng)关键字enmumfor (int count = WIN; count = CANCEL; count+) result = GameResult(count); if (result = omit) cout The game was cancelled e

50、ndl; else cout The game was played ; if (result = WIN) cout and we won!; if (result = LOSE) cout and we lost.; cout endl; return 0;78第78页/共102页第七十八页,共103页。运行(ynxng)结果 The game was played and we won! The game was played and we lost. The game was played The game was cancelled79第79页/共102页第七十九页,共103页。80

51、80结构(jigu)体结构(jigu)的声明结构的概念结构是由不同数据类型(lixng)的数据组成的集合体。声明结构类型(lixng) struct 结构名 数据类型(lixng) 成员名 1; 数据类型(lixng) 成员名 2; 数据类型(lixng) 成员名 n; ;自定义数据类型第80页/共102页第八十页,共103页。8181结构(jigu)体结构(jigu)的声明举例:struct Student /学生信息结构体 int num; /学号 char name20; /姓名 char gender; /性别 int age; /年龄 float score; /成绩(chngj)

52、char addr40; /住址;自定义数据类型第81页/共102页第八十一页,共103页。8282结构(jigu)体结构(jigu)变量说明变量说明形式结构名 结构变量名;注意:结构变量的存储(cn ch)类型概念、它的寿命、可见性及使用范围与普通变量完全一致。结构变量说明在结构类型声明之后,二者也可同时进行。结构变量占内存大小可用 sizeof 运算求出: sizeof(类型名或变量名)自定义数据类型第82页/共102页第八十二页,共103页。8383结构体结构变量(binling)的初始化和使用初始化说明结构变量的同时可以直接(zhji)设置初值。使用结构体成员的引用形式:结构变量名.成

53、员名自定义数据类型第83页/共102页第八十三页,共103页。8484例2-12结构体变量的初始化和使用#include #include #include using namespace std;struct Student /学生信息结构体 int num;/学号 char name20;/姓名 char gender;/性别 int age;/年龄 stu = 97001, Lin Lin, F, 19 ;int main() cout setw(7) stu.num setw(20) stu.name setw(3) stu.sex setw(3) stu.age; return 0;

54、/ setw()用来设置输出(shch)间隔的自定义数据类型运行运行(ynxng)(ynxng)结果结果: : 97001 Lin Lin F 19 97001 Lin Lin F 19第84页/共102页第八十四页,共103页。8585联合体声明形式:union 联合名 数据类型 成员名 1; 数据类型 成员名 2; : 数据类型 成员名 n; ;联合体类型变量(binling)说明的语法形式联合名 联合变量(binling)名;引用形式:联合名.成员名自定义数据类型第85页/共102页第八十五页,共103页。8686例: union UArea char cData; short sDat

55、a; long lData;UAreacDatalDatasData联合体共用(nyn)一组内存单元自定义数据类型第86页/共102页第八十六页,共103页。8787无名(wmng)联合无名联合没有标记名,只是声明一个成员项的集合,这些成员项具有相同的内存地址,可以由成员项的名字直接(zhji)访问。例:union int i; float f;在程序中可以这样使用:i = 10;f = 2.2;自定义数据类型第87页/共102页第八十七页,共103页。88变量(binling)是如何工作的?站在目标代码的角度( jiod)上看问题变量具有两个重要属性数据类型和变量名它们都用文字表示,便于人们

56、理解,但不便于CPU识别,因此它们不能出现在目标代码中;下面将讨论它们在目标代码中的表示方式。88深度(shnd)探索第88页/共102页第八十八页,共103页。89变量(binling)是如何工作的?变量名源代码中,变量依靠变量名来标识;目标代码中,变量依靠地址(dzh)来标识,每个变量的地址(dzh)互不相同。89深度(shnd)探索inta,b;intmain()a+;b+;return0;incl0x80495f8incl0x80495fc地址第89页/共102页第八十九页,共103页。90变量是如何(rh)工作的?数据类型任何数据在内存中都是用二进制串的形式表示的;一串二进制数,只有

57、确定了类型,才有真实(zhnsh)的含义;例:10111111,10000000,00000000,00000000解释为int型:-1,082,130,432解释为unsigned型:3,212,836,864解释为float型:-1.090深度(shnd)探索第90页/共102页第九十页,共103页。91变量(binling)是如何工作的?目标代码体现(txin)数据类型的方式类型的特性蕴含于操作之中;对不同数据类型,源代码中形式上相同的操作,会被转化为目标代码中的不同操作。91深度(shnd)探索91inta;shortb;charc;intmain()a+;b+;c+;return0;

58、incl0x80495f8incw0x80495fcincb0x80495fe不同的操作第91页/共102页第九十一页,共103页。92变量是如何(rh)工作的?变量的声明将一个标识符声明为变量,告诉编译器这个标识符表示变量,同时还指出了它的数据类型;只有确定了一个变量的数据类型,变量参与(cny)的操作才具有完整的意义,编译器才能将该变量参与(cny)的表达式翻译为合适的操作。变量的定义不仅确定了一个标识符表示变量,以及该变量的类型,还确定了变量地址的分配位置。92深度(shnd)探索第92页/共102页第九十二页,共103页。93表达式的执行(zhxng)原理什么是寄存器?CPU内部(ni

59、b)的存储单元读写速度非常快数量很少IA-32有eax、ebx、ecx、edx、esp、ebp、esi、edi八个通用寄存器大部分CPU指令都需要读写寄存器。复杂的表达式,分步执行,每条指令只能做一次基本运算,中间结果暂存在寄存器中。93深度(shnd)探索第93页/共102页第九十三页,共103页。94表达式的执行(zhxng)原理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,0x80495e0movl$0xa,0x804

60、95e494深度(shnd)探索把4存入地址0x80495d8中0x80495d8:a变量(binling)0x80495dc:b变量(binling)0x80495e0:c变量(binling)0x80495e4:d变量(binling)0x80495e8:e变量(binling)第94页/共102页第九十四页,共103页。95表达式的执行(zhxng)原理inta,b,c,d;inte;intmain()a=4;b=2;c=1;d=10;e=(a+b)*(c-d);return0;mov0x80495dc,%eaxmov0x80495d8,%ecxadd%eax,%ecxmov0x8049

61、5e4,%edxmov0x80495e0,%eaxsub%edx,%eaximul%ecx,%eaxmov%eax,0x80495e895深度(shnd)探索把0x80495dc地址的值放到eax寄存器中0x80495d8:a变量(binling)0x80495dc:b变量(binling)0x80495e0:c变量(binling)0x80495e4:d变量(binling)0x80495e8:e变量(binling)ecxecx + eaxeaxeax - edxeax(ecx * eax)的低32位第95页/共102页第九十五页,共103页。96结构(jigu)体的位成员结构体中位成员的

62、声明形式数据类型说明符成员名:位数;位成员的作用通过“打包”,使结构体的不同成员共享相同的字节,从而节省( jishng)存储空间。注意事项具体的打包方式,因编译器而异;只有bool、char、int和枚举类型的成员,允许定义为位成员;节省( jishng)空间,但可能牺牲时间。96深度(shnd)探索第96页/共102页第九十六页,共103页。97例2-15设计一个结构体存储学生的成绩信息,需要包括学号、年级和成绩三项内容(nirng),学号的范围是0到99,999,999,年级分为freshman、sophomore、junior、senior四种,成绩包括A、B、C、D四个等级。97深度

63、(shnd)探索第97页/共102页第九十七页,共103页。98例2-15#include using namespace std;enum Level FRESHMAN, SOPHOMORE, JUNIOR, SENIOR ;enum Grade A, B, C, D ;struct Student unsigned number : 27;Level level : 2;Grade grade : 2;int main() Student s = 12345678, SOPHOMORE, B ;cout Size of Student: sizeof(Student) endl;cout

64、Number: s.number endl;cout Level: “;98第98页/共102页第九十八页,共103页。99例2-15switch (s.level) case FRESHMAN: cout freshman; break;case SOPHOMORE: cout sophomore; break;case JUNIOR: cout junior; break;case SENIOR: cout senior; break;cout endl;cout Grade: ;switch (s.grade) case A: cout A; break;case B: cout B;

65、break;case C: cout C; break;case D: cout D; break;cout endl;return 0;99第99页/共102页第九十九页,共103页。100例2-15运行结果:(运行结果第一行会因编译(biny)环境的不同而有所差异)SizeofStudent:4Number:12345678Level:sophomoreGrade:B100第100页/共102页第一百页,共103页。101101小结(xioji)与复习建议主要内容C+语言概述、基本数据类型和表达式、数据的输入(shr)与输出、算法的基本控制结构、自定义数据类型达到的目标掌握C+语言的基本概

66、念和基本语句,能够编写简单的程序段。实验任务实验二第101页/共102页第一百零一页,共103页。102感谢您的欣赏(xnshng)!第102页/共102页第一百零二页,共103页。内容(nirng)总结1。大小写的英文字母:AZ,az。不同类型数据进行混合运算时,C+编译器会自动进行类型转换。算术运算符与算术表达式。逗号运算和逗号表达式。“|”也具有类似的特性。|。sum=sum+i。从标准输入设备(键盘)输入。输入两个整数,比较两个数的大小。表达式、判断(pndun)值都是int型或char型。for 语句既可以用于循环次数已知,也可用于次数未知。对枚举元素按常量处理,不能对它们赋值。感谢您的欣赏第一百零三页,共103页。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号