c++实验二 类和对象(附答案)
大学C 上机实验题目(版)
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. 编写一个函数,用来计算从键盘上输入的整数的阶乘。
实验二-类与对象(二)
实验二-类与对象(二)实验三类与对象(2)【实验类型】验证性实验【实验课时】2学时【实验目的】(1)掌握对象数组定义与使用方法。
(2)理解对象指针的概念,学会用指针引用对象。
(3)了解this指针的工作方式。
(4)掌握静态数据成员和静态成员函数的基本使用方法。
(5)理解友元与友元函数的作用,掌握其使用方法。
【实验环境】硬件:计算机软件:Microsoft Visual C++ 6.0【实验内容】1、按要求阅读、修攺、调试和运行以下程序。
(1)实验内容① 定义一个类Stock,记录一支股票交易的基本信息,信息包括交易日序号(表示本月的第几个交易日,用整数表示)、当日最高价、当日最低价、当日开盘价和当日收盘价。
尽量发挥想象力,为该类设计成员函数。
② 在主函数中建立两个股票对象,分别存储该股票昨天和今天两天的信息,以当日收盘价计算该股票今天的涨幅。
③ 使用股票类Stock,定义一个对象数组存放连续5个交易日的股票信息。
编写一个主函数,计算两个Stock对象(前后两日)的当日收盘价计算当日涨幅。
用指针引用对象数组中的两个对象。
在主函数中调用该函数计算从第2个交易日开始每天的当日涨幅。
④ 在Stock类中定义一个静态数据成员,记录当前Stock对象的数量。
⑤ 设计一个成员函数Assign_stock为对象赋值,其中的形式参数是对另一个Stock对象的引用,使用this指针避免对自己的赋值,在主函数中显示用Assign_stock赋值的对象。
⑥ 定义一个友元函数计算Stock对象的当日开盘价是否高于当日收盘价。
若是,返回真,否则,返回假。
(2)实验程序及运行结果(参考)①以当日收盘价计算该股票今天的涨幅#include <iostream.h>class Stock{public:Stock(int n,double ma,double mi,double b,double e);void Set_Stock(int n,double ma,double mi,double b,double e);double Get_End();void Show_Stock();private:int Number;double Max,Min,Begin,End;};Stock::Stock(int n,double ma,double mi,double b,double e){ Number=n;Max=ma;Min=mi;Begin=b;End=e;}void Stock::Set_Stock(int n,double ma,double mi,double b,double e){ Number=n;Max=ma;Min=mi;Begin=b;End=e;}double Stock::Get_End(){ return End;}void Stock::Show_Stock(){ cout<<Number<<"\t";cout<<Max<<"\t";cout<<Min<<"\t";cout<<Begin<<"\t";cout<<End<<endl;}void main(){ Stocks1(1,4.18,4.00,4.05,4.09);Stocks2(2,4.41,4.03,4.04,4.40);cout<<"\n"<<(s2.Get_End()-s1.Get_E nd())/s1.Get_End()*100<<"%"<<endl;}②定义一个对象数组存放连续5个交易日的股票信息#include <iostream.h>const int N=2;class Stock{public:Stock(int n,double ma,double mi,double b,double e);Stock(); //增加无输入值的构造函数void Set_Stock(int n,double ma,double mi,double b,double e);void Set_Stock();double Get_End();void Show_Stock();private:int Number;double Max,Min,Begin,End;};Stock::Stock(int n,double ma,double mi,double b,double e){ Number=n;Max=ma;Min=mi;Begin=b;End=e;}Stock::Stock() //无输入值时,将其都清零{ Number=0;Max=0;Min=0;Begin=0;End=0;}void Stock::Set_Stock(int n,double ma,double mi,double b,double e){ Number=n;Max=ma;Min=mi;Begin=b;End=e;}double Stock::Get_End(){ return End;}void Stock::Show_Stock(){ cout<<Number<<"\t";cout<<Max<<"\t";cout<<Min<<"\t";cout<<Begin<<"\t";cout<<End<<endl;}void Stock::Set_Stock(){ cout<<"Number:";cin>>Number;cout<<"Max:";cin>>Max;cout<<"Min:";cin>>Min;cout<<"Begin:";cin>>Begin;cout<<"End:";cin>>End;}void main(){ int i;Stock s1[5],*p;for (i=0,p=s1;i<N;i++,p++)p->Set_Stock();for (i=0,p=s1;i<N;i++,p++)p->Show_Stock();for(i=1,p=s1+1;i<N;i++,p++) cout<<"\n"<<(p->Get_End()-(p-1)->Get_End())/(p-1)->Get_End()*100<<"%"<<en dl;}③定义一个静态数据成员,记录当前Stock 对象的数量#include <iostream.h>const int N=2;class Stock{public:Stock() {}Stock(int n,double ma,double mi,double b,double e);void Set_Stock(int n,double ma,double mi,double b,double e);void Set_Stock();double Get_End();void Show_Stock();int Get_N_count();private:static intN_count; //静态数据成员int Number;double Max,Min,Begin,End;};intStock::N_count=0; //此处定义时不需要加上staticStock::Stock() //无输入值时,将其都清零{N_count++;Number=0;Max=0;Min=0;Begin=0;End=0;}Stock::Stock(int n,double ma,double mi,double b,double e){ N_count++;Number=n;Max=ma;Min=mi;Begin=b;End=e;}void Stock::Set_Stock(int n,double ma,double mi,double b,double e){Number=n;Max=ma;Min=mi;Begin=b;End=e;}double Stock::Get_End() { return End;}void Stock::Show_Stock() { cout<<Number<<"\t";cout<<Max<<"\t";cout<<Min<<"\t";cout<<Begin<<"\t";cout<<End<<endl;} void Stock::Set_Stock() {cout<<"Number:";cin>>Number;cout<<"Max:";cin>>Max;cout<<"Min:";cin>>Min;cout<<"Begin:";cin>>Begin;cout<<"End:";cin>>End;}int Stock::Get_N_count(){ return N_count;}void main(){ int i;Stock s1[5];Stock *p;for (i=0,p=s1;i<N;i++,p++)p->Set_Stock();for (i=0,p=s1;i<N;i++,p++)p->Show_Stock();for(i=1,p=s1+1;i<N;i++,p++) cout<<"\n"<<(p->Get_End()-(p-1)->Get_E nd())/(p-1)->Get_End()*100<<" %";cout<<"\n"<<p->Get_N_count()<< endl;}④设计一个成员函数Assign_stock为对象赋值,其中的形式参数是对另一个Stock对象的引用#include <iostream.h>const int N=2;class Stock{public:Stock() {}Stock(int n,double ma,double mi,double b,double e);void Set_Stock(int n,double ma,double mi,double b,double e);void Set_Stock();void Assign_Stock(Stock& p);void Show_Stock();private:static int N_count;long Number;double Max,Min,Begin,End;};int Stock::N_count=0;Stock::Stock() //无输入值时,将其都清零{N_count++;Number=0;Max=0;Min=0;Begin=0;End=0;}Stock::Stock(int n,double ma,double mi,double b,double e){ N_count++;Number=n;Max=ma;Min=mi;Begin=b;End=e;}void Stock::Set_Stock(int n,double ma,double mi,double b,double e){ N_count++;Number=n;Max=ma;Min=mi;Begin=b;End=e;}void Stock::Assign_Stock(Stock& p){ if (this!=&p){Number=p. Number;Max=p.Max;Min=p.Min;Begin=p.Begin;End=p.End;}}void Stock::Show_Stock() { cout<<Number<<"\t";cout<<Max<<"\t";cout<<Min<<"\t";cout<<Begin<<"\t";cout<<End<<endl;} void Stock::Set_Stock() {cout<<"Number:";cin>>Number;cout<<"Max:";cin>>Max;cout<<"Min:";cin>>Min;cout<<"Begin:";cin>>Begin;cout<<"End:";cin>>End;}void main(){Stock s1(4,7.88,7.48,7.56,7.68);Stock s2;s2.Assign_Stock(s1);s2.Show_Stock();}⑤定义一个友元函数计算Stock对象的当日开盘价是否高于当日收盘价。
c语言程序设计基础教程课后答案
c语言程序设计基础教程课后答案C语言程序设计基础教程课后答案第一章:C语言概述1. 简述C语言的特点。
- C语言是一种结构化编程语言,具有高效、灵活、功能强大等特点。
- 它支持多种编程范式,如过程式编程、结构化编程、面向对象编程等。
- C语言具有较低的抽象级别,接近硬件,因此执行效率较高。
2. C语言的发展历史。
- C语言在1972年由丹尼斯·里奇(Dennis Ritchie)在贝尔实验室开发。
- 它最初是作为UNIX操作系统的系统编程语言而设计的。
第二章:C语言环境和基本语法1. 如何设置C语言的开发环境?- 选择一个C语言编译器,如GCC、MSVC等。
- 安装编译器并配置环境变量,以便在命令行中直接调用编译器。
2. C语言的基本语法结构是什么?- C语言的基本结构包括预处理指令、函数定义、变量声明和语句。
第三章:数据类型、运算符和表达式1. C语言中的基本数据类型有哪些?- 整型(int)、字符型(char)、浮点型(float和double)等。
2. 运算符的分类及其用法。
- 算术运算符:+、-、*、/、%等。
- 赋值运算符:=、+=、-=等。
- 比较运算符:==、!=、>、<等。
- 逻辑运算符:&&、||、!等。
第四章:控制语句1. 条件语句的用法。
- if语句用于基于条件执行代码块。
- switch语句用于多条件选择。
2. 循环语句的用法。
- while循环用于在满足条件时重复执行代码块。
- for循环用于已知迭代次数的循环。
- do-while循环先执行代码块再判断条件。
第五章:数组和字符串1. 数组的基本概念和使用。
- 数组是相同数据类型的元素集合,存储在连续的内存位置。
- 声明数组:int arr[10]; 表示一个包含10个整数的数组。
2. 字符串的表示和操作。
- 在C语言中,字符串是以空字符('\0')结尾的字符数组。
- 使用标准库函数如strcpy、strlen等操作字符串。
Java实验报告-2-类和对象
class Fushu
{
private double a; //实部
private double b;//虚部
public Fushu(double x,double y)
{
a=x;
b=y;
}
public void addfushu(double x,double y)
"b="+10.4+"+"+11.2+"*i"+"\n"+
"a+b="+a.geta()+"+"+a.getb()+"*i"+"\n"+
"a-b="+b.geta()+b.getb()+"*i");
}
}
实验结果
小结
通过本次实验,我对java里面类和对象的定义和使用有了一定的认识和熟悉。
说明:如果完成了一次实验的多个实验题目,可以在实验报告中复制该表,填写其他实验题目的报告。
{
return this.b;
}
}
Fushu a = new Fushu(12.9,9.7);
a.addfushu(10.4, 11.2);
Fushu b = new Fushu(12.9,9.7);
b.plusfushu(10.4, 11.2);
JOptionPane.showMessageDialog(null,"a="+12.9+"+"+9.7+"*i"+"\n"+
实验二---类与对象的定义与使用
}
void paixuYuwen() //按语文成绩排序;
{
Student str[50],*p,q;
int i,j;
p=stu;
for(p=stu,i=0;i<n;i++)
{ str[i]=*p;
*p++;
}
for(i=0;i<n-1;i++,p++)
{
for(j=0;j<n-1-igt;str[j+1].yuwen)
{
q=str[j];
str[j]=str[j+1];
str[j+1]=q;
}
}
}
for(i=0;i<n;i++)
{
printf("学号:%d姓名:%s数学:%.2f语文:%.2f英语:%.2f总成绩:%.2f平均成绩:%.2f\n",str[i].num,str[i].name,str[i].shuxue,str[i].yuwen,str[i].yingyu,str[i].zongcj,str[i].avg);
}
}
void paixuCJ()
{
int flag;
printf("1->按数学成绩排序\n2->按语文成绩排序\n3->按英语成绩排序\n4->按总成绩排序\n5->按总分\n");
printf("请选择成绩由低到高的排序方式:");
scanf("%d",&flag);
switch(flag){
case 0:paixuShuxue();break;
c++基础练习题及解答细节全解
“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++的字符常量中,一个反斜线字符是‘\\’。
《C++程序设计》实践环节考核规定
《C++程序设计》实践环节考核规定1. 《C++程序设计》实践环节考核大纲一、考核类型上机考核二、目的要求《C++语言程序设计》是计算机科学与应用专业、信息管理专业(本科)的必修课,是培养学生实践动手能力的一门重要专业课程,是为满足计算机应用领域与计算机应用人才的需要而设置的。
C++语言是一种面向对象的编程语言,它集抽象性、封装性、继承性和多态性等面向对象特征于一体,可以帮助人们开发出具有较高数据抽象程度,能够充分体现信息隐蔽、软件重用、易修改、易扩充等特性的大型软件。
《C++程序设计》的实验采用Microsoft Visual C++6.0。
通过上机实践,加深对课程的理解,更好地掌握C++面向对象程序设计的基本方法,增强实际动手能力。
三、考核环境硬件:586以上的PC系列机,主频大于166MHz,内存大于256MB,硬盘空间大于500MB。
软件:中文Windows 2000/NT/XP操作系统,Microsoft Visual C++6.0。
四、考核方法考生抽取试题后,在45分钟内,完成试卷中所要求的全部内容,并作必要的记录。
考核结束后,考生上交试卷。
上机考核成绩由现场老师初评,经考点负责人审核签名,报主考院校核定。
成绩分合格、不合格两类。
五、考核内容●掌握Microsoft Visual C++ 6.0集成开发环境的使用, 新建工程,编辑含有类的C++源文件,存取文件,编译文件,调试程序和运行程序。
●模板。
包括:函数模板、类模板,练习编制函数模板和类模板。
●熟悉面向对象编程思想和多文件编程规范。
●掌握公有继承的赋值兼容性规则、构造函数、复制构造函数和析构函数的设计方法。
●练习使用向量解决实际问题。
●熟悉各类运算符的重载。
●熟悉使用文件的基本方法。
●熟悉继承和包含以及虚函数的多态性。
六、参考书目1.刘振安主编,《C++程序设计》,机械工业出版社2008年2. 薛万鹏译,《C++程序设计教程》,机械工业出版社,2005年3. 钱能,《C++程序设计教程》,清华大学出版社,2006年2 《C++程序设计》上机考核指导《C++语言程序设计》是一门实践性很强的课程,必须通过反复上机练习,深入领悟面向对象程序设计的基本思想。
实验二_类的静态数据成员和友元
h(&x);
cout<<"i="<<x.display()<<endl;
return 0;
}
(2)运行结果截图
(3)对程序的分析及注意事项 分析:首先建立一个X类的对象x并且初始化i=1,输出I;然后建立一个Y类对象y,然 后调用y的成员函数g(X*x),使得i=i+1,输出i;然后建立一个Z对象z,调用z的成员函 数f(X*x),是的i=i+5,输出i;最后调用ቤተ መጻሕፍቲ ባይዱ(X*x),使得i=i+10,输出i; 注意事项:在my_x_y_z.h头文件中,cout,endl不可用。 2.3 Boat and Car (1)源代码
《面向对象程序设计》 上机实验报告
实
实验二 类的静态数据成员和友元
验
名
称
实
1) 掌握友元函数和友元类设计的方法。
2) 学习静态成员的使用,理解静态成员的特殊用途。 验
3) 掌握友元类的定义。 目
4) 学习友元函数及友元类,理解友元类的作用。
的
5) 掌握友元函数和友元类设计的方法。
1)定义一个 Cat 类,拥有静态数据成员 HowManyCats,记录 Cat 的 实
要
实
~cat(){HowManyCats--;}
验
static void GetHowMany()
记
录
{cout<<"Object HowManyCats:"<<HowManyCats<<endl;}
及
个 private:
人
小
static int HowManyCats;
c++程序设计实验报告(参考答案)
实验要求:对大纲中列出的四个实验要求:1.以面向对象的程序设计思想编程。
2.熟悉面向对象程序设计语言VC++编程环境。
3.在计算机上快速完成程序编写、调试、运行。
分别写出实验报告(三页以上),要求详尽描述根据实验内容要求,自己设计的上机编程源程序和结果,包括关键性截图。
完成实验报告和上交源程序。
备注:1.《计算机应用技术》(专)、《计算机应用基础》(专)、高级语言程序设计(一)(专)要求学生进行上机操作,保留上机操作原程序,每门课程每个学生形成一个文件夹,文件夹以学生准考证号+姓名命名,最后试点院校汇总,刻录光盘上交主考院校;2.《口语》(专)、《口译与听力》(本)要求考生进行现场练习,由试点院校教师录制相关材料,每门课程每个学生形成一个文件夹,文件夹以学生准考证号+姓名命名,最后试点院校汇总,刻录光盘上交主考院校;A45.按照系统成绩单的顺序将上报的学习过程评价成绩材料排序并打捆;6.实践课程考核评估记录表》也需按照成绩单顺序排序,单独上报;7.有平时作业或测试试卷等可放入本人上报的材料中一并打捆上交。
交实验报告时间:10月8日假期后第一天上课,务必把按照要求书写完成,并装订好的实验报告交给我,一定!一定!切记不要耽误!实验一:简单类与对象一、实验目的1、熟悉VC++的编程环境,掌握VC++ 的调试方法。
2、掌握简单的类与对象的定义。
二、实验内容用类定义,输入半径和高,输出圆柱体的底面积和体积。
三、实验要求1、硬件设备:奔腾Ⅱ及以上计算机,局域网。
2、软件环境:WINDOWS XP、VC++。
3、实验课前预习,课后及时完成实验报告。
4、实验过程及记录按题目格式要求填写在代码清单中。
四、代码清单或实验步骤#include<iostream>using namespace std;const float PI=;class Cylinder{private:f loat radius;f loat high;public:C ylinder(){}C ylinder(float r,float h){r adius=r;h igh=h;}v oid setradius(float r){r adius=r;}v oid sethigh(float h){h igh=h;}f loat bottomarea(){r eturn PI*radius*radius;}f loat volumn(){return bottomarea()*high;}};void main(){float r,h;Cylinder onecylinder;cout<<"请输入半径:";cin>>r;cout<<"请输入高:";cin>>h;(r);(h);cout<<"底面积为:"<<()<<endl;cout<<"体积为:"<<()<<endl;}五、实验中出现的问题及解决的方法1、数据类型的兼容问题程序代码:const float PI=;提示将double类型强制赋给float类型的警告解决方法:const float PI=;六、讨论或体会或改进实验的建议这个实验比较简单,较容易的实现了。
实验二 - 参考答案
上海电力学院实验报告课程名称高级程序设计C++(2)实验项目实验二类与对象(二)姓名学号班级专业信息安全同组人姓名无指导教师姓名彭源实验日期一、实验目的this 指针的应用掌握构造函数和析构函数的含义与作用、定义方式和实现。
掌握调用构造函数和析构函数执行的顺序掌握组合对象的定义、初始化与使用了解组合对象中构造函数和析构函数执行的顺序二、实验内容和步骤编程序并上机调试运行。
1.编写一个有理数类,要求包括各种构造函数。
通过成员函数实现两个有理数的加减等功能(假设有两个已定义好的有理数对象,d1和d2,使用时是以d1.add(d2)的形式进行运算)。
●程序源代码(注意添加注释)#include<iostream>using namespace std;class Rational{public:Rational(int xx=0,int yy=1);Rational add(Rational m);Rational minus(Rational m);int getNum(){return numerator;}int getDenom(){return denominator;}void show(){cout<<" "<<numerator<<"/"<<denominator<<" ";}private:int numerator,denominator;};Rational::Rational(int xx,int yy){numerator=xx; //分子denominator=yy; //分母else{cout<<"分母不能为0,系统将置其为1"<<endl;denominator=1;}}Rational Rational::add(Rational m){Rational res; // a/b+c/d = (a*d+b*c) / (b*d)res.numerator=numerator*m.denominator+denominator*m.numerator;res.denominator=denominator*m.denominator;//下面对分子分母进行约分//辗转相除法求a,b的最大公因子int a,b,r ;a=abs(res.numerator);//abs函数:求绝对值b=abs(res.denominator);if(a<=b){ //交换a和b的值r=a;a=b;b=r;}r=a%b;while(r!=0){a=b;b=r;r=a%b;}//最大公因子为b,分子和分母均约去这个最大公因子res.numerator/=b;res.denominator/=b;return res;}Rational Rational::minus(Rational m){Rational res; // a/b-c/d = (a*d-b*c) / (b*d)res.numerator=numerator*m.denominator-denominator*m.numerator;res.denominator=denominator*m.denominator;//下面对分子分母进行约分//辗转相除法求a,b的最大公因子int a,b,r ;a=abs(res.numerator);//abs函数:求绝对值b=abs(res.denominator);{ //交换a和b的值r=a;a=b;b=r;}r=a%b;while(r!=0){a=b;b=r;r=a%b;}//最大公因子为b,分子和分母均约去这个最大公因子res.numerator/=b;res.denominator/=b;return res;}int main(){Rational a(3,4),b(-1,3),result1,result2;//计算a+b,结果放在result1里result1=a.add(b);//输出a.show();cout<<"+";b.show();cout<<"=";result1.show();cout<<endl;//计算a-b,结果放在result2里result2=a.minus(b);//输出a.show();cout<<"-";b.show();cout<<"=";result2.show();cout<<endl;return 0;}运行结果(直接截取结果图)2.定义一个类,定义其构造函数和析构函数。
Visual C++面向对象程序设计教程与实验(第二版)清华大学出版社第2章习题参考答案
1.分析下列程序的执行结果:输出随机数2. 分析下列程序的执行结果:i=03. C++语言对C语言在结构化程序设计方面进行了哪些扩充?主要在以下方面进行了扩充:文件扩展名、注释符、名字空间、输入输出、变量的定义、强制类型转换、动态内存的分配与释放、作用域运算符::、引用、const 修饰符、字符串、函数4. 下述C++程序有若干处错误,试找出并纠正之。
正确程序为:#include<iostream.h>const float PAI=3.14159265;float square(float r){return PAI*r*r;}float square(float high,float length=0 ){return high*length;}float (*fs)(float,float=0);void main(){fs=□cout<<"The circle's square is "<<fs(1.0)<<'\n';}5. 引用类型与指针类型有什么区别?指针的内容或值是某一变量的内存单元地址,而引用则与初始化它的变量具有相同的内存单元地址。
指针是个变量,可以把它再赋值成其它的地址,然而,建立引用时必须进行初始化并且决不会再指向其它不同的变量。
C++没有提供访问引用本身地址的方法,因为它与指针或其它变量的地址不同,它没有任何意义。
引用总是作为变量的别名使用,引用的地址也就是变量的地址。
引用一旦初始化,就不会与初始化它的变量分开。
6.函数、内联函数以及宏的区别。
程序的模块在C++中通过函数来实现,函数由函数说明和函数体2部分组成。
内联函数是C++语言特有的一种函数附加类别,是通过在函数声明之前插入“inline”关键字实现的。
编译器会将编译后的全部内联函数的目的机器代码复制到程序内所有的引用位置并把往返传送的数据也都溶合进引用位置的计算当中,用来避免函数调用机制所带来的开销,提高程序的执行效率。
c++面向对象的程序设计单继承(附答案)
《面向对象程序设计》实验六继承和派生一、实验目的1、学习使用继承方式派生新类的方法。
2、加深对访问权限的理解。
3、掌握派生类构造函数和析构函数的调用次序。
二、实验内容实验一下列程序是从一个A类公有派生一个新类B的程序。
填空完善该程序,编译调试正确,写出运行结果。
# include <iostream.h>class A{int pri;protected:int pro;public:int pub;A(int i,int j,int k){pri=i; pro=j; pub=k;}void print(){cout<<"pri="<<pri<<"\tpro="<<pro<<"\tprb="<<pub<<endl;}};class B: (1){int i,j;A a1,a2;public:B(int x,int y)(2){i=x;j=y;}void print(){A(3)print();cout<<"i="<<i<<"\tj="<<j<<endl;a1.print();a2.print();}};void main(){int c,d;cout<<"请输入两整数:"<<endl;(4)B(5)cout<<"sizeof(b)="<<sizeof(b)<<endl;(6)}完成程序后,运行结果为:实验二下列程序声明一个圆类circle和一个桌子类table,另外声明一个圆桌类roundtable,它是由circil和table两个类派生的,要求声明一个圆桌类对象,并输出圆桌的高度、面积和颜色。
c面向对象程序设计杜茂康答案
c面向对象程序设计杜茂康答案【篇一:《c++程序设计》教学大纲】txt>一.课程基本信息课程编号:中文名称:c++程序设计英文名称:c++ programming课程类别:专业基础课适用专业:计算机科学与技术专业、软件工程专业开课学期:秋总学时:64 授课:32上机: 32总学分:4预修课程:《计算机导论》、《c语言程序设计》、《数据结构》并修课程:无课程简介:“面向对象程序设计”是计算机科学与技术专业、软件工程专业的一门专业基础课。
面向对象软件开发方法是吸收了软件工程领域有益的概念和有效的方法而发展起来的一种软件开发方法。
它把数据和对数据的操作封装起来,集抽象性、封装性、继承性和多态性于一体,可以帮助人们开发出模块化、数据抽象程度高的、体现信息隐蔽、可复用、易修改、易扩充等特性的程序。
面向对象程序设计方法及技术是对面向对象方法及思想的基本体现。
《c++程序设计》主要介绍c++语言的基本概念、语法规则和面向对象的程序设计方法及思想,以 c++ 语言中的面向对象机制为主。
学习者在学习过程中可以通过大量的程序实例和相关练习,逐步掌握 c++ 的面向对象的功能,从而掌握面向对象程序设计的基本知识和基本技能,学会利用c++语言进行一般面向对象程序的设计,解决一般应用问题,并为后续专业课程的学习奠定程序设计基础。
建议教材:邵兰洁.《c++程序设计》.北京:北京邮电大学出版社,2009。
参考书:[1] 谭浩强.《c++面向对象程序设计》.北京:清华大学出版社,2006。
[2] 谭浩强.《c++面向对象程序设计题解与上机指导》.北京:清华大学出版社,2006年。
[3] 谭浩强.《c++程序设计实践指导》.北京:清华大学出版社,2005年。
[4] 郭有强. 《c++面向对象程序设计》. 北京:清华大学出版社,2009年。
[5] 杜茂康. 《c++面向对象程序设计》. 北京:电子工业出版社,2007年。
[6] 皮德常. 《c++程序设计教程》. 北京:机械工业出版社,2009年。
计算机实验报告
计算机实验报告C语言程序设计实验实验指导实验一 Visual C++6.0开发环境使用大气科学专业实验日期 4月 18日姓名:学号1(实验目的(1)熟悉Visual C++6.0集成开发环境。
(2)掌握C语言程序的书写格式和,语言程序的结构。
(3)掌握C语言上机步骤,了解C程序的运行方法。
(4)能够熟练地掌握C语言程序的调试方法和步骤2. 实验内容输入如下程序,实现两个数的乘积。
#include (stdio.h);int main(){x=10,y=20p=prodct(x,t)printf("The product is : ",p)int prodct(int a ,int b )int cc=a*breturn c}(1)在编辑状态下照原样键入上述程序。
C语言程序设计实验(2)编译并运行上述程序,记下所给出的出错信息。
(3)再编译执行纠错后的程序。
如还有错误,再编辑改正,直到不出现语法错误为止。
C语言程序设计实验3(分析与讨论(1)记下在调试过程中所发现的错误、系统给出的出错信息和对策。
分析讨论成功或失败的原因。
(2)总结,程序的结构和书写规则。
实验心得:通过本次实验,我了解到C语言的特点,初步认识程序设计方法和程序设计一般步骤,掌握C语言程序编译、链接和运行过程,为我进一步学好C语言打下了基础。
C语言程序设计实验实验二数据类型、运算符和表达式大气科学专业实验日期4 月 25日姓名:刘园园学号201513013271(实验目的(1)理解常用运行符的功能、优先级和结合性。
(2)熟练掌握算术表达式的求值规则。
(3)熟练使用赋值表达式。
(4)理解自加、自减运算符和逗号运算符(5)掌握关系表达式和逻辑表达式的求值2(实验内容(1)整数相除#include<stdio.h>int main(){int a=5,b=7,c=100,d,e,f;d=a/b*c;e=a*c/b;f=c/b*a;printf("d=%d , e=%d ,f=%d\n",d,e,f);return 0;}(2)自加、自减运算#include<stdio.h>int main(){int a=5,b=8;printf("a++=%d\n",a++); printf("a=%d\n",a); printf("++b=%d\n",++b); printf("b=%d\n",b); return 0;}C语言程序设计实验(3)关系运算和逻辑运算#include<stdio.h>int main(){int a=5,b=8,c=8;printf("%d,%d,%d,%d\n",a==b&&a==c,a!=b&&a!=c,a>=b&&a>=c,a<=b&&a<=c); printf("%d,%d\n",a<=b||a>=c,a==b||b==c);printf("%d,%d,%d,%d\n",!(a==b),!(a>=b),!(a>=c),!(a<=b));return 0;}C语言程序设计实验(1)在编辑状态下输入上述程序。
《面向对象程序设计》答案
实验一熟悉VC++IDE开发环境一、实验目的1、熟悉VC++6.0集成开发环境,熟练掌握VC++6.0项目工作区、各种编辑器、菜单栏和工具栏的使用。
2、掌握如何编辑、编译、连接和运行一个C++程序。
3、通过运行简单的C++程序,初步了解C++源程序的结构和特点。
二、实验要求1、分析下列程序运行的结果。
程序一:#include <iostream.h>int add(int x,int y=8);void main(){ int x=4;cout<<add(x)<<",";cout<<add(x,add(add(x,add(x))))<<endl;}int add(int x,int y){ return x+y;}//12,28程序二:#include <iostream.h>void main(){ int *p,i;i=5;p=&i;i=*p+10;cout<<"i="<<i<<endl;}//i=15程序三:#include <iostream.h>void main(void){ int i=10;int &r=i;r++;cout<<"i="<<i<<", r="<<r<<'\n';i=88;cout<<"i="<<i<<", r="<<r<<'\n';}//i=11,r=11i=88,r=88程序四:#include <iostream.h>int f(int i){ static int k=1;for(;i>0;i--)k +=i;return k;}void main(){ int i;for(i=0;i<5;i++)cout<<f(i)<<" ";}// 1 2 5 11 21程序五:#include <iostream.h>void func();int n=1;void main(){ static int a;int b= -9;cout <<"a:"<<a<<" b:"<<b<<" n:" <<n<<endl;b+=4;func();cout <<"a:"<<a<<" b:"<<b<<" n:"<<n<<endl;n+=10;func();}void func(){ static int a=2; int b=5;a+=2;n+=12;b+=5;cout <<"a:" <<a<<" b:" <<b<<" n:" <<n <<endl;}// a:0 b:-9 n:1a:4 b:10 n:13a:0 b:-5 n:13a:6 b:10 n:35实验二C++对C的扩充一、实验目的1、了解在面向对象程序设计过程中C++对C功能的扩充与增强,并善于在编写程序的过程中应用这些新功能。
面向对象程序设计实验报告
面向对象程序设计实验报告实验一C++基础1.1实验目的1.了解并熟悉开发环境,学会调试程序;2.熟悉C++中简单的标准输入输出函数的使用方法;3.理解const修饰符的作用并学会应用;4.理解内联函数的优缺点并学会其使用场合;5.理解并学会函数重载;6.理解并熟练掌握使用new和delete来分配内存;7.理解并熟练掌握引用的使用方法。
1.2实验内容1.2.1程序阅读1.理解下面的程序并运行,然后回答问题。
#include<iostream.h>int max_def(int x,int y){return(x>y?x:y);}int max_def(int x,int y,int z){int temp=0;return(temp=(x>y?x:y))>z?temp:z;}double max_def(double x,double y){return(x>y?x:y);}int main(){int x1=0;int x2=0;double d1=0.0;double d2=0.0;x1=max_def(5,6);x2=max_def(2,3,4);d1=max_def(2.1,5.6);d2=max_def(12.3,3.4,7.8);-------------------------------------------------------①cout<<"x1="<<x1<<endl;cout<<"x2="<<x2<<endl;cout<<"d1="<<d1<<endl;cout<<"d2="<<d2<<endl;--------------------------------------------------------②return 1;}问题一:上述程序的输出结果是什么?答:输出结果为问题二:①处调用的是哪个函数?答:①处调用的是double max_def(double x,double y)函数问题三:②处的输出结果为什么是d2=12,而不是d2=12.3?答:因为调用的int max_def(int x,int y,int z)函数返回值为整型。
实验2 类与对象
result=obj1.volume ();
System.out.println ("得到的长方体体积="+result);
result=obj1.area ();
System.out .println ("得到的长方形面积="+result);
}
}
【思考】
试述程序中两个类的各自作用。
类CCircle都封装了什么?求圆面积的初始数据是通过那个方法实现的?请修改程序采用构造函数的方法初始化数据。
将class CCircle中的变量double pi; double radius;加上private修饰符,进行编译会出现什么问题,为什么?
将void setCircle(double r, double p),double getRadius()和double getCircleArea()加上修饰符static,重新编译会出现什么问题?仍用static,怎样修改别的地方来纠正这个错误?在main中引用这些方法时不用创建对象则怎样引用?
return vol;
}
double volume(double y){
return y*y*y;
}
}
【思考】
1类RectangleDemo起何作用?Volume类和Rectangle类之间有何关系?
2解释类Volume中 Volume(double l, double w, double h) 的作用,super(l,w) 语句的作用;
(4)编写体现类的多态性(成员方法重载、构造方法重载)的程序。
(5)编写一个接口,并使用它;
C实验2类和对象(1)
实验2 类和对象(1)班级学号姓名成绩一、实验目的1.掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性;2.掌握类对象的定义,对象的初始化;3.理解类的成员的访问控制的含义,公有、私有和保护成员的区别;4.掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。
能够根据给定的要求定义类并实现类的成员函数;二、实验内容1.分析找出以下程序中的错误,说明错误原因,给出修改方案使之能正确运行。
#include<iostream.h>class one{ int a1,a2;public:one(int x1=0, x2=0);};void main(){one data(2,3);cout<<data.a1<<endl;cout<<data.a2<<endl;}2.分析以下程序的错误原因,给出修改方案使之能正确运行。
#include <iostream.h>class Amplifier{float invol,outvol;public:Amplifier(float vin,float vout){invol=vin;outvol=vout;}float gain();};Amplifier::float gain() { return outvol/invol; }void main(){ Amplifier amp(5.0,10.0);cout<<"\n\nThe gain is =>"<<gain()<<endl;}3.定义盒子Box类,要求具有以下成员:可设置盒子形状;可计算盒子体积;可计算盒子的表面积。
4.定义计数器类Counter。
要求具有以下成员:计数器值;可进行增值和减值记数;可提供记数值。
5.编写一个程序计算两个给定的长方形的周长和面积。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二类和对象
一、实验目的
1、理解类和对象的概念。
2、掌握类的定义和使用方法。
二、实验内容
以下是一个采用类结构的方式求n! 的程序,请填空完成程序。
# include <iostream.h>
class factorial
{
int n;
int fact;
public:
factorial(int); //带参的构造函数
void calculate();
void display();
};
factorial:: factorial(int val)
{
n=val;
(1)
}
void factorial::calculate()
{
int i=n;
while(i>1)
(2)or (3)
}
void factorial::display()
{
cout<<n<<"!="<< (4) <<endl;
}
void main()
{
int n;
cout<<"请输入n的值: ";
cin>>n;
factorial A(n);
A.calculate();
(5)
}
要求:编译调试运行程序,得到正确结果。
在填空处加上注释。
设计题
给出类的定义,构造一个完整的程序。
程序输出如下结果:
a-b=c的值
程序的主函数为:
Int main()
{ int a,b;
cin>>a>>b;
Ctest c;
c.init(a,b);
c.print();
return 0;
}
//以下内容作为作业,做到作业本上。
3. 程序填空。
(测试静态成员的使用方法)(本科班必做!)
#include<iostream>
using namespace std;
class Test
{
private;
Static int count;
public;
Test() {count++;}
static void Show() {cout<<”共有”<<count<<”个对象!”<<endl;}
}
(1) ;
int main(void)
{
Test obj1,obj2,obj3;
(2);
system(“PAUSE”);
restuen 0;
}
4. 改正下面程序中的错误,使其正常运行。
#include<iostream.h>
using namespace std;
class Test
{
public;
int Test(){cout<<”构造函数”<<endl;}
void~Test(){cout<<”析构函数”<<endl;}
};
int main(void)
{
Test obj;
system(“cls”);
}
2、分析下列程序的运行结果,并画出存储图。
# include <iostream>
using namespace std;
void fun(int,int,int*);
int main()
{
void fun(int,int&);
int a,b;
fun(5,a);
fun(8,b);
fun(a,b);
cout<<"a+b="<<a+b<<endl;
return 0;
}
void fun(int i,int &j)
{
j=i*3;
}
第一题
#include <iostream.h>
class factorial
{
int n;
int fact;
public:
factorial(int); //带参的构造函数 void calculate();
void display();
};
factorial:: factorial(int val)
{
n=val;
fact=1;
}
void factorial::calculate()
{
int i=n;
while(i>1)
{
fact=fact*i;--i;
}
}
void factorial::display()
{
cout<<n<<"!="<< fact <<endl; }
void main()
{
int n;
cout<<"请输入n的值: ";
cin>>n;
factorial A(n);
A.calculate();
A.display();
}
运行截图。