C++程序设计开发教程课件_第1页
C++程序设计开发教程课件_第2页
C++程序设计开发教程课件_第3页
C++程序设计开发教程课件_第4页
C++程序设计开发教程课件_第5页
已阅读5页,还剩541页未读 继续免费阅读

下载本文档

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

文档简介

1第1章C++程序开发初步

2

C++程序开发初步最简单的C++程序结构函数类与对象C++程序开发过程与环境3程序设计中主要应用两大类模型面向过程的模型 概括为:数据结构+算法面向对象的模型 认为世界是由一些对象(objects)组成的,每一个对象包括属性和方法两部分;属性是描述对象特征的一些数据或数据结构,方法表明对象的变化或一个对象对其他对象的作用,对象间通过消息传递进行通信4最简单的C++程序结构一个简单的C++程序运算符与表达式数据类型变量与常量5一个简单的C++程序#include<iostream.h>intmain(){ intx,y,s; //定义3个整数:两个代表加数,一个代表和

cout<<“输入两个整数:”; //给用户发出输入两个数的提示

cin>>x>>y; //输入两个整数到x和y s=x+y; //将x和y相加,送到s中

cout<<“x+y=” //输出提示

<<s //输出s的值

<<endl; //换行,语句结束

return0;}6上例说明C++的注释符有:“//”后面与“/*”和“*/”之间的“;”是C++语句的结束符,表明一个语句的结束x”、“y”和“s”称为三个变量,是三个存储数据的空间的名字“cout”称为标准输出设备,通常指显示器“cin”称为标准输入设备,通常指键盘“endl”表示换行“#include”称为文件包含7运算符与表达式运算符是一种程序记号,它作用于操作数而触发某种操作由运算符和操作数组成的符号序列,就称为表达式8最基本的运算符算术运算符赋值运算符复合赋值运算符9运算符在表达式中的运算顺序运算符的优先级别运算符与操作数的结合方向运算符的先后排列顺序10各种运算符间的优先级别和结合性运算符结合性优先级别单目减:-←高低双目算术运算符:*/→+-→标准输入输出:>><<→赋值:=←11例1.1.1

#include<iostream.h>intmain(){intx,y;cout<<"x=3,y=8,x*=y+1:"<<(x=3,y=8,x*=y+1)<<endl;cout<<"x=3,y=8,x=x*y+1:"<<(x=3,y=8,x=x*y+1)<<endl;return0;}12++与--有两种使用形式前缀形式,即它们在操作数前,如++x,--x后缀形式,即它们在操作数后,如x++,x--++表达式与--表达式独立使用时,前缀形式与后缀形式无区别,但它们在表达式中被引用时,结果是不同的。前缀形式是先增(减)1,后被引用;后缀形式是先被引用,后增(减)113例1.1.2

#include<iostream.h>intmain(){intx,y;x=5,y=x++;//先引用后增1cout<<"x=5,y=x++:"<<y<<",x="<<x<<endl;x=5,y=++x;//先增1后引用

cout<<"x=5,y=++x:"<<y<<",x="<<x<<endl; return0;}14数据类型整型类型与实型类型字符类型字符串算术数据的类型转换sizeof运算符15数据的规范化为数据分配相应大小的存储空间;确定数据值的范围;确定数据的表示精度;确定数据可以进行的运算种类。16最常用的数据类型的比较数据类型关键字意义存储空间表数精度(有效数字)表数范围运算类型char字符8位+、-、%short短整数16位-32768~32767+、-、*、/、%int整数32位-2147483648~2147483647float单精度浮点32位7位

(3.4×10-38~3.4×1038)+、-、*、/、%double双精度浮点64位16位

(2.23×10-308~1.79×10308)longdouble长双精度80位18位±(3.37×10-4932~1.18×104932)17整型类型与实型类型

整型就是不带有小数点的数据类型C++还把整型数分为带符号和不带符号两大类实数一般用小数形式或科学记数法(指数形式)书写18C++的转义字符序列序列值字符功能\a0X07BEL警告响铃\b0X08BS退格\f0X0CFF走纸\n0X0ALF换行\r0X0DCR回车\t0X09HT水平制表\v0X0BVT垂直制表\\0X5c\反斜杠\'0X27'单引号\"0X22"双引号\?0X3F?问号\o整数任意0[L1]:最多为3位的八进制数字串\xH整数任意H:十六进制数字串19字符串字符串常量也称字符串文字或字符串,它们是括在一对双撇号内的字符序列字符串常量与字符型常量在内部存储上是不同的20算术数据的类型转换在表达式中,常常会发生数据类型的转换,即将数据由一种类型转换成另一种类型下面介绍这些类型转换规则。 常规转换 传送转换 用类型运算符进行显式转换21例1.1.4#include<iostream.h>intmain(){shortinta=-32768,b,i=1234567890;//i溢出

unsignedshortintua=32768,ub;cout<<"b=ua:"<<(b=ua)<<endl;//注意ua对int溢出

cout<<"ub=a:"<<(ub=a)<<endl;//注意有符号负数向无符号数转换

cout<<i;}22sizeof运算符sizeof是一个单目运算符,用以计算操作数在内存中占用的字节数。它的操作数可以是以下两种情况:

括在圆括号中的类型标识符 一个表达式sizeof运算符具有最高优先级,最高优先级中的运算符都是从右向左结合的23例1.1.5#include<iostream.h>intmain()//该程序在16位和32位系统中的运行结果不同!

{cout<<"sizeofunsignedchar:"<<sizeof(unsignedchar)<<endl;cout<<"sizeofchar:"<<sizeof(char)<<endl;cout<<"sizeofunsignedint:"<<sizeof(unsignedint)<<endl;cout<<"sizeofshortint:"<<sizeof(shortint)<<endl;cout<<"sizeofint:"<<sizeof(int)<<endl;cout<<"sizeofunsignedlong:"<<sizeof(unsignedlong)<<endl;cout<<"sizeoflong:"<<sizeof(long)<<endl;cout<<"sizeoffloat:"<<sizeof(float)<<endl;cout<<"sizeofdouble:"<<sizeof(double)<<endl;cout<<"sizeoflongdouble:"<<sizeof(longdouble)<<endl;}24变量与常量程序变量字面常量与符号常量25程序变量程序变量简称变量。变量有以下特点:变量指称了程序中使用的一个被命名存储区域(称程序实体),以存放可由程序修改的值,变量在某一时刻的值称为变量值。变量的名称为变量名。C++规定变量名由如下三种符号组成: 大小写字母——可用于变量名的任何位置; 下划线——可用于变量名的任何位置; 数字——不能用于变量名的首部。每个变量应属于一个特定的类型26例1.1.6#include<iostream.h>intmain(){inti; //声明i为整型

i=3; //给变量i赋值3cout<<"Thefirst\"i\"is:"<<i<<endl;i=5; //给变量i再赋值5cout<<"Thesecond\"i\"is:"<<i<<endl;cout<<"Enteranumber:";cin>>i; //由键盘给变量i输入一个值

cout<<"\nThelast\"i\"is:"<<i<<endl;}27字面常量与符号常量常量可以是字面常量(也称直接常量)或符号常量。前面使用的基本上都是字面常量下面介绍两种符号常量: (1)用const定义的符号常量 (2)用宏定义模拟符号常量28例1.1.7/******************************程序名:area_circum**功能:计算圆的面积与周长*******************************/#include<iostream.h>intmain(){floatfArea,fCircum;fArea=3.1415926*2.0*2.0;cout<<"Theareais:"<<fArea<<endl;fCircum=3.1415926*2.0*2.0;cout<<"Thecircumis:"<<fCircum<<endl;}29用宏定义模拟符号常量#include<iostream.h>#definePi3.1415926 //定义宏#definer2.0 //定义宏

intmain(){floatfArea,fCircum;fArea=Pi*r*r; //引用宏

cout<<"Theareais:"<<fArea<<endl;fCircum=2.0*Pi*r; //引用宏

cout<<"Thecircumferenceis:"<<fCircum<<endl;}30函数函数的意义与用法函数定义与函数结构函数原型与函数声明函数调用与内联函数传值调用与引用类型库函数应用31函数的意义与用法函数是C++程序中组织过程的机制。它对较大的程序比较有效。这里,主要介绍函数的用法,因此仍然使用前面介绍过的求圆的面积的例子,只不过用函数的形式来描述32例1.2.1#include<iostream.h>#definePi3.1415926 intmain(){floatflR=1.2,fArea;floatArea(float); //函数声明fArea=Area(flR); //函数调用cout<<"Theareais:"<<fArea<<endl;}floatArea(floatfR) //定义求圆面积的函数{ return(Pi*fR*fR);}33C++程序的一般结构系统调用返回系统f1()f11(){④{↓③↓⑤main()②f11();⑥}{↓⑦↓①}f21()f1();⑧{↓⑨f2()12↓13f2();10{}↓21↓1114}f21();f22()20↓1516{f22();↓17↓1918}}34函数定义与函数结构一个C++函数的定义由函数头与函数体两部分组成,形式如下:

函数首部

{

函数体

}35函数首部函数首部是函数的接口部分,其组成形式如下:

类型名

函数名(形式参数表列)函数类型规定为函数返回值的类型函数名是函数的标识,它应是一个有效的C++标识符形式参数表列是括在园括号中的0个或多个以逗号分隔的形式参数36函数体一个函数体是一个语句块,是用一对花括号封装的语句序列。它描述了函数实现一个功能的过程。它最后执行一个函数返回,返回的作用是: 将流程从当前函数返回其上级(调用函数); 撤销函数调用时为各参数及变量分配的内存空间; 向调用函数返回顶多一个值37例1.2.2voidArea(floatfR) //定义求圆面积的函数{cout<<"Theareais:"<<(Pi*fR*fR)<<endl;return;}或voidArea(floatfR) //定义求圆面积的函数{cout<<"Theareais:"<<(Pi*fR*fR)<<endl;return;}38主函数main()main()函数是一个特殊的函数。它的名字是固定的。它可看作是由操作系统调用的一个函数。其返回值可以是void型或int型(可以缺省)。当其返回值为int型时,用0或非0,告诉操作系统程序是否正常结束39例1.2.3

#include<iostream.h>main(){cout<<"ok!";return(0);}40函数原型函数原型也称函数模型,是由函数定义中抽取出来的能代表函数应用特征的部分:

·

函数类型

·

函数名

·

参数个数及其类型函数原型的形式为:类型函数名(参数类型1,参数类型2,…,参数类型n)41函数提前声明当函数定义在前调用在后时,编译器在调用函数之前,能从其定义中抽取函数原型当函数调用在前定义在后时,要求程序员在调用之前用函数原型对函数进行声明,以便编译器从中得到函数原型所提供的有关信息函数声明中的参数名对编译器没有意义42函数调用与内联函数函数调用的作用是:

·

用实参数(如例1.2.1中的nR)向形式参数(如例1.2.1中的fR)传递数据;

·

中断现行(调用)函数,把流程转向(被调用)函数的入口处,开始执行被调函数在调用与返回过程中,需要付出一定的时间与空间代价用于处理现场。当函数较小,又反复使用时,处理现场的开销比重会急剧增大。若把函数体嵌入函数调用处,便可以大大提高运行速度,节省开销。内联函数就可以自动实现这一功能43例1.2.4#include<iostream.h>#definePi3.1415926 intmain(){floatfR1=1.2,fR1=2.3,fArea;floatArea(float); //函数原型声明fArea=Area(fR1); //函数调用1cout<<"Theareais:"<<fArea<<endl;fArea=Area(fR2); //函数调用2cout<<"Theareais:"<<fArea<<endl;}floatArea(floatfR) { return(Pi*fR*fR);}44例1.2.5#include<iostream.h>#definePi3.1415926 intmain(){floatfR1=1.2,fR1=2.3;floatArea(float); //函数原型声明cout<<"Theareais:"<<Area(fR1)<<endl;//函数调用1cout<<"Theareais:"<<Area(fR2)<<endl;//函数调用2}floatArea(floatfR) { return(Pi*fR*fR);}45例1.2.6#include<iostream.h>#definePi3.1415926 intmain(){floatflR=1.2,fArea;inlinefloatArea(float); //内联函数以声明为主fArea=Area(flR); cout<<"Theareais:"<<fArea<<endl;}inlinefloatArea(floatfR) //定义内联函数{ return(Pi*fR*fR);}46内联函数定义方法一种是将函数定义内嵌在类的接口中一种是定义在类接口的外部注意,由于编译器必须知道内联函数的函数体才能进行内联替换,因此,内联函数在程序中被调用之前,必须被编译器看见,即内联函数必须在调用之前定义或声明47传值调用与引用类型传值调用(即“值传递”)是C++函数调用的重要特征,即调用函数向被调用函数传送的是参数值引用(reference)。这一概念的引入,大大简化了许多语法规则,并使得一些本来困难或不可能的实体操作成为可能48例1.2.7#include<iostream.h>

intmain()

{

intx=3,y=5;

cout<<"Befor\'swap\':x="<<x<<",y="<<y<<endl;voidswap(int,int);swap(x,y);cout<<"After\'swap\':x="<<x<<",y="<<y<<endl;}

voidswap(inta,intb){inttemp;temp=a;a=b;b=temp;cout<<"In\'swap\':a="<<a<<",b="<<b<<endl;}49例1.2.8#include<iostream.h>intmain(){inti=5;int&ri1=i;cout<<"i="<<i<<",ri1="<<ri1<<endl;i*=3; //改写变量cout<<"i="<<i<<",ri1="<<ri1<<endl;ri1+=5; //改写引用cout<<"i="<<i<<",ri1="<<ri1<<endl;}50例1.2.9#include<iostream.h>intmain(){inti=5;int&ril=i;cout<<"&i="<<&i<<",&ril="<<&ril<<endl; //&为求地址运算符

}51引用参数的swap()函数#include<iostream.h>intmain(){intx=3,y=5;voidswap(int&,int&);//引用参数

swap(x,y);cout<<"x="<<x<<",y="<<y<<endl;}voidswap(int&n1,int&n2){inttemp=n1;n1=n2;n2=temp;}52库函数应用库函数是C++厂商收集的一些成熟的函数,以供用户“拿来就用”。程序员使用库函数无须再自行定义,只要注意事先了解以下3点便可:

·

函数的功能;

·

函数的原型——函数名、参数个数及类型、返回类型,以便正确调用;

·

使用库函数所需的头文件——其中有函数原型声明。程序员使用库函数之前只需在程序中使用#include指令嵌入相应的头文件而不必再进行函数的原型说明53例1.2.12#include<iostream.h>#include<math.h>//嵌入数学函数库头文件

intmain(){floatf;cout<<"Enterarealnumber:";cin>>f; cout<<"Thesqnarerootof“<<f<<”is:”<<sqrt(f)<<endl; //sqrt是数学函数库math中的一个库函数

}5415个标准头文件文件名功能文件名功能assert.h程序断言诊断signal.h中断信号处理ctype.h字符处理stdarg.h可变参数的宏处理errno.h报告库函数出错stddef.h公共定义float.h实型类型的特征参数stdio.hI/O函数库limit.h整型量大小的限制参数stdlib.h常用函数库local.h地方特征string.h字符串处理math.h数学函数库time.h日期与时间函数库setjmp.h非局部跳转55类与对象一个简单的面向对象的例子类的定义与实现对象的生成与构造函数对象的撤销与释放函数友元56一个简单的面向对象的例子一个面向对象的C++程序由三部分组成:

·

类接口的定义;

·

主函数的编写;

·

类的实现——

成员函数的定义57面向对象的程序描述的圆#include<iostream.h>#definePi3.1415926classCircle{ //定义一个Circle类,描述了抽象的圆

private: //私有成员

floatmfR; //数据成员:半径

public:Circle(floatfR); //成员函数:构造函数

voidOutputArea(); //成员函数:求面积

voidOutputCircum(); //成员函数:求周长};58intmain() //进行具体的计算{Circlea(1.23),b(5.67); //声明两个Circle类对象a和ba.OutputArea(); //输出对象a的面积

a.OutputCircum(); //输出对象a的周长

b.OutputArea(); //输出对象b的面积

b.OutputCircum(); //输出对象b的周长}Circle::Circle(floatfR) //构造函数定义{mfR=fR;}voidCircle::OutputArea() //成员函数OutputArea()的定义{cout<<"Theareais:"<<Pi*mfR*mfR<<endl;}voidCircle::OutputCircum() //成员函数OutputCircum()的定义{cout<<"Thecircumferenceis:"<<2.0*Pi*mfR<<endl;}59类的定义与实现类的定义包含两部分:

·

数据成员:描述某类对象的属性;

·

成员函数:描述某类对象的行为和变化等私有成员不允许外界直接访问,只能由本类的成员函数访问。外界与对象间的信息传送只能通过公开成员进行,数据成员是对象隐藏的部分,由关键词private说明为私有的由关键词public说明为公开的,信息隐藏是面向对象程序设计的基本原则,它将外界不需要知道的信息都隐藏起来,以减少程序设计的复杂性。因此默认的成员都是私有的,即当私有成员放在类接口的开头部分时,关键词private可以缺省60定义内联成员函数的方法将成员函数直接定义在类的定义中将成员函数定义在类定义之外时使用关键字inline61成员函数直接定义在类的定义中#include<iostream.h>#definePi3.1415926classCircle{ private: floatmfR; public:voidCircle::OutputArea()//内联OutputArea(){cout<<"Theareais:"<<Pi*mfR*mfR<<endl;}voidCircle::OutputCircum() //内联OutputCircum(){cout<<"Thecircumferenceis:"<<2.0*Pi*mfR<<endl;}};62成员函数定义在类定义之外时使用关键字inline

#include<iostream.h>#definePi3.1415926classCircle{ private: floatmfR; public: voidOutputArea(); voidOutputCircum(); };inlinevoidCircle::OutputArea()//内联的OutputArea()定义{cout<<"Theareais:"<<Pi*mfR*mfR<<endl;}inlinevoidCircle::OutputCircum() //内联的OutputCircum()定义{cout<<"Thecircumferenceis:"<<2.0*Pi*mfR<<endl;}63对象的生成与构造函数创建对象时,要做的工作是:

·

给对象一个标识符;

·

给对象开辟一个内存空间;

·

将对象中的成员数据初始化64构造函数的特点构造函数具有特定名字──与类名相同。如类Circle的构造函数名也为Circle。构造函数不能标以返回类型。它的返回值是隐含的,是指向类本身的值。因此在例1.3.1中定义的构造函数没有返回类型。构造函数也可以定义为内联函数当系统执行对象声明语句时,构造函数会被自动调用,去初始化被声明的对象删除构造函数允许参数缺省调用65对象的撤销与释放函数释放函数在对象撤销时被自动调用,用于执行一些清理任务,如释放由构造函数分配的内存等释放函数有如下一些特点:

·

与类同名,之前冠以波浪号,以区别于构造函数;

·

不指定返回类型;

·

不能指定参数。66友元用friend声明了的外部函数称为这个类的友元函数元函数的使用有三个要点:

·

在类定义中用关键字friend声明;

·

在类定义之外定义;

·

使用类对象引用作参数。外部友元函数的作用域是所在类的类作用域友元函数不仅可以访问对象的公开成员,而且可以访问对象的私有成员67友元函数是另一个类的成员函数友元函数作为一个类的成员函数时,除应当在它所在的类定义中声明之外,还应当在另一个类中声明它的友元关系友元函数既可以引用本类对象的私有成员,这时毋须本类对象的引用参数;还可以引用声明它是友元的类对象中的私有成员,这时必须有友员类对象的引用参数一个类的成员函数作另一个类的友元函数时,必须先定义它,而不仅仅是声明它68友元关系classx{private:

成员1…………public:pf();……}classx{private:

成员1……public:pf();friendf();……}f();f();可以访问可以访问不可访问声明友元关系可以访问可以访问69例1.3.2#include<iostream.h>#include<string.h>classGirl{char*name,*dial;public:Girl(char*n,char*d){name=newchar[strlen(n)+1];strcpy(name,n);dial=newchar[strlen(d)+1];strcpy(dial,d);}friendvoiddisp(Girl&);//声明友元函数

~Girl(){deletename;deletedial;}};voiddisp(Girl&x)//定义外部友元函数,不是定义成员函数

{cout<<"Girl\'snameis:"<<;<<",tel:"<<x.dial<<"\n";}main(void){Girle("Eluza",);

disp(e);//调用友元函数

}70C++程序开发过程与环境C++程序开发的基本过程C++的版本71C++程序开发的基本过程计算机由硬件和软件两部分组成。硬件是计算机的物理组成,包括一些电路板、电子元件、接插件以及电源、外壳等。光有硬件,计算机还不能工作。计算机的工作是由程序控制的。程序是对计算机完成工作的成员函数的描述72一个程序的开发需要经过如下步骤1.分析问题,建立问题的模型2.表现模型3.程序的编译(或解释)与连接4.程序的测试与调试5.程序的维护73表现模型表现模型就是用一种符号系统——语言来描述模型。或者说是用一种语言来写程序。这种语言就称为程序设计语言程序设计语言分为低级语言(面向机器的语言)和高级语言两大类高级程序设计语言可分为面向过程的程序设计语言和面向对象的程序设计语言两大类74程序测试的正确指导思想以任何程序都存在错误为前提测试的目的是找出程序中的错误,而不是证明程序的正确为了保证测试成功,需要很好地设计一组测试用例,试运行程序一般说来,测试不可能是完全的,成功的测试是能够找出更多的错误的测试75维护程序的原因

原来的程序没有完全满足用户要求;用户要求的改变;程序中遗留有错误,在运行中被发现76程序开发的一般过程提出问题分析问题建立模型表现模型编辑源程序编译连接测试与调试运行维护错误目标文件可执行文件未发现错误源程序文件源程序代码模型问题编辑错误建模错误分析错误不再适宜77C++的版本C++是以C语言为基础扩充、发展起来的一种优秀的通用程序设计语言。它保持了C语言的紧凑、灵活、高效和移植性好的优点,又吸收了一些著名程序设计语言的优秀特性:从Simula中吸收了类的机制;从ALGOL68中吸收了运算符重载、引用和在局部的任何地方声明变量;综合了Ada的类属和异常处理机制

算法设计与程序结构判断与选择结构循环结构常用算法设计变量的存储属性多文件程序结构判断与选择结构关系运算与逻辑运算if…else结构条件运算符与条件表达式elseif结构

switch结构关系运算与逻辑运算关系运算符与关系表达式逻辑运算符与逻辑表达式关系运算符

<(小于)<=(小于等于)

>(大于)>=(大于等于)==等于)!=(不等于)关系运算符特点关系运算的结果为逻辑型“==”与“!=”两种关系运算符的优先级比其它关系运算符的优先级别略低逻辑运算符

&&(逻辑“与”)

||(逻辑“或”)!(逻辑“非”)运算符优先级比较优先级运

符结合方向()后置++后置--→!前置++后置---*(间接引用)&(取地址)←*/%→+-…<<=>>===!=…&&||…←=+=-=*=/=%=

if…else结构if…else结构的基本形式为:

if(判断表达式)

语句1 else

语句2例程include<iostream.h>classThreeNumber{ intm1,m2,m3;public: voidInput3Integers();

voidGetMax();}; intmain(){ThreeNumbera;a.Input3Integers();a.GetMax();return0;}

两个成员函数的实现voidThreeNumber::Input3Integers(){cout<<“Input3Integers:\n”;cin>>m1>>m2>>m3;}intThreeNumber::GetMax(){intmax;if(m1>m2) if(m1>m3) max=m1; else max=m3;else if(m2>m3) max=m2; else max=m3;cout<<“TheMaxintegeris:”<<max<<endl;}条件运算符与条件表达式条件表达式的一般形式为:

e1?e2:e3

elseif结构if(判断表达式1)

语句1elseif(表达式2)

语句2…elseif(表达式n)

语句nelse

语句n+1switch结构

switch(开关表达式){case常量1:

语句表列

case常量2:

语句表列

…default:

语句表列

}

switch结构描述例程voidCharacter::GetClass(){switch(mCh){ case'0':case'1':case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9':cout<<"\nIt'sadigitcharacter.";break;case'':case'\n':case'\t':cout<<"\nIt'sawhitecharacter.";break;default:cout<<"\nIt'salettercharacter.";break;}}循环结构for结构

while结构与do…while结构for结构结构的基本形式为:

for(表达式1;表达式2;表达式3)

循环体高斯(Gauss)问题#include<iostream.h>classGauss{ intmi;public: InputInteger(); GetGaussSum();};intmain(){ Gaussg1; g1.InputInteger(); g1.GetGaussSum(); return0;}voidGauss::InputInteger(){cout<<"Enteracharacter:\n";cin>>mi;}voidGauss::GetGaussSum(){inti,isum=0;for(i=1;i<=mi;i++)

isum+=i;cout<<"\nThesumis:"<<isum;}

for结构的流程for(初始化表达式;→判断表达式;←修正表达式)↓”真”循环体进入循环退出循环假while结构while结构的一般形式:

while(判断表达式)

循环体语句进一步说明表达式是循环体语句能否进行以及能否继续的条件。也就是说,在进入循环之前,先测试一次判断表达式,如果判断表达式为真(值不为0),则就进入循环,开始执行循环体语句;以后每执行完一次循环体语句,就再测试一次判断表达式,如果判断表达式还为“真”(值不为0),就继续执行循环体语句;如此重复,直到某一次循环体语句执行完,判断表达式变为“假”至do…while结构do…while结构形式为:

do

循环体语句

while(判断表达式);进一步说明do…while结构与while结构非常相似,一点微小的区别仅在于while结构是先判断后执行循环体,而do…while结构是先执行一次循环体再判断。也就是说,do…while结构最少要执行循环体一次,而while结构有可能一次也不执行循环体常用算法设计穷举递推模拟递归穷举穷举归纳是数学上最常用的方法之一它的基本思想是一一列举各种可能进行测试,从中找出符合条件的解计算机能够实现高速运算,借循环结构实现穷举,比人工更为有效大奖赛评分程序#include<iostream.h>classScore{ intmNumber_Adjudicator; //评委人数

public: Score(intiNum_Adj) { mNumber_Adjudicator=iNum_Adj; } voidGetResult(); //计算并给出结果};intmain(){ Scorem(15); //假定有15个评委

m.GetResult(); return0;}voidScore::GetResult(){ intiScore, //每个评委的给分

i, //临时变量

max, //最高分

min; //最低分

max=0; //先假设当前最大分为0 min=100; //先假设当前最小分为最大分(100)

floatfSum=0; //均分

for(i=1;i<=mNumber_Adjudicator;i++){ cout<<"\n输入第“

<<i<<“个分”; cin>>iScore; //输入评委评分

fSum+=iScore; //计算总分

if(score>max)max=score; //筛选最高分

if(score<min)min=score; //筛选最低分

}cout<<"\n均分为"<<(fSum-max-min)/(mNumber_Adjudicator-2));}打印3~N中的素数#include<iostream.h>classPrimer{ intmNumber; public: Primer(intn) { mNumber=n; } void GetPrimers();};intmain(){ Primer n(m); n.GetPrimers(); return0;}36块砖,36人搬classRemoveBricks{ intiNumberOfPeople; intiNumberOfBrick; public: RemoveBrick(intiNumPeop,intiNumBrc)//构造函数

{ iNumberOfPeople=iNumPeop; iNumberOfBrick=iNumBrc;} voidCalculate();};

intmain(){ BrickProblem rb(36,36);//用构造函数创建对象并初始化

rb.Calculate(); //调用对象的成员函数进行计算

return0;}

函数Calculate()#include<iostream.h>voidBrickProblem::Calculate(){cout<<"men*****women***children\n");intmen=0; //赋初值

while(men++<iNumberOfPeople/4) //修订并判断

{ intwomen=0; //赋初值

while(women++<iNumberOfPeople/3) //修订并判断

{intchildren;children=iNumberOfPeople–men-women;if(4*men+3*women+children/2==iNumberOfBrick) { cout.width(6); //设置输出域宽

cout<<men<<women<<children;}}}}递推递推就是采用不断由已知推出新值,直到求得解为止

求两个非负整数的最大公因子#include<iostream.h>

温馨提示

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

评论

0/150

提交评论