C++ 实验二 类与对象(附答案)
- 格式:doc
- 大小:345.00 KB
- 文档页数:28
20XX年复习资料大学复习资料专业:班级:科目老师:日期:实验前言(建议认真阅读)一、上机实验的目的上机实验的目的是提高学生的分析问题、解决问题的能力和动手能力,通过实践环节理解C++语言的基本结构和程序设计方法。
通过亲手编程掌握C++语言编程的方法。
二、实验基本内容为了使学生在上机实验时目标明确,本实验指导书针对课程内容编写了五个实验。
学生在课内机时先完成指导书中标有“*”号的程序,理解所学的知识,在此基础上再编写其他应用程序。
指导书中的五个个实验如下:1. 函数与编译处理2. 指针与引用3. 类和对象4. 继承和派生类5. 多态性三、实验提交(特别提醒)1. 实验题目以附件形式提交,每个附件限一个源程序,附件以实验编号-题号-自己学号.cpp命名;如学号为20XXXX20XXXX20XXXX34的同学提交实验1的第5题,则附件命名方式为:1-5-20XXXX20XXXX20XXXX34.cpp,错误提交的将视为未提交。
2. 提交时间定为该次实验课的一周内,过期不再接收。
四、评分和作弊处理1. 要求提交实验题总数为6题(带“*”号),占期末总评成绩的20XX%;2. 存在抄袭和被抄袭的作业,无论抄袭与被抄袭者,本门课程平时成绩以零分记。
存在两次及两次以上抄袭和被抄袭者,本门课程以不及格记。
五、实验课要求(重点强调)1. 严禁QQ、MSN等即时软件工具聊天;2. 严紧接听手机、发送短信;3. 严紧玩游戏。
实验1 函数与编译处理一、实验目的1. 掌握函数声明、定义和使用的方法;2. 掌握形参与实参之间的对应关系;3. 掌握函数调用时,形参、实参之间的“值传递”和“引用传递”的区别;4. 掌握函数递归调用的方法;5. 掌握全局变量、局部变量、静态变量的使用方法;6. 掌握文件包含的使用方法。
二、实验内容1. 定义两个函数swap1和swap2,目的是实现两个整数的次序交换,其中swap1的参数是传递值参数,swap2的参数是引用参数,在程序中分别调用这两个函数,其输出结果如下所示:初始值:x=1,y=2调用swap1后的结果:x=1 y=2调用swap2后的结果:x=2 y=12. 编写一个函数,用来计算从键盘上输入的整数的阶乘。
ffB v vbvv bgbb实验一C程序运行环境及简单程序的运行2.程序改错并调试改正后的程序⑴下列程序的功能为:计算x*y的值并将结果输出,程序中有8处错误,尝试改正并上机调试之(程序以文件名sy1_2.cpp#include <stdio.h>void main{ int x=2;y=3;aA=x*yprint ("a=%d",a);printf(‘\n’);}⑵下列程序的功能为:输入圆的半径,计算圆面积并将结果输出;程序中有9处错误,尝试改正并上机调试之(程序以文件名sy1_3.cpp存盘)。
#include stdio.h;int mian();float r; area;printf("input r:\n"); scanf("%f",r);area=3.14159r*r;printf("r=%f , area=%f\n"3.编写程序并上机调试⑴输入三个整数a、b、c,显示出其中的最大值。
4.分析与总结⑴总结C程序的结构和书写规则。
⑵阅读:附件1-C语言程序的跟踪调试。
特别提示:当程序在编译时发现很多错误,此时应从上到下逐一改正,或改一个错误,就重新再编译,因为有时一个错误会引起很多错误信息。
12习题一一、选择题参考答案:1~5 C B A C D 6~10 C C A C B 11~14 A A C B二、综合题绘制NS 算法流程图。
(1)输入10个数,求其中的最大值。
(2)输入3个数,将它们升序排列输出。
(3)输入2个数,求它们的最大公约数。
(4)输入一元二次方程的系数a 、b 、c ,判断其根。
实验二顺序结构程序设计1.阅读程序,尝试写出程序的运行结果,然后输入并调试程序,对照其实际输出与分析的结果是否一致,若不一致,请找出原因。
⑴以下程序用于测试C中不同类型数据所占内存字节数,运行并体会sizeof运算符的使用方法。
网络应用编程作业及答案课程名称网络应用编程院(部)计算机与信息工程学院教研室(实验室) 网络工程教研室主讲教师侯彦娥职称讲师使用教材21世纪高等学校计算机规划教材(精品系列)《C#程序设计及应用教程(第2版)》,马骏等主编,人民邮电出版社第1章作业及答案本章作业题目:P16页1、2、31、可以用C#编写哪些类型的应用程序?【解答】1)控制台应用程序。
2) Windows应用程序。
3) Web应用程序。
4) Web服务应用程序。
5) 水晶报表Web应用程序。
6)智能设备应用程序。
7)安装和部署应用程序。
2、什么是命名空间?命名空间和类库的关系是什么?【解答】1)命名空间是对类的一种逻辑上的分组,即将类按照某种关系或联系划分到不同的命名空间下。
2)命名空间又可以包含其它的命名空间,例如s,是指System命名空间下有Windows命名空间,Windows命名空间下有Forms命名空间。
3)所有类库都在规定的命名空间下。
3、举例说明using关键字有哪些主要用途。
【解答】在C#中,using关键字有3个用途1)2)3)作为语句,定义一个范围。
例如:Font font1 = new Font("Arial", 10.0f);using (font1){…}程序执行到“}”时,就会自动释放font1对象。
第2章作业及答案本章作业题目:P41 2、3、4、5、7容易做错的题目:5题(有部分同学看成求平方和了)1、C#支持的数据类型有那些?值类型和引用类型有何不同?【解答】C#支持的数据类型有:(1)值类型,包括:简单类型、结构类型、枚举类型。
其中,简单类型又分为:整型、布尔型、字符型、浮点型、小数型。
(2)引用类型,包括:对象类型、类类型、接口、元数据、字符串类型、数组。
值类型和引用类型的区别在于,值类型的变量直接存放实际的数据,而引用类型的变量存放的则是数据的地址,即对象的引用。
中南民族大学管理学院学生实验报告课程名称:C程序语言设计姓名:郭晋学号:10056006年级:2010专业:信息管理与信息系统指导教师:李超锋实验地点:管理学院综合实验室2010 学年至20 11 学年度第2 学期目录实验一熟悉C语言的开发环境和C程序的上机步骤实验二基本数据类型及数据的输入输出实验三运算符及表达式实验四顺序结构程序设计实验五选择结构程序设计实验六循环结构程序设计实验七数组及其应用实验八函数及其应用实验九指针及其应用实验(一)熟悉C语言的开发环境和C程序的上机步骤实验时间:2011.3.29同组人员:郭晋,金亚男实验目的:1,了解T urb C3.0编译系统,熟悉各菜单的功能,掌握在该系统上编辑,编译,连接,运行一个C程序的方法。
2,通过调试,运行简单的C程序,初步了解C语言程序的特点。
实验内容:1.编写一个C程序,求一个圆的面积。
我们的程序设计#include<stdio.h>void main(){float r,s;scanf("%f",&r);s=3.14*r*r;printf("s=%f",s);}2.编写程序求任意三个书的最大值。
我们的程序设计#include<stdio.h>void main(){int a,b,c,max;scanf("%d,%d,%d" ,&a,&b,&c);if(a>b&&a>c)max=a;if(b>a&&b>c)max=b;if(c>a&&c>b)max=c;printf("max=%d\n",max);}实验步骤:1.首先,我们两人先根据题目中的编程要求确定实验步骤,分别写下相应的编程语言进行比较,未出现明显的分歧。
2.打开Turb C 程序,然后将刚刚确定的C语言程序输入,打开Proiles,进行系统纠错,看是否出现错误或者警告,进行相应的调试。
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==oc实验指导书篇一:OC实验指导实验一:熟悉Object-C语言程序开发环境(基本操作性实验2学时)一. 目的要求1. 熟悉Xcode环境;2. 掌握在Xcode中创建Object-C项目的步骤;3. 掌握程序的编译和运行方法;4. 掌握应用NSLog方法进行屏幕输出。
二.实验任务在Xcode环境中创建一个Object-C项目,实现屏幕输出功能,并进行编译和运行。
三.实验环境、设备苹果电脑、Xcode。
四.实验指导(一)背景知识简述Xcode 是苹果公司开发的编程软件,是开发人员建立OS X 和 iOS 应用程序的最快捷方式。
Xcode 具有统一的用户界面设计,编码、测试、调试都在一个简单的窗口内完成。
(二)实验步骤1. 打开Xcode,新建Xcode项目,如图1。
图12. 选择最简单的命令行项目,如图2。
图23. 输入项目名称,选择Foundation框架进行创建项目,如图3。
图34. 编写程序。
5. 点击Run,运行项目,如图4图4实验二:Object-C类的设计(基本操作性实验2学时)一. 目的要求1. 理解类、对象、方法的概念;2. 掌握类的声明格式;3. 掌握类的定义格式;4. 掌握对象的创建步骤二.实验任务定义一个分数类,用来保存分子、分母。
定义一些方法,分别用来设置和获取分子、分母的数值。
编写一个Objective-C程序,实现这个类并测试它。
三.实验环境、设备苹果电脑、Xcode。
四.实验指导(一)实验步骤1. 创建一个Xcode项目;2. 创建一个分数类;3. 在接口文件中实现分数类的声明部分;4. 在实现文件中实现分数类的定义部分;5. 测试该类。
实验三:继承的使用(基本操作性实验2学时)一. 目的要求1. 理解继承的概念;2. 能够通过继承对现有类进行扩展;3. 掌握覆写方法。
学生实验报告册(理工类)课程名称: C#程序设计专业班级:学生学号:学生姓名:所属院部:信息技术学院指导教师:20 12 ——20 13 学年第 1 学期金陵科技学院教务处制实验报告书写要求实验报告原则上要求学生手写,要求书写工整。
若因课程特点需打印的,标题采用四号黑体,正文采用小四号宋体,单倍行距。
纸张一律采用A4的纸张。
实验报告书写说明实验报告中实验目的和要求、实验仪器和设备、实验内容与过程、实验结果与分析这四项内容为必需项。
教师可根据学科特点和实验具体要求增加项目。
填写注意事项(1)细致观察,及时、准确、如实记录。
(2)准确说明,层次清晰。
(3)尽量采用专用术语来说明事物。
(4)外文、符号、公式要准确,应使用统一规定的名词和符号。
(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。
实验报告批改说明实验报告的批改要及时、认真、仔细,一律用红色笔批改。
实验报告的批改成绩采用五级记分制或百分制,按《金陵科技学院课堂教学实施细则》中作业批阅成绩评定要求执行。
实验报告装订要求实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。
实验项目名称: C#编程基础实验学时: 6学时同组学生姓名:无实验地点:实验日期:实验成绩:批改教师:批改时间:实验1 C#编程基础一、实验目的(1)熟悉Visual 集成开发环境(IDE),熟悉C#源程序语言的编辑、编译和运行过程;(2)学会创建简单的控制台应用程序和windows窗体应用程序;(3)能够使用C#选择、循环等流程控制语句编写并调试程序;(4)掌握使用数组来求解一些现实问题的步骤和方法。
二、实验要求(1)编写程序要规范、正确,上机调试过程和结果要有记录;(2)做完实验后给出本实验的实验报告。
三、实验设备、环境安装有 2005以上版本软件。
四、实验步骤1. 采用VS2010编写一个简单的控制台应用程序(1)打开VS2010开发工具。
附录1.2.2编程实验(2学时)参考答案1、程序提示:#include<iostream>using namespace std;int main(){int n,i;cout<<"n=?"<<endl;cin>>n;for(i=0;i<n;i++)cout<<"Hello World!\n";return0;}2、程序提示:int main(){int n,i,min,max;cout<<"n=?"<<endl;cin>>n;//输入整数ncout<<"input n number:"<<endl;int*p=new int[n];//动态创建n个元素的数组cin>>p[0];min=max=p[0];//为sum,min,max赋初始值为数组第0个元素for(i=1;i<n;i++){cin>>p[i];sum+=p[i];if(p[i]>max)max=p[i];if(p[i]<min)min=p[i];}cout<<"result:"<<"sun="<<sum<<";max="<<max<<";min="<<min<<endl;delete*p[];return0;}3、程序运行结果:a=6;b=1a=7;b=2a=8;b=3a=9;b=4a=10;b=51.3习题参考答案一、选择题1、ABCD2、ABD3、ABCD二、分析程序,改错sum=i+j;//该语句后面缺分号2.2.2编程实验(2学时)参考答案1、程序运行结果:0m=0n=00m=0n=0112、程序运行结果:3012-23、程序运行结果:50233114、修改语句:b=(Color)a;//类型转换5、程序提示:#include<iostream>using namespace std;struct time//定义结构体类型{int year,month,day,hour,minute,second;}a;int main(){cin>>a.year>>a.month>>a.day>>a.hour>>a.minute>>a.second;//输入语句cout<<a.year<<"年"<<a.month<<"月"<<a.day<<"日"<<a.hour<<"时"<<a.minute<<"分"<<a.second<<"秒"<<endl;//输出语句return0;}程序输出样例:6、程序提示:#include<iostream>using namespace std;struct complex{//定义结构体复数float real;float image;};int add(int a,int b)//两整数相加{return a+b;}double add(double x,double y)//两实数相加{return x+y;}complex add(complex m,complex n)//两复数相加{complex c;c.real=m.real+n.real;c.image=m.image+n.image;return c;}int main(){char g;cout<<"功能选择:"<<endl;cout<<"A.整数相加 B.实数相加 C.复数相加"<<endl;cin>>g;if(g=='A'){int c,v;cin>>c>>v;cout<<add(c,v)<<endl;}if(g=='B'){double c,v;cin>>c>>v;cout<<add(c,v)<<endl;}if(g=='C'){float c,v;cin>>c>>v;complex a={c,v};//定义复数对象a并赋值cin>>c>>v;complex b={c,v};//定义复数对象b并赋值cout<<add(a,b).real<<","<<add(a,b).image<<endl;}return0;}程序输出样例:7、程序提示:#include<iostream>using namespace std;void swap(int&p1,int&p2){int t;t=p1;p1=p2;p2=t;}void main(){int a,b;cout<<"please input the two num:\n";cin>>a>>b;swap(a,b);cout<<"交换后:"<<a<<","<<b<<endl;}程序输出样例:8、程序提示:#include<iostream>#include<cmath>using namespace std;int main(){float x,y;cout<<"please input the two num:\n";cin>>x>>y;cout<<"pow(x,y)="<<pow(x,y);return0;}程序输出样例:2.3习题参考答一、选择题1、ADF2、ABC3、BC4、B5、A6、A7、BCD8、C9、BCD10、C11、C12、C13、A二、填空题1、关系,条件,逻辑,位运算,逗号2、1012151800,101200,100003、cmath4、强制类型转换,Decimal value is241三、编程题1、参考程序#include<iostream>#include<iomanip>//格式化输出控制文件using namespace std;enum color{red,yellow,blue,white,black};//枚举类型int main(){int i,j,k,n,loop,pri;n=0;for(i=red;i<=black;i++){for(j=red;j<=black;j++){if(i!=j){for(k=red;k<=black;k++){if((k!=i)&&(k!=j)){n=n+1;cout<<setw(5)<<setfill('')<<left<<n;for(loop=1;loop<=3;loop++)//通过循环控制每次三种不同颜色的球{switch(loop){case1:pri=i;break;case2:pri=j;break;case3:pri=k;break;default:break;}switch(pri)//选择输出{case red:cout<<setw(10)<<setfill('')<<left<<"red";break;case yellow:cout<<setw(10)<<setfill('')<<left<<"yellow";break;case white:cout<<setw(10)<<setfill('')<<left<<"white";break;case blue:cout<<setw(10)<<setfill('')<<left<<"blue";break;case black:cout<<setw(10)<<setfill('')<<left<<"black";break;default:break;}}cout<<"\n";}}}}}cout<<"\ntotal:"<<n<<endl;}程序输出样例:1red yellow blue2red yellow white3red yellow black4red blue yellow5red blue white6red blue black7red white yellow8red white blue9red white black10red black yellow11red black blue12red black white13yellow red blue14yellow red white15yellow red black16yellow blue red17yellow blue white18yellow blue black19yellow white red20yellow white blue21yellow white black22yellow black red23yellow black blue24yellow black white25blue red yellow26blue red white27blue red black28blue yellow red29blue yellow white30blue yellow black31blue white red32blue white yellow33blue white black34blue black red35blue black yellow36blue black white37white red yellow38white red blue39white red black40white yellow red41white yellow blue42white yellow black43white blue red44white blue yellow45white blue black46white black red47white black yellow48white black blue49black red yellow50black red blue51black red white52black yellow red53black yellow blue54black yellow white55black blue red56black blue yellow57black blue white58black white red59black white yellow60black white bluetotal:602、参考程序#include<iostream>using namespace std;long long fib(int n){int i;long long f1=0,f2=1,f=0;if(n==1)return1;if(n==0)return1;if(n>=2){for(i=2;i<=n;i++){f=f1+f2;f1=f2;f2=f;}return f;}}int main(){int num;cout<<"input the num:\n";cin>>num;cout<<fib(num)<<endl;return0;}程序输出样例:3.2.2编程实验1(2学时)参考答案1.参考程序#include<iostream>using namespace std;class Rectangle{private:int length;//表示矩形的长int breadth;//表示矩形宽public:void area()//函数功能:计算矩形的面积{cout<<length*breadth<<endl;}void set()//函数功能:设置矩形的长与宽{cin>>length;cin>>breadth;}};int main(){Rectangle rec;//回答:此处rec对象调用系统默认构造函数对其初始化赋值,length与breadth的初始值都是随机值cout<<"请输入长、宽:"<<endl;rec.set();//要求:rec对象通过set()函数对其数据成员赋值!cout<<"所求矩形的面积为:";rec.area();//要求:rec对象通过area()函数计算输出其面积!return0;}程序输出样例:2.参考程序class Point{private:int i_x;//表示点的x轴坐标int i_y;//表示点的y轴坐标public:Point();//无参构造Point(int x,int y);//有参构造Point(Point&pt);//复制构造int getx();//函数结果为i_xint gety();//函数结果为i_yvoid show();//函数功能:输出数据成员};//要求:补充完整类的定义结构!Point::Point(){cin>>i_x>>i_y;}//要求:补充完整有无构造函数的实现!Point::Point(int x,int y){i_x=x;i_y=y;}//要求:补充完整有参构造函数的实现!Point::Point(Point&pt){i_x=pt.i_x;i_y=pt.i_y;}//要求:补充完整复制构造函数的实现!int Point::getx(){return i_x;}//要求:补充完整成员函数getx()的实现!int Point::gety(){return i_y;}//要求:补充完整成员函数gety()的实现!void Point::show(){cout<<i_x<<";"<<i_y<<endl;//要求:补充完整成员函数show()的实现!}int main(){Point p1;p1.show();Point p2(4,8);p2.show();Point p3(p2);p3.show();}程序输出样例:3.参考程序#include<iostream>#include<windows.h>//调用系统时间函数需要加的头文件#include<stdio.h>//调用系统时间函数需要加的头文件using namespace std;class Time{private://私有访问属性int hour,minute,second;public://公有访问属性void setTime(int h,int m,int s)//通过形参给本类数据成员hour、minute、second赋值{hour=h;minute=m;second=s;}void showTime_1()//输出时间:以12小时计,分上午(AM)、下午(PM){int sign;if(hour<12)cout<<"am:"<<hour<<":"<<minute<<":"<<second<<endl;else{sign=hour-12;cout<<"pm:"<<sign<<":"<<minute<<":"<<second<<endl;}}void showTime_2()//输出时间,建议:以24小时计{cout<<hour<<":"<<minute<<":"<<second<<endl;}Time()//无参构造函数{hour=0;minute=0;second=0;}Time(int NewH,int NewM,int NewS)//有参构造函数{hour=NewH;minute=NewM;second=NewS;}Time(Time&pt)//复制构造函数{hour=pt.hour;minute=pt.minute;second=pt.second;}};int main(){//定义变量,输入数据,创建3个Time对象,分别使用无参构造函数、有参构造函数、复制构造函数进行初始化Time time1;//定义对象的同时自动调用无参构造函数Time time2(18,21,36);//定义对象的同时自动调用有参构造函数Time time3(time2);//定义对象的同时自动调用复制构造函数time1.showTime_1();//输出电脑时间,显示方式1time2.showTime_2();//输出电脑时间,显示方式2time3.showTime_1();//输出电脑时间,显示方式1cout<<"你想要获取当前电脑时间吗?(Y/N)";char ch=getchar();//输入的字符if(ch=='Y'){SYSTEMTIME sys;//上网查询获取方法,获取当前电脑时间,赋值给已创建的任意一个Time对象GetLocalTime(&sys);time3.setTime(sys.wHour,sys.wMinute,sys.wSecond);time3.showTime_1();//输出电脑时间,显示方式1time3.showTime_2();//输出电脑时间,显示方式2}return0;}程序输出样例:4.参考程序#include<iostream>using namespace std;class Circle{public:Circle()//无参构造函数{radius=0;}void getArea()//无返回值函数,计算圆的面积{cout<<radius*radius*3.14<<endl;}void set_radius()//无返回值函数,设置圆的半径{cin>>radius;//采用输入赋值或直接赋值都可以}~Circle()//析构函数,对象默认的调用的最后一个函数{cout<<"END PGM!\n";}private:int radius;//整型数据,4个字节};int main(){Circle c;//Circle类定义目的对象c的同时自动调用其无参构造函数初始化数据成员cout<<"请输入圆的半径:";c.set_radius();c.getArea();//程序结束前自动调用析构函数释放对象return0;}程序输出样例:5.参考程序#include<iostream>using namespace std;enum CPU_Rank{P1=1,P2,P3,P4,P5,P6,P7};//声明枚举类型CPU_Rankclass CPU{private:CPU_Rank rank;int frequency;float voltage;public:CPU(int newrank,int newfrequency,float newvoltage);//有参构造函数void run();void stop();~CPU(){cout<<"成功调用析构函数"<<endl;}//析构函数};void CPU::run(){cout<<"程序开始执行"<<endl;}void CPU::stop(){cout<<"程序结束"<<endl;}CPU::CPU(int newrank,int newfrequency,float newvoltage){rank=(CPU_Rank)newrank;//强制类型转换frequency=newfrequency;voltage=newvoltage;cout<<"成功调用构造函数"<<endl;cout<<"等级:"<<CPU_Rank(P1)<<endl;cout<<"频率:"<<frequency<<endl;cout<<"电压:"<<voltage<<endl;}int main(){CPU cpu(1,70,280);//定义对象的同时调用有参构造函数对数据成员初始化cpu.run();cpu.stop();//程序结束前调用析构函数释放对象return0;}程序输出样例:3.3.2编程实验2(2学时)参考答案1.参考程序//类外补充完善类中的成员函数coutner::coutner(int number)//有参构造函数{value=number;}coutner::coutner()//无参构造函数{cin>>value;}coutner::coutner(coutner&r)//复制参构造函数{value=r.value;}void coutner::increment()//给value原值加2{value+=2;}void coutner::decrement()//给value原值减2{value-=2;}int coutner::getvalue()//取得计数器值{return value;}int coutner::print()//显示计数{cout<<value<<endl;return0;}int main(){coutner c;//定义一个无参对象c,定义时自动调用无参构造函数,通过输入对value赋值cout<<"The output is"<<c.getvalue()<<endl;coutner c2(c.getvalue()+2);//定义一个有参对象c2,用c对象的值加2初始化其数值value cout<<"The output is"<<c2.getvalue()<<endl;coutner c3(c2);//定义一个对象c3,用c2对象初始化cout<<"The output is"<<c3.getvalue()<<endl;cout<<sizeof(coutner)<<""<<sizeof(c2)<<endl;//通过sizeof()函数观察该coutner类型所占的字节数return0;}思考题回答:若程序中注释掉复制构造函数coutner(coutner&r),还可以实现用一个对象初始化赋值另一对象,会调用系统默认的复制构造函数。
“C++程序设计”实验一简单的C++程序1、编写简单的屏幕输出程序:[过程]①首先在资源管理器中,在用户盘(硬盘)创建自己的文件夹,例如可以以自己的学号为名建立文件夹。
②进入VisualC++开发环境,新建C++源文件,存放在上一步建立的文件夹中。
打开源文件编辑窗口,输入以下源代码:#include<iostream.h>voidmain(){cout<<“……”;//省略号处是想要输出到屏幕上的内容,可以随意编辑。
}③保存文件后单击“编译compile”按钮(快捷键Ctrl+F7),在出现的对话框中单击“是”。
④若没有错误,继续单击“连接build”按钮(快捷键F7)。
若没有错误则继续单击“执行execute”按钮(快捷键Ctrl+F5),查看程序运行结果。
#include<iostream.h>voidmain(){cout<<“Hello:-)\n”;//省略号处是想要输出到屏幕上的内容。
}2、将两个数交换后输出。
[分析]交换两个数,一般方法是用一个中间变量,经过几次赋值实现。
#include<iostream.h>voidmain(){double a,b,temp;cout<<"请输入任意两个数(以空格间隔输入):"; //此语句是显示输入提示cin>>a>>b; //此语句是将用户输入的两个数依次保存到a、b两个变量中cout<<"a="<<a<<""<<"b="<<b<<endl; //此语句是输出a、b两个变量的值temp=a; //此语句是将变量a的值赋给变量temp,“=”称为赋值号……; //完成省略号处的语句,将变量b的值赋给变量a……; //完成省略号处的语句,将变量temp的值赋给变量b……; //完成省略号处的语句,再次输出变量的值,观察其值是否交换了}#include<iostream.h>voidmain(){doublea,b,temp;cout<<"请输入任意两个数(以空格间隔输入):"; //此语句是显示输入提示cin>>a>>b; //此语句是将用户输入的两个数依次保存到a、b两个变量中cout<<"a="<<a<<""<<"b="<<b<<endl; //此语句是输出a、b两个变量的值temp=a; //此语句是将变量a的值赋给变量temp,“=”称为赋值号a=b; //完成省略号处的语句,将变量b的值赋给变量ab=temp; //完成省略号处的语句,将变量temp的值赋给变量bcout<<"a="<<a<<""<<"b="<<b<<“\n”;//完成省略号处的语句,再次输出变量的值,观察其值是否交换了}3.使用cout对象,在输出窗口上显示如下的图形:提示:在C++的字符常量中,一个反斜线字符是‘\\’。
实验二类与对象实验目的和要求1.掌握类、类的数据成员、类的成员函数的定义方式。
2.理解类成员的访问控制方式。
3.掌握对象的定义和操作对象的方法。
4.理解构造函数和析构函数的定义与执行过程。
5.掌握重载构造函数的方法。
6.了解拷贝构造函数的定义方法。
实验内容1.下面程序中有错,在不删除和增加代码行的情况下,改正错误语句,使其正确运行。
#include<iostream.h>class Aa{public:Aa(int i=0){a=i;cout<<"Constructor "<<a<<endl;}~Aa(){cout<<"Destructor "<<a<<endl;}void print(){cout<<a<<endl;}private:int a;};int main(){Aa al(1),a2(2);al.print();cout<<a2.a<<endl;return 0;}2.检查下面的程序,找出其中的错误,并改正。
然后上机调试,使程序能正常运行。
(1)#include<iostream.h>class Date{void set_date();void show_date();int year;int month;int day;};Date d;int main(){set_date();show_date();}void set_date(){cin>>d.year;cin>>d.month;cin>>d.day;}void show_date(){cout<<d.year<<'/'<<d.month<<'/'<<d.day<<endl; }(2)#include<iostream.h>class A{public:void A(int i=0){m=i;}void show(){cout<<m<<endl;}void ~A(){}private:int m;};int main(){A a(5);a.m+=10;a.show();return 0;}(3)#include<iostream.h> class X{private:int a=0;int &b;void setA(int i){a=i;}X(int i){a=i;}public:int X(){a=b=0;}X(int i,int j){a=i;b=j;}void setC(int k){c=c+k;}};void main(){X x1;X x2(2);X x3(1,2);x1.setA(3);}3.调试下列程序。
#include<iostream.h>class TPoint{private:int X,Y;public:TPoint(int x,int y){X=x;Y=y;cout<<"Constructor is called"<<endl;}TPoint(TPoint &p);~TPoint(){ cout<<"Destructor is called"<<endl; }int getx(){ return X; }int gety(){ return Y; }};TPoint::TPoint(TPoint &p){X=p.X;Y=p.Y;cout<<"Copy-initialization Constructor is called"<<endl;}void main(){TPoint p1(4,9);TPoint p2(p1);TPoint p3 = p2;cout<<"p3=("<<p3.getx()<<","<<p3.gety()<<")"<<endl;}(1)写出程序的输出结果,并解释输出结果。
(2)按下列要求进行调试:在主函数体内,添加下列说明语句:TPoint p4,p5(2);调试程序会出现什么现象?为什么?如何解决?(提示:对已有的构造函数进行适当修改)结合运行结果分析如何使用不同的构造函数创建不同的对象。
(3)在主函数内使用new创建不同参数动态两个动态对象,输出其坐标,并用delete 删除之。
运行程序,分析运行结果。
(4)在程序中定义个全局对象,在主函数最前添加语句:cout<<"Enter main"<<endl;运行程序,分析运行结果。
4.完善程序,并写出运行结果根据程序要求,完善程序后输入源程序,编译连接,并写出运行结果。
如果某个自然数除了1和它本身外还有其他因子,则这个自然数就是合数(非素数)。
试定义一个类NUM,从3开始向上试探找出n个连续的自然数,且它们都是合数。
当找到第一组连续的n个合数后,即停止查找。
具体要求如下:(1)私有成员int n : 存放满足条件的连续自然数的个数。
int *p: 根据n的值申请一个动态数组用来存放求出的满足条件的n个自然数。
(2)公有成员函数NUM(int n1): 构造函数,用n1初始化n,根据n的值申请动态数组空间,使p指向该动态数组空间。
int yes(int x): 判断x是否为合数。
如果是,返回1,否则返回0。
void fun(): 从3开始向上试探找出n个连续的自然数,且它们都是合数,并依次存入动态数组。
void print(): 输出满足条件的n个合数。
~NUM(): 析构函数,释放动态数组所占用的存储空间。
(3)在主函数中定义一个NUM类的对象num,求出10个连续的合数。
然后通过对象num调用成员函数求出10个连续的合数,并输出计算结果。
#include <iostream.h>class NUM{ //定义数据类NUMprivate:int n;int *p;public:NUM(int n1){n=n1;p= ; //动态分配存放连续合数的存储空间}int yes(int x){for(int i=2;i<=x/2;i++)if (x%i==0)return 1;return 0;}void fun(void){int j;for(int i=3;1;i++){j=0;while( &&j<n){p[j]=i;j++;i++;}if(j==n)break;}}void print(void){cout<<"找到的"<<n<<"个连续合数为:"<<endl;for(int i=0;i<n;i++)cout<<p[i]<<" ";cout<<endl;}~NUM(){; //释放在构造函数中申请的存储空间}};void main(){cout<<"请输入要求的连续合数的个数(例如10):";int n;cin>>n;NUM num(n);; //寻找连续的合数,并存入动态申请的存储空间中; //输出寻找到的合数}5.请定义一个矩形类(Rectangle),私有数据成员为矩形的长度( len)和宽度(wid),缺省构造函数置len和wid为0,有参构造函数置len和wid为对应形参的值,另外还包括求矩形周长、求矩形面积、取矩形长度和宽度、修改矩形长度和宽度为对应形参的值、输出矩形尺寸等公有成员函数。
要求输出矩形尺寸的格式为“length:长度,width:宽度”。
编写主函数对定义的类进行测试。
6.声明一个时间类,时间类中有3个私有数据成员(Hour,Minute,Second)和两个公有成员函数(SetTime和PrintTime)。
SetTime根据传递的3个参数为对象设置时间;PrintTime负责将对象表示的时间显示输出,输出格式为“Hour:Minute:Second”。
(1)在主函数中,建立一个时间类的对象,设置时间为9点20分30秒并显示该时间。
(2)使用构造函数代替上面的SetTime成员函数,并在主函数中使用构造函数设置时间为10点40分50秒,并显示该时间。
(3)重载时间类的构造函数(不带参数)使小时、分、秒均为0。
(4)在时间类的析构函数中输出"Good bye!”(5)定义拷贝构造函数并调用。
7.下面是一个整型链表类intList的声明,请给出该类所有数据成员的类外定义,并在主函数中测试该类。
class intList{protected:struct Node{int data;Node *next;};Node *L;public:intList(); //构造函数~intList(); //析构函数bool Insert(int i,int elem);bool Remove(int i,int &elem);//删除链表的第i个位置的元素,删除成功返回true,失败返回falseint Find(int elem);//在链表中查找值为elem的元素,找到返回该元素在链表中的位置,否则返回0int Length(); //返回链表长度(元素个数)void PrintList(); //输出链表};参考答案(非权威,仅仅是我自己的理解,如有错误,欢迎批评指正!)第一题:#include<iostream.h>class Aa{public:Aa(int i=0){a=i;cout<<"Constructor "<<a<<endl;}~Aa(){cout<<"Destructor "<<a<<endl;}void print(){cout<<a<<endl;}private:int a;};int main(){Aa al(1),a2(2);al.print();a2.print();return 0;}第二题(1)#include<iostream.h>class Date{public:void set_date();void show_date(); private:int year;int month;int day;};Date d;int main(){d.set_date();d.show_date();return 0;}void Date::set_date(){cin>>year;cin>>month;cin>>day;}void Date::show_date(){cout<<year<<'/'<<month<<'/'<<day<<endl; }(2)#include<iostream.h>class A{public:A(int i=0){m=i;}void show(){cout<<m<<endl;}~A(){}friend void add(A &); private:int m;};void add(A &a){a.m+=10;}int main(){A a(5);add(a);a.show();return 0;}#include<iostream.h> class X{private:int a,b,c; public:X(int i){a=i;}X(){a=b=0;}X(int i,int j){a=i;b=j;}void setC(int k){c=c+k;}void setA(int i){a=i;}};void main(){X x1;X x2(2);X x3(1,2);x1.setA(3);}(1)void main(){TPoint p1(4,9); //调用构造函数初始化p1TPoint p2(p1); //显示调用拷贝构造函数初始化p2TPoint p3 = p2; //对象之间的赋值,由于之前没有定义p3,因此用另一个同类的对象给其赋值时,会调用拷贝构造函数。