C++课后习题答案第五章

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
long code;
};
employee emp;
(d) struct
{char name[20];
long code;
}employee;
employee emp;
2.已知有职工情况结构变量emp定义为:
struct employee
{char name[20];
long code;
struct
{int year;
}
T(T &d)
{cout<<"调用构造函数2."<<endl;
cout<<d.a<<'\t'<<d.b<<endl;
}
~T() {cout<<"调用析构函数."<<endl;}
int add(int x,int y=10){ return x+y;}
private:
int a,b;
};
void main()
}
答案:
点(3,4)到点(4,5)的距离是:2.82843
8.#include <iostream.h>
class A
{public:
A(){ a=5; }
voidprinta(){ cout<<"A:a="<<a<<endl;}
private:
int a;
friend class B;
};
class B
cout << "输入复数b的实部和虚部:";
cin >> b.re >> b.im;
cout << "输入运算符: ";
cin >> oper;
switch ( oper )
{ case '+': c.re=a.re+b.re; c.im=a.im+b.im; break;
case '-': c.re=a.re-b.re; c.im=a.im-b.im; break;
{public:
void display1(A t)
{t.a++; cout<<"display1:a="<<t.a<<endl;};
void display2(A t)
{t.a--; cout<<"display2:a="<<t.a<<endl;};
};
void main()
{A obj1;
B obj2;
(a)p->n++(b) (*p).n++(c)++p->n(d)*p->n
7.关于类和对象不正确的说法是(c)。
(a)类是一种类型,它封装了数据和操作(b)对象是类的实例
(c)一个类的对象只有一个(d)一个对象必属于某个类
8.在类定义的外部,可以被访问的成员有(c)。
(a)所有类成员(b) private或protected的类成员
(a)p->num(b)(p++).num(c)(p++)->num(d)(*p).num
4.下列四个运算符中,优先级最低的是(a)。
(a)++(b).(c)->(d)()
5.若有以下声明和定义,则下列错误的引用是(d)。
struct worker
{int no;
char name[20];
}w,*p=&w;
(a)构造函数(b)析构函数(c)友元函数(d)复制构造函数
15.下面对友员的错误描述是( d )。
(a)关键字friend用于声明友员
(b)一个类中的成员函数可以是另一个类的友员
(c)友员函数访问对象的成员不受访问特性影响
(d)友员函数通过this指针访问对象成员
5.2
1.#include <iostream.h>
cout<<a.f1()<<'\t'<<a.f2()<<endl;
}
答案:
10
5
10 5
15 5
5.#include <iostream.h>
class T
{ public:
T(int x,int y)
{a=x;b=y;
cout<<"调用构造函数1."<<endl;
cout<<a<<'\t'<<b<<endl;
(c)析构函数没有参数(d)析构函数可以设置默认参数
13.对静态成员的不正确描述是( c,d )。
(a)静态成员不属于对象,是类的共享成员
(b)静态数据成员要在类外定义和初始化
(c)调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针
(d)只有静态成员函数可以操作静态数据成员
14.下面选项中,不是类的成员函数为( c )。
{ employee emp[5]={"Liming",'m',"Wangxiaoping",'f',"Luwei",'m'};
int i;
for(i=0;i<3;i++)
fun(emp+i);
}
答案:
Liming
Luwei
3.#include <iostream.h>
struct node
{char *s;
C++作业答案
C

5.1
第7章1.在下列结构变量的定义中,不正确的是(d)。
(a)struct employee
{char name[20];
long code;
}emp;
(b)struct
{char name[20];
longcode;
}emp;
(c)struct employee
{charname[20];
7.#include <iostream.h>
#include <math.h>
class point
{ public:
point(float x,float y)
{ a=x;b=y;cout<<"点("<<a<<","<<b<<")"; }
frienddoubled(point &A,point &B)
{ cout<<"a="<<c.a<<'\t'<<"b="<<c.b<<endl; }
private:
int a;
static int b;
};
int T::b=5;
void main()
{T A(3),B(5);
T::display(A);
T::display(B);
}
答案:
a=3 b=13
a=5 b=13
}
答案:
1001
1002
1003
1004
2.#include <iostream.h>
struct employee
{ char name[20];
char sex;
};
void fun(employee *p)
{ if((*p).sex=='m')
cout<<(*p).name<<endl;
}
void main()
obj1.printa();
obj2.display1(obj1);
obj2.display2(obj1);
obj1.printa();
}
答案:
A:a = 5
display1:a = 6
display2:a = 4
A:a = 5
5.3
1.使用结构类型表示复数。设计程序输入两个复数,可以选择进行复数的+、-、×或÷运算,并输出结果。
(a)w.no(b)p->no(c)(*p).no(d)*p.no
6.若有以下声明和定义,则下列引用非法的是(d)。
struct data
{intn;
floatscore;
data*q;
};
data a[3]={1001,87,&a[1],1002,75,&a[2],1003,90,&a[0]};
data*p=a;
node *q;
};
void main()
{node a[]={{"Mary",a+1},{"Jack",a+2},{"Jim",a}};
node *p=a;
cout<<p->s<<endl;
cout<<p->q->s<<endl;
cout<<p->q->q->s<<endl;
cout<<p->q->q->q->s<<endl;
(d)emp.birth.year=1980;emp.birth.month=5;emp.birth.day=1;
3.假定有以下声明和定义,则下面引用形式错误的是(b)。
struct student
{int num;
float score;
} stu[3] = {{1001,80},{1002,75},{1003,91}}, *p = stu ;
int month;
int day;
}birth;
}emp;
下列对emp的 birth正确赋值方法是(d)。
(a)year=1980;month=5;day=1;
(b)birth.year=1980;birth.month=5;birth.day=1;
(c)emp.year=1980;emp.month=5;emp.day=1;
{T d1(4,8);
T d2(d1);
cout<<d2.add(10)<<endl;
}
答案:
调用构造函数1.
4 8
调用构造函数2.
48
20
调用析构函数.
调用析构函数.
6.#include <iostream.h>
class T
{ public:
T(int x){ a=x; b+=x;};
static void display(T c)
struct data
{int n;
float score;
};
void main()
{data a[3]={1001,87,1002,72,1003,90},*p=a;
cout<<(p++)->n<<endl;
cout<<(p++)->n<<endl;
cout<<p->n++<<endl;
cout<<(*p).n++<<endl;
(a)成员函数(b)构造函数(c)析构函数(d)复制构造函数
11.下面对构造函数的不正确描述是( b )。
第8章(a)系统可以提供默认的构造函数
(b)构造函数可以有参数,所以也可以有返回值
(c)构造函数可以重载
(d)构造函数可以设置默认参数
12.下面对析构函数的正确描述是( a,c )。
(a)系统可以提供默认的析构函数(b)析构函数必须由用户定义
(c) public的类成员(d) public或private的类成员
9.关于this指针的说法错误的是(a,d)。
(a) this指针必须显式说明
(b)当创建一个对象后,this指针就指向该对象
(c)成员函数拥有this指针
(d)静态成员函数拥有this指针
10.声明一个类的对象时,系统自动调用(b,d)函数;撤消对象时,系统自动调用(c )函数。
解答:
#include <iostream.h>
#include <iomanip.h>
struct complex
{
float re,im;
};
void main()
{ complex a,b,c; char oper;
cout << "输入复数a的实部和虚部: ";
cin >> a.re >> a.im;
解答:略。
3.使用结构表示X—Y平面直角坐标系上的点,程序顺序读入一个四边形的四个顶点坐标,判别由这四个顶点的连线构成的图形是否正方形、矩形或其它四边形。要求定义求两个点距离的函数使用结构参数。
int gety(){return y;}
private:
int x,y;
};
int A::f1(){ return x+y;}
int A::f2(){ return x-y;}
void main()
{A a;
a.setx(10);a.sety(5);
cout<<a.getx()<<'\t'<<a.gety()<<endl;
case '*': c.re=a.re*b.re-a.im*b.im;
c.im=a.im*b.re+a.re*b.im; break;
case '/': c.re=(a.re*b.re+a.iБайду номын сангаас*b.im)/(b.re*b.re+b.im*b.im);
c.im=(a.im*b.re-a.re*b.im)/(b.re*b.re+b.im*b.im);
}
答案:
Mary
Jack
Jim
Mary
4.#include<iostream.h>
class A
{public:
int f1();
int f2();
void setx(int m){ x=m;cout<<x<<endl;}
void sety(int n){ y=n;cout<<y<<endl;}
int getx(){return x;}
{ return sqrt((A.a-B.a)*(A.a-B.a)+(A.b-B.b)*(A.b-B.b)); }
private:
doublea,b;
};
void main()
{point p1(2,3);
cout<<"到";
point p2(4,5);
cout<<"的距离是:"<<d(p1,p2)<<endl;
break;
default: cout << "input error!" << endl;
return;
}
cout << "c=" << c.re;
cout << setiosflags( ios::showpos );
cout << c.im << "i" << endl;
return;
}
2.把一个班的学生姓名和成绩存放到一个结构数组中,寻找和输出最高分者。
相关文档
最新文档