2008级Cpp上机题10_类与对象及答案
C++基础习题(选择,循环,类与对象)

1.11.C++概述例题5:C++的合法注释是()。
A./*This is a C program/* B.// This is a C programC.“This is a C program”D.//This is a C program//答案:B分析:单行注释常采用“//”,多行注释采用“/*”和“*/”。
单行注释也可采用“/*”和“*/”,但答案A书写格式错误,不能选答案A。
注释和字符串的区别,双引号内的字符为字符串。
不能选答案C。
单行注释不需要结束符“//”,如果有,只能作为注释的一部分存在。
也不能选答案D。
例题6:下面标识符中正确的是()。
A._abc B.3ab C.int D.+ab答案:A分析:C++的标识符由字母、下划线和数字组成,而且第一个字符不能为数字。
答案B第一个字符为数字不能选B。
标识符不能为关键字,不能选答案C。
答案D第一个字符不是字母或下划线,也不能选。
例题7:分析下列该程序的错误。
输入数据格式为:2,5(回车)。
main(){ int sum=0;int a,b;cout<<"input a,b:";cin>>a>>b;sum=a+b;cout<<sum<<endl;}本程序把输入的两个数据进行累加并输出结果。
输入数据格式为:2 5。
正确程序:#include <iostream> // 编译预处理命令,以“#”开头。
把系统已经定义好的输入//输出功能包含到本程序中。
using namespace std; //使用std 名字空间int main() // 程序的主函数{ // 主函数开始int sum=0; // 定义一个变量sum存放累加结果,并且赋初值为0int a,b; // 定义两个变量,保存输入值cout<<"input a,b:"; // 提示输入cin>>a>>b; // 使用基本输入设备cin输入两个变量值sum=a+b; // 进行累加,结果保存到sum变量cout<<sum<<endl; // 使用基本输出设备cout输出累加结果sum}分析:(1)没有使用编译预处理命令:#include。
C++语言选择题40道:C++类和对象.Tex

C++类与对象选择题1.C++中,什么是类的构造函数?o A. 用于初始化类的对象的函数o B. 用于删除类的对象的函数o C. 用于实现类的方法的函数o D. 用于返回类的属性的函数答案: A解析: 构造函数在创建类的实例时被调用,用于初始化该实例的成员变量。
2.在C++中,如果一个类没有显式定义构造函数,编译器会自动提供哪种构造函数?o A. 带参数的构造函数o B. 析构函数o C. 默认构造函数o D. 复制构造函数答案: C解析: 如果一个类未定义任何构造函数,编译器会自动生成一个默认构造函数。
3.C++中的析构函数有何特殊性?o A. 同时有多个析构函数o B. 可以有参数o C. 每个类必须定义一个析构函数o D. 当对象生命周期结束时自动调用答案: D解析: 析构函数在对象生命周期结束时自动调用,用于释放资源和进行清理工作。
4.下列哪个成员函数可以被重载?o A. 构造函数o B. 析构函数o C. 拷贝构造函数o D. 赋值运算符答案: A解析: 构造函数可以被重载以适应不同的初始化需求,而析构函数、拷贝构造函数和赋值运算符不能被重载。
5.C++中成员函数的定义可以位于哪里?o A. 类的定义内o B. 类的定义外,但需要在类定义中声明o C. 只能在main函数中o D. 任意位置,只要在使用前声明答案: B解析: 成员函数可以在类定义内定义,但更常见的是在类定义外定义,只需在类定义中进行声明。
6.C++类的成员变量默认的访问限定符是什么?o A. publico B. protectedo C. privateo D. static答案: C解析: 如果没有指定访问限定符,成员变量默认为private。
7.如果一个类的对象被声明为另一个类的成员变量,这被称为?o A. 继承o B. 封装o C. 组合o D. 多态答案: C解析: 将一个类的对象作为另一个类的成员变量,这体现了组合的概念。
精品课件-C++语言程序设计-第10章 类和对象

void main()
{
Point op[2],*p;
//声明类Point的对象数组op[2]和对象指针p
op[0].SetPt(1,2);
op[1].SetPt(3,4);
p=op;
//将p指针指向对象数组op的第一个元素
p->show();
p++; 素
//将p指针指向对象数组op的第二个元
p->show();
xVal += x; yVal += y;
inline int Point:: GetX () {
return xVal; } inline int Point:: GetY () {
return yVal; }
10.1.3 对象的定义与引用
定义了类以后,就可以定义其类型的变量,C++类的变量称为 类的对象,对象也称为类的实例。 1. 对象的定义 (1)在声明类的同时,直接定义对象,就是在声明类的右花
class Point{ private:
int xVal, yVal; public:
int GetX(); int GetY(); void SetPt (int, int); void OffsetPt (int, int); };
说明:
(1)类声明中的private和public两个关键字可以按任意顺 序出现任意次。但是,如果把所有的私有成员和公有成员 函数归类放在一起,程序将更加清晰。
int GetX () { return xVal; } int GetY () { return yVal; } void SetPt (int x,int y) { xVal = x; yVal = y; } void OffsetPt (int x,int y) { xVal += x; yVal += y; } };
C++程序设计教程--面向对象分册完整答案

第1章类和对象一、选择题8 C 9A 10 C二、阅读题1.x=2,y=32.x=2,y=3x!=y3.Cstatic::va1=0=1=2=4=4四、改错题#include <>#include <>class person{public:person(int n,char* nam,char s) {num=n;strcpy(name,nam);sex=s;cout<<"Constructor called."<<endl;}~person( ){cout<<"Destructor called."<<endl;}void display( ){cout<<"num: "<<num<<endl;cout<<"name: "<<name<<endl;cout<<"sex: "<<sex<<endl<<endl;}private:int num;char name[10];char sex;};int main( ){person s1(10010,"'Wang_li",'f');( );person s2(10011,"Zhang_fun",'m');( );return 0;}五、编程题5.1#include <iostream>using namespace std;class CBox{public :CBox(double l=0,double w=0,double h=0);double area();double volume ();private :double lengh;double width;double high;};CBox::CBox(double l,double w,double h){lengh=l;width=w;high=h;}double CBox::area(){return 2*(lengh*width+lengh*high+width*high); }double CBox::volume (){return lengh*width*high;}void main(){CBox box1(4,5,6);cout<<()<<endl;cout<<()<<endl;}#include <iostream>using namespace std;class CPoint{public :CPoint(double a=0,double b=0){x=a;y=b;}CPoint(CPoint & p){x=;y=;}void print(){cout<<"("<<x<<","<<y<<")";}private :double x,y;};class CLine{public:CLine(double x1=0,double y1=0,double x2=0,double y2=0):p1(x1,y1),p2(x2,y2) {}CLine(CPoint x,CPoint y):p1(x),p2(y){}CLine(CLine &lin){p1=;p2=;}void DrawLine(){cout<<"Line form";();cout<<"to";();cout<<endl;}void Linedel(){cout<<"delete line"<<endl;}void move(CPoint &x,CPoint &y){cout<<"move line"<<endl;p1=x;p2=y;}private :CPoint p1,p2;};void main(){CPoint point1(1,5),point2(5,8),point3(20,30),point4(40,50);CLine line1(point1,point2);CLine line2(2,3,8,12);();();(point3,point4);();line2=line1;();();}#include <iostream>using namespace std;class CComplex{public:CComplex(double, double);CComplex(CComplex &c); <<endl;}char CString::GetAt(int nindex) const{if(nindex>1&&nindex<=GetLength()+1)return s[ nindex-1];elsereturn '0';}void CString::Setat(int nindex,char ch){if(nindex>1&&nindex<=GetLength()+1)s[ nindex-1]=ch;}void CString::Print(){cout<<s<<endl;}int CString::compare(CString& string){if(strcmp(s,>0)return 1;else if(strcmp(s,<0)return -1;elsereturn 0;}int CString::compare(const char* psz)const {if(strcmp(s,psz)>0)return 1;else if(strcmp(s,psz)<0)return -1;else return 0;}CString::~CString(){<<endl;elsecout<<"String isn't empty."<<endl;cout<<"下面是判断字符串c1清空"<<endl;();cout<<"清空后输出字符串c1:"<<" \n";();cout<<"字符串已被清空"<<endl;cout<<"请按任意键继续"<<endl;cin>>b;D一、阅读程序题四、编程题#include <>#include<>#define PAIclass Circle{public:Circle(){r=0;}Circle (double d){r=d;}double area(){return(PAI*r*r);}void display1(){cout<<"桌子的面积:"<<area()<<endl;}private:double r;};class Table{public:Table(){heig=0;}Table (double h) {heig=h;}void display2(){cout<<"桌子的高度:"<<heig<<endl;}private:double heig;};class Roundtable : public Circle,public Table{public:Roundtable(){strcpy(color,"白色");}Roundtable(double a,double b,char* c):Circle(a),Table(b){strcpy(color,c);}void display (){ display1();display2();cout<<"桌子的颜色:"<<color<<endl; }private:char color[20];};void main(){Roundtable s,,"黑色");();}如果Age在基类中被定义为私有的,SetAge(int n)不能直接给Age赋值,如果Age是基类的公有成员变量,则可以直接赋值。
C++语言程序设计实验答案_类与对象

C++语言程序设计实验答案_类与对象(总7页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--实验04 类与对象(6学时)(第4章类与对象)一、实验目的二、实验任务4_1 声明一个CPU类。
包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。
其中,rank为枚举类型CPU_Rank,声明为enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 }; frequency为单位是MHz的整型数,voltage为浮点型的电压值。
观察构造函数和析构函数的调用顺序。
4_2 声明一个简单的Computer类。
有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run和stop。
cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。
4_3 声明一个表示时间的结构体。
可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。
4_4(习题4-10)设计一个用于人事管理的People(人员)类。
考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号),sex (性别)、birthday(出生日期)、id(身份证号)等。
其中“出生日期”声明为一个“日期”类内嵌子对象。
用成员函数实现人员信息的录入和显示。
要求包括:构造函数和析构函数、内联成员函数、组合。
三、实验步骤1.(验证)声明一个CPU类,观察构造函数和析构函数的调用顺序。
首先声明枚举类型CPU_Rank,例如enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6,P7 },再声明CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,声明成员函数run和stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示顺序。
C++实验二类与对象(附答案)

C++实验二类与对象(附答案)实验二类与对象实验目的和要求1.掌握类、类的数据成员、类的成员函数的定义方式。
2.理解类成员的访问控制方式。
3.掌握对象的定义和操作对象的方法。
4.理解构造函数和析构函数的定义与执行过程。
5.掌握重载构造函数的方法。
6.了解拷贝构造函数的定义方法。
实验容1.下面程序中有错,在不删除和增加代码行的情况下,改正错误语句,使其正确运行。
#includeclass Aa{public:Aa(int i=0){a=i;cout<<"Constructor "<<a<<endl;< p="">}~Aa(){cout<<"Destructor "<<a<<endl;< p="">}void print(){cout<<a<<endl;< p="">}private:int a;};int main(){Aa al(1),a2(2);al.print();cout<<a2.a<<endl;< p="">return 0;}2.检查下面的程序,找出其中的错误,并改正。
然后上机调试,使程序能正常运行。
(1)#includeclass 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.day<<=""> (2)#includeclass A{public:void A(int i=0){m=i;}void show(){cout<<m<<endl;< p="">}void ~A(){}private:int m;};int main(){A a(5);a.m+=10;a.show();return 0;}(3)#include class X {private:int a=0;int &bvoid 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.调试下列程序。
cpp考试题库及答案
cpp考试题库及答案1. 以下哪个是C++中的构造函数?A. 函数名与类名相同,且没有返回值B. 函数名与类名不同,且有返回值C. 函数名与类名不同,且没有返回值D. 函数名与类名相同,且有返回值答案:A2. C++中,哪个关键字用于定义类的成员函数?A. staticB. publicC. privateD. inline答案:D3. 在C++中,以下哪个运算符用于检查两个指针是否指向同一个对象?A. ==B. !=C. ==D. !=答案:C4. C++标准库中,哪个容器类允许存储唯一元素?A. vectorB. mapC. setD. list答案:C5. C++中,哪个关键字用于声明一个类为抽象类?A. abstractB. virtualC. pureD. interface答案:B6. 在C++中,以下哪个是正确的继承方式?A. public继承B. private继承C. protected继承D. 所有以上答案:D7. C++中,哪个关键字用于声明一个函数为虚函数?A. virtualB. overrideC. finalD. sealed答案:A8. 在C++中,以下哪个是正确的多态性实现方式?A. 通过虚函数B. 通过函数重载C. 通过函数覆盖D. 所有以上答案:A9. C++中,哪个关键字用于声明一个函数为友元函数?A. friendB. publicC. privateD. protected答案:A10. 在C++中,以下哪个是正确的模板声明方式?A. template <typename T>B. template <class T>C. template <typename T> 和 template <class T>D. 以上都不是答案:C结束语:通过以上题目的练习,可以帮助你更好地理解和掌握C++的基本概念和特性。
C++语言程序设计实验答案-类与对象
C++语言程序设计实验答案-类与对象实验04 类与对象(6学时)(第4章类与对象)一、实验目的(1) 掌握类的声明和使用。
(2) 掌握类的声明和对象的声明。
(3) 复习具有不同访问属性的成员的访问方式。
(4) 观察构造函数和析构函数的执行过程。
(5) 学习类的组合使用方法。
(6) 使用Visual Studio 2010的调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。
二、实验任务4_1 声明一个CPU类。
包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。
其中,rank为枚举类型CPU_Rank,声明为enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 }; frequency为单位是MHz的整型数,voltage为浮点型的电压值。
观察构造函数和析构函数的调用顺序。
4_2 声明一个简单的Computer类。
有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run和stop。
cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。
4_3 声明一个表示时间的结构体。
可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。
4_4(习题4-10)设计一个用于人事管理的People(人员)类。
考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号),sex(性别)、birthday(出生日期)、id(身份证号)等。
其中“出生日期”声明为一个“日期”类内嵌子对象。
用成员函数实现人员信息的录入和显示。
要求包括:构造函数和析构函数、内联成员函数、组合。
三、实验步骤1.(验证)声明一个CPU类,观察构造函数和析构函数的调用顺序。
首先声明枚举类型CPU_Rank,例如enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 },再声明CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,声明成员函数run和stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示顺序。
2008级C 面向对象程序设计试题A 计算机学院2009年冬天
指针型变量。 5. 若有语句 A*const p=new A; 那么通过指针 p 只能访问类 A 的常成员函数或静态成员函数。 6. 在基类的成员函数都是虚函数的情况下,该基类也称虚基类。 7. 将一个能够正常执行的程序中所有形如 void f(A&)的函数都改成 void f(const A&)形式,那
7. 下列关于单继承的说法,不正确的是:
(A) 基类的析构函数是虚的,那么派生类的析构函数也一定是虚的
(B) 实例化派生类对象,总会调用到基类的某个构造函数
(C) 无论采用何种继承方式,创建派生类对象时,总是先初始化基类数据成员,再初始化
派生类数据成员
(D) 若要在 main 函数中创建派生类对象,那么派生类的析构函数必须是公有的,基类析构
(A) a
(B) 类 A 中定义的类型为 A 的静态数据成员
(C) *this
(D) 函数 f 中用语句 A& b=a; 定义的量 b
5. 下列关于 C++动态内存管理的说法,正确的是:
(A) 用 new 分配的内存,系统可以自动回收
(B) 用 new 分配内存时,系统不可能产生异常
(C) 语句块 int n=10; char array[n]; 含有语法错误,但语句块 int n=10; char * array=new
1. class A{
2. class A{
5. class A {
int m_ival=0;
const A m_val;
public: A(int n) {}
C++上机报告-类与对象
青岛理工大学课程实验报告课程名称C++面向对象程序设计班级实验日期姓名学号实验成绩实验名称实验一类与对象实验目的及要求1.理解并掌握类的定义、实例化的方法。
2.了解类的构造函数和析构函数。
3.学习类成员访问控制的应用。
4.了解类的常数据成员和常成员函数。
5.了解类的静态数据成员和静态成员函数。
6.理解友元函数和友元类;掌握友元函数的使用。
实验环境学校机房计算机Visual C++ 6.0实验内容1. 求出1000以内的所有素数及素数的个数。
2. 编写一个程序,输入年、月、日,打印出该天是那年的第几天。
3. 编写一个函数,由实参传来一个字符串,统计次字符串中字母、数字、空格和其他字符的个数。
4. 设计一个立方体类Box,它能计算并输出立方体的体积和表面积。
5. 定义一个Book(图书)类,在该类中包括:(1)数据成员:bookname(书名)、price(价格)、number(存数数量)。
(2)成员函数:display()显示图书的情况;borrow()将存数数量减一,并显示当前存数数量;restre()将存数数量加一,并显示当前存数数量。
(3)在main函数中,要求建立一种图书对象,并对该图书进行简单的显示、借阅和归还管理。
6.改造实验内容1的CMoney类,把其中的4个构造函数整合为1个构造函数。
7.运行下列程序,分析继承下构造函数的调用。
(程序在后面)算法描述及实验步骤1.定义整型变量sum用来计算素数个数,运用求素数的算法求得素数个数sum,最后输出sum。
2.定义整型变量sum表示那年的第几天,运用算法根据是否是闰年、大小月来计算天数sum。
3.根据ASCII表中字母、数字、空格和其他字符的范围定义函数,然后利用for 语句控制条件算出字符串中不同字符的个数。
4.定义立方体类Box,并通过构造函数设置立方体的边长,计算其面积、体积及输出,然后在主函数中定义类的对象,设定立方体边长,通过其访问类,输出结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2008级C++(下) 上机题10
说明:
1. 利用Word写出各题要求的答案(包括题目和程序代码);
2. 上述Word文件命规则是: 学号_10.doc 如:学号为21308101的同学该文件名
为21308101_10.doc
3. 上机课结束前将上述Word文件上传至指定的作业上传区;
【题目】
1. 请建立库存书籍类Book,属性包括:
书名: 字符串 char name[20];
页数: 整数 int pages;
作者: 字符串 char author[20];
出版单位: 字符串 char publish[50];
价格: 实数 float price;
总库存: 整数 int num;
操作包括:
构造器: Book(char * bname, int pg, char * au, char * pb, float prc,
int n);// 姓名,页数,作者,出版社,价格,库存数
售出书籍: 以售出书籍数为形参 int sell(int n); // 返回值为剩余库存
数
买入书籍: 以买入书籍数为形参 int buy(int n); // 返回值为剩余库存
数
检查库存, int check(); // 返回值为剩余库存数
检查总价值, float value(); // 返回值为所有书的
价格之和
请根据以上分析设计书籍类(Book),并用相应的主函数进行调试。
///////////////////////////
#include
#include
class Book{
char name[20];//书名:
int pages;//页数: 整数
char author[20];//作者: 字符串
char publish[50];//出版单位: 字符串
float price;// 价格: 实数
int num;//总库存: 整数
public:
Book(char * bname, int pg, char * au, char * pb, float prc, int n);//
姓名,页数,作者,出版社,价格,库存数
int sell(int n); // 售出书籍: 以售出书籍数为形参 返回值为剩余库存
数
int buy(int n)
{ // 买入书籍: 以买入书籍数为形参 返回值为剩余库存数
return num=num+n;
}
int check()
{//检查库存, 返回值为剩余库存数
return num;
}
float value(); //检查总价值, 返回值为所有书的
价格之和
};
Book::Book(char * bname, int pg, char * au, char * pb, float prc, int n)
{
strcpy(name,bname);
pages=pg;
strcpy(author,au);
strcpy(publish,pb);
price=prc;
num=n;
}
int Book::sell(int n)
{
return num=num-n;
}
float Book::value()
{ //检查总价值, 返回值为所有书的价格之和
return price*num;
}
void main()
{
Book b("数据库原理及应用",370,"王珊","清华大学出版社",20.5,100);
cout<
////////////////////////////////////
2.【要求】按以下描述和要求建立student类:
class student{ //学生类
private:
int xh; //学号
char xm[20]; //姓名,不允许有空格
float cj; //成绩
public:
void Input(); // 从键盘输入学生信息
void Output();// 屏幕输出学生信息
void Output(ofstream & os); // 将学生信息存入文件中,文件流对象
为os, 要求每个学生信息占一行
void Input(ifstream & is); // 从输入文件流中提取一个学生信息,
每个学生信息占一行
};
void main()
{
student a[4];
for(int i=0;i<4;i++) a[i].Input(); // 输入
for(i=0;i<4;i++) a[i].Output(); // 输出
cout<
for(i=0;i<4;i++) a[i].Output(os); //将学生信息输出到文件中
os.close();
ifstream is("students.txt");
for(i=0;i<4;i++) a[i].Input(is); // 从文件读入学生信息
is.close();
for(i=0;i<4;i++) a[i].Output(); // 输出到屏幕
}
请补齐缺失的语句,用main进行调试。
////////////////////////////////////
class student{ //学生类
private:
int xh; //学号
char xm[20]; //姓名,不允许有空格
float cj; //成绩
public:
student(int xhao,char * xname,float cji)
{
xh=xhao;
strcpy(xm,xname);
cj=cji;
}
student()
{
xh=-1;strcpy(xm,"");cj=0;
}
void Input(); // 从键盘输入学生信息
void Output();// 屏幕输出学生信息
// void Output(ofstream & os); // 将学生信息存入文件中,文件流对
象为os, 要求每个学生信息占一行
// void Input(ifstream & is); // 从输入文件流中提取一个学生信
息,每个学生信息占一行
};
void student::Input()
{ // 从键盘输入学生信息
cout<<"请输入学号,姓名,成绩"<
}
void student::Output()
{// 屏幕输出学生信息
cout<<"输出学号,姓名,成绩"<
void main()
{
student a[4];
for(int i=0;i<4;i++) a[i].Input(); // 输入
for(i=0;i<4;i++) a[i].Output(); // 输出
cout<
for(i=0;i<4;i++) a[i].Output(os); //将学生信息输出到文件中
os.close();
ifstream is("students.txt");
for(i=0;i<4;i++) a[i].Input(is); // 从文件读入学生信息
is.close();
for(i=0;i<4;i++) a[i].Output(); // 输出到屏幕
*/
}