




已阅读5页,还剩94页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章C+简单程序设计,清华大学,C+语言程序设计,.,2,本章主要内容,C+语言概述基本数据类型和表达式数据的输入与输出算法的基本控制结构自定义数据类型,.,3,C+语言的起源,BjarneStroustrup用Simula语言写了一个模拟器。程序编写顺利,但Simula的实现太糟,编译与运行非常慢。好工具:1.具有Simula那样对程序组织的支持,类、类的层次结构等;2.编译、运行速度快;3.可移植性好C非常流行,很多操作系统都是用C编写,移植性和灵活性非常好。C+语言的设计是想为系统程序设计提供Simula的程序组织功能,又提供C语言的高效与灵活性。该目标当时不具有任何创新性,但它非常成功。,C+语言概述,.,4,C+语言的产生,C+是从C语言发展演变而来的,首先是一个更好的C引入了类的机制,最初的C+被称为“带类的C”1983年正式取名为C+从1989年开始C+语言的标准化工作于1994年制定了ANSIC+标准草案于1998年11月被国际标准化组织(ISO)批准为国际标准。2003年发布了C+标准第二版,成为目前的C+C+仍在不断发展,下一次标准发布预计在2009年,C+语言概述,.,5,C+的特点,全面兼容C它保持了C的简洁、高效和接近汇编语言等特点对C的类型系统进行了改革和扩充C+也支持面向过程的程序设计,不是一个纯正的面向对象的语言支持面向对象的方法,C+语言概述,.,6,C+语言同Java和C#的关系,C+是Java和C的始祖,语法和面向对象模式相似。C+、Java和C#是为解决不同类型问题而设计的。C+主要用来编写高性能软件。Java和C#用于实现有跨平台需求的应用开发。,.,7,C+程序实例例2-1,/*2_1.cppc+程序结构由注释、编译预处理和程序主体组成*/#includeusingnamespacestd;intmain()/main()函数是C+程序入口点,必须coutHello!n;/cout是预定义的流类对象coutWelcometoc+!n;/r;/输入圆的半径length=2*PI*r;/计算圆的周长cout“Length=”lengthendl;/输出圆的周长area=PI*r*r;/计算圆的面积coutArea=areay;,.,13,数据类型C+基本数据类型,整数类型:short,int,long,unsignedint,unsignedshort,unsignedlong实数类型:float,double,longdouble字符类型:char布尔型:bool,.,14,数据类型常量与变量,常量是指在程序运行的整个过程中其值始终不可改变的量。变量是指在程序的执行过程中其值可以变化的量,变量是需要用名字来标识的。变量一定要先声明其类型和名称,然后才使用。符号常量在使用前也要先声明,而且声明的同时就要初始化。程序中常量不能再被赋值。常量和变量都有数据类型。,.,15,数据类型常量与变量,#includeusingnamespacestd;intmain()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;,Page15,基本数据类型和表达式,.,16,#includeusingnamespacestd;intmain()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;,数据类型整型数据,整型常量,shortunsignedshort2字节int、unsignedint4字节longunsignedlong4字节,整型变量,基本数据类型和表达式,.,17,数据类型整型数据及取值范围,类型说明符位数数值范围短整short16-3276832767基本int32-231(231-1)长整long32-231(231-1)无符号unsignedshort16065535unsignedint320(232-1)unsignedlong320(232-1),基本数据类型和表达式,.,18,数据类型整型数值溢出例子,#includeusingnamespacestd;intmain()shortinti;/signedshort类型整数(-32768-32767)shortunsignedintj;/unsignedshort类型整数(0-65535)j=50000;i=j;/将unsignedshort赋值给signedshort变量coutTheshortintis:iendl;/整型数值溢出coutTheshortunsignedintis:jendl;return0;Theshortintis:-15536Theshortunsignedintis:50000,.,19,#includeusingnamespacestd;intmain()constintPRICE=30;intnum,total;floatv,r,h;num=10;total=num*PRICE;couttotalendl;r=2.5;h=3.2f;v=3.14159*r*r*h;coutv=,intmain()doublex=10/7.0;coutx=xendl;if(x=1.142857142857)coutx=10/7.0n;/存在四舍五入带来的逻辑错误elsecoutb?a:b;,基本数据类型和表达式,.,35,sizeof运算符,语法形式sizeof(类型名)或sizeof(表达式)结果值:“类型名”所指定的类型或“表达式”的结果类型所占的字节数。例:sizeof(short)sizeof(x),基本数据类型和表达式,.,36,位运算按位与(,基本数据类型和表达式,.,38,位运算按位异或(),运算规则两个操作数进行异或:若对应位相同,则结果该位为0,若对应位不同,则结果该位为1,举例:计算071052071:00111001052:()00101010071052:00010011,基本数据类型和表达式,.,39,位运算按位异或(),用途:使特定位翻转(与0异或保持原值,与1异或取反)例如:要使01111010低四位翻转:01111010()0000111101110101,基本数据类型和表达式,.,40,位运算取反(),单目运算符,对一个二进制数按位取反。例:025:0000000000010101025:1111111111101010,基本数据类型和表达式,.,41,位运算移位,左移运算()右移后,低位:舍弃高位:无符号数:补0有符号数:补“符号位”,基本数据类型和表达式,.,42,运算符优先级,括号+,-,sizeof*,/,%+,-=,!=位运算inta=1,b=5;c=float(a)/float(b);或c=(float)a/(float)b;,基本数据类型和表达式,.,46,语句,语句是程序的基本组成单元,它实现了程序的功能,表达式是为语句所用。声明语句表达式语句选择语句循环语句复合语句,.,47,表达式语句,格式:表达式;表达式语句与表达式的区别:表达式可以包含在其它表达式中,而语句不可。例:if(a=b)0)t=a;不可写为:if(a=b;)0)t=a;/error,语句,.,48,复合语句,将多条语句用一对大括号包围,便构成一个复合语句。例如sum=sum+i;i+;,语句,.,49,顺序结构分支结构循环结构,算法的基本控制结构,.,50,如何解决分支问题?,例2-2输入一个年份,判断是否闰年。如果是闰年,输出闰年信息;如果不是闰年,输出不是闰年信息。,算法的基本控制结构,#includeusingnamespacestd;intmain()intyear;boolIsLeapYear;coutyear;IsLeapYear=(year%4=0,51,运行结果:Entertheyear:20002000isaleapyear,52,.,53,if(表达式)语句例:if(xy)couty)coutx;elsecouty;if(xy)coutyendl;elseif(xy)coutxyendl;elsecoutx=yday;switch(day)case0:cout“星期日,购物endl;break;case1:cout“星期一,微积分课endl;break;case2:cout“星期二,物理课endl;break;case3:cout“星期三,英语课endl;break;case4:cout“星期四,班会endl;break;case5:cout“星期五,体育endl;break;case6:cout“星期六,老乡聚会endl;break;default:cout“数据非法。endl;return0;,59,.,60,一般语法形式switch(表达式)case常量表达式1:语句1case常量表达式2:语句2case常量表达式n:语句ndefault:语句n+1,switch语句,执行顺序以case中的常量表达式值为入口标号,由此开始顺序执行。因此,每个case分支最后应该加break语句。,算法的基本控制结构,.,61,使用switch语句应注意的问题,case分支可包含多个语句,且不用。表达式、判断值都是int型或char型。若干分支执行内容相同可共用一组语句。,算法的基本控制结构,.,62,如何有效地完成重复工作,例2-5求自然数110之和分析:本题需要用累加算法,累加过程是一个循环过程,可以用循环语句实现。While语句,do-while语句,for语句,算法的基本控制结构,#includeusingnamespacestd;intmain()inti(1),sum(0);while(i=10)sum+=i;/相当于sum=sum+i;i+;coutsum=sumn;coutThenumberinreverseorderis;doright_digit=n%10;/取出右边的数字coutright_digit;n/=10;while(n!=0);couti;while(i=10)sum+=i;i+;coutsum=sumi;dosum+=i;i+;while(i=10);coutsum=sumn;coutNumbernFactors;for(k=1;k=n;k+)if(n%k=0)/算法coutk;coutendl;return0;,72,运行结果1:Enterapositiveinteger:36Number36Factors123469121836运行结果2:Enterapositiveinteger:7Number7Factors17,73,.,74,例2-9编写程序输出以下图案,*,算法的基本控制结构,#includeusingnamespacestd;intmain()inti,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*;coutendl;,75,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*;coutendl;,76,.,77,循环结构与选择结构相互嵌套,#includeusingnamespacestd;intmain()intn;for(n=100;n=200;n+)if(n%3!=0)cout0)i+;if(nn;cout正整数个数:i负整数个数:jendl;,79,.,80,break和continue语句,break语句使程序从循环体和switch语句内跳出,继续执行逻辑上的下一条语句。不宜用在别处。continue语句结束本次循环,接着判断是否执行下一次循环。,算法的基本控制结构,.,81,#includeusingnamespacestd;intmain()coutTheevennumbersareasfollows:endl;for(inti=0;i=20;i+)if(i%2)continue;/break?/根据条件使用continue结束本次循环couti;return0;,.,82,自定义数据类型,C+语言不仅有丰富的内置基本数据类型,而且允许声明自定义数据类型。枚举类型结构类型联合类型类类型而且使用类型定义语句可以为一个已有数据类型定义多个别名。,.,83,typedef语句,为一个已有的数据类型另外命名,注意并没有实际定义一个新的数据类型。目的是增加程序的可读性。语法形式typedef已有类型名新类型名表;例如typedefunsignedintsize_t;size_tlen1;typedeflongtime_ttime_tstart_time;,自定义数据类型,.,84,枚举类型enum,只要将需要的变量值一一列举出来,便构成了一个枚举类型。枚举类型的声明形式如下:enum枚举类型名变量值列表;例如:enumweekdaySUN,MON,TUE,WED,THU,FRI,SAT;weekdaya1;a1=SUN;通常使用枚举方式创建符号常量。,自定义数据类型,.,85,枚举类型enum,枚举类型应用说明:对枚举元素按常量处理,不能对它们赋值。例如,不能写:SUN=0;枚举元素具有缺省值,它们依次为:0,1,2,.。也可以在声明时另行指定枚举元素的值,如:enumweekdaySUN=7,MON=1,TUE,WED,THU,FRI,SAT;枚举值可以进行关系运算。整数值不能直接赋给枚举变量,如需要将整数赋值给枚举变量,应进行强制类型转换。,自定义数据类型,.,86,例2-11,设某次体育比赛的结果有四种可能:胜(win)、负(lose)、平局(tie)、比赛取消(cancel),编写程序顺序输出这四种情况。分析:由于比赛结果只有四种可能,所以可以声明一个枚举类型,声明一个枚举类型的变量来存放比赛结果。,自定义数据类型,#includeusingnamespacestd;enumgame_resultWIN,LOSE,TIE,CANCEL;intmain()game_resultresult;game_resultomit=CANCEL;intcount;for(count=WIN;count=CANCEL;count+)result=(game_result)count;if(result=omit)coutThegamewascancelledn;elsecoutThegamewasplayed;if(result=WIN)coutandwewon!;if(result=LOSE)coutandwelost.;coutn;return0;,87,运行结果Thegamewasplayedandwewon!Thegamewasplayedandwelost.ThegamewasplayedThegamewascancelled,88,.,89,结构体结构的声明,结构的概念结构是由不同数据类型的数据组成的集合体。声明结构类型struct结构名数据类型成员名1;数据类型成员名2;:数据类型成员名n;;,自定义数据类型,.,90,结构体结构的声明,举例:structstudent/学生信息结构体intnum;/学号charname20;/姓名chargender;/性别intage;/年龄floatscore;/成绩stringaddr;/住址,自定义数据类型,.,91,结构体结构变量说明,变量说明形式结构类型名结构变量名;注意:结构变量的存储类型概念、它的寿命、可见性及使用范围与普通变量完全一致。结构变量说明在结构类型声明之后,二者也可同时进行。结构变量占内存大小可用sizeof运算求出。,自定义数据类型,.,92,结构体结构变量的初始化和使用,初始化说明结构变量的同时可以直接设置初值。使用结构体成员的引用形式:结构变量名.成员名,自定义数据类型,.,93,例2-12,结构体变量的初始化和使用#include#includeusingnamespacestd;structstudent/学生信息结构体intnum;/学号charname20;/姓名chargender;/性别intage;/年龄stu=97001,LinLin,F,1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年终止不定期劳动合同的规定与操作流程
- 项目立项案例题目及答案
- 叉车考试科目一的题目及答案
- 物体打击试题及答案
- 2024译林版八年级英语上册Unit 1 课时4 Grammar 分层作业(含答案)
- 营销策划岗位知识培训课件
- 2025年高考化学试题分类汇编:化学实验基础(解析版)
- 物流考试试题及答案2025
- 2025型钢租赁合同
- 物流的试题及答案
- T/CCS 063-2023井工煤矿智能化供排水系统运维管理规范
- DB36-T1694-2022-餐厨垃圾集约化养殖黑水虻技术规程-江西省
- 超市卫生管理规范培训
- 国际压力性损伤溃疡预防和治疗临床指南(2025年版)解读
- 中学生心理辅导活动课教案(合集)
- 《心律失常的诊断和治疗》课件
- 委托运营合作合同协议
- 违章作业培训课件
- 软件行业薪酬管理制度
- 门急诊管理制度
- 2025年中级消防设施操作员(维保)模拟试题题库(附答案)
评论
0/150
提交评论