自考C++程序设计模拟试题及答案(一)
-
已有复数类 Complex和主函数main(),编写一个类Root来实现求解一元二次方程的程序。
#include
#include
#include
class Complex
{public:
Complex(){}
void setC( double i,double j)
{real=i; image=j;}
void show();
protected:
double real, image;
};
void Complex::show()
{cout<<"("<
void main()
{double a,b,c;
cout<<"\n请输入一元二次方程的系数a,b,c:";
cin >>a>>b>>c;
Root root(a,b,c);
root.solve();
}
-
运行程序,写出程序执行的结果。
#include
class Test
{private:
static int val;
int a;
public:
static int func();
static void sfunc(Test &r);
};
int Test::val =20;
int Test::func()
{val--;
return val;
}
void Test::sfunc(Test &r)
{r.a=25;
cout<<"Result3="<
}
void main()
{cout<<"Result1="<
Test a;
cout<<"Result2 ="<
Test::sfunc(a);
}
-
给出下面程序的输出结果。
#include
using namespace std;
void main()
{int num=0,i=8;
do
{i--;
num++;
}while(--i);
cout<
}
-
采用冒泡法对数组a中的整数由小到大进行排序。
#include
void sort( int b[],int n)
{int i,j =0,t;
for(i=1;i
{for(j=0;___________;j++)
{if(b[j]>b[j+1])
{t=b[j];___________;b[j+1]=t;}
}
}
}
void main()
{int a[]={3,2,7,1,19,6,2,8};
int i;
for(i=0;i<8;i++)
cout<
cout<
sort(a,);
for(i=0;i<8;i++)
cout<
cout<
}
-
class point{
private:
int x,y;
public:
point(int,int);
point(point&);
};
point::point(int a,int b)
};
x=a;
________=b;
}
point::point(________)
{
x=z.x;
y=z.y:
}
void main(){
point p1(2,3);
point p2(p1);
}
-
完成下面类中成员函数的定义。
#include
class A
{private:
int val;
public:
A(int i)
{val=i;}
int();
};
A::operator int()
{_________}
class B:public A
{public:
B(int i):A(i){}
};
void main()
{B n(100)
int i=n;
cout<
}
-
完成下面类中成员函数的定义。
#include
#include
class Arr
{protected:
float*p;
int n;//数组大小(元素个数)
public:
Arr(int sz=10)
{n=sz
p=new float[n];
~Arr(void)
{__________}
int Getn(void)const
{
return n;
}
float& operator[](int i)
{__________}
void Print();
};
void Arr::Print()
{int i
for(i=0;i
Getn();i++) {if(i%10==0)
cout<
cout<
}
cout<
}
void main()
{Arr a(20);
for(int=0;i
a[i]=i*2
a.Print()
}
-
在下面程序的横线处填上适当内容,使程序执行结果为:" hello, andylin"
#include
#include
using namespace std;
class mystring
{public:
Char*pdata;
mystring( int len)
{pdata= new char[len+1];}
~mystring()
{delete pdata;}
void show(){cout<
};
void fun( mystring* * array, int len)
{mystring ld=*array;
memepy(*array, old, len);
}
void main()
{mystring str(20);
Mystring*pstr=&str;
mystring**ppstr=&pstr;
strepy(str.pdata,"hello, andylin");
fun(ppstr,20);
____________
-
#include
class f{
private:
float x,y;
public:
f(float a, float b){x=a;y=b;}
float max(){return(x
};
void main(){
fa(1.5,3.5);
cout<
}
-
#include
void main()
{int n;
cin>>n;
Cin.get();
char s[n];
Cin.getline(s,n);
cout<
delete s;
}
-
#include
#include
#include
using namespace std;
class A
{public:
A(const char*na){strepy(name,na);}
private:
char name[80];
};
class B:public A
{public:
B(const char*nm):A(nm){}
void show();
};
void B::show()
{cout<<"name:"<
};
void main()
{B b1("B");
b1.show();
}
-
class ABC
{int a;
public:
ABC(int aa)a(aa){}
};
-
#include
class shape
{ public:
virtual int area( return();}
};
class rectangle: public shape
{public:
int a, b;
void setLength (int x, int y){a=x;b=y;}
int area() return a*b;}
};
void main()
{rectangle r;
r.setLength(3,5);
shape s1, *s2 =r;
cout<
s2=s1;
cout<
}
-
若将一个二元运算符重载为类的成员函数,其形参个数应该是_________个。
-
_______类是从iostream类公有派生的,提供从文件中提取数据或把数据写入到文件的各种操作。
-
静态成员函数是________的成员,不是对象的成员。
-
执行下列代码stringstr("HelloC++");stringnewstr=str.substr(5,3);后,newstr的内容为_________。
-
在保护派生中,基类权限为publie的成员在派生类中为__________。
-
析构函数名是在类名前加上_______符号,用来释放对象所占的内存空间。
-
用来派生新类的类称为_______,而派生出的新类称为它的子类或派生类。
-
在结构体中定义的函数称为_______。
-
基类的公有成员在派生类中的访问权限由_________决定。
-
赋值兼容规则是指在公有派生情况下,基类对象_______(能、不能)使用派生类对象。
-
通过C++语言中的________机制,可以从现存类中构建其子类。
-
将指向对象的引用作为函数的形参,形参是对象的引用,实参是__________。
-
C++语言支持_______,实际上就是变量的别名。
-
通过C++语言中的类的_________,可以扩充和完善已有类以适应新的需求。
-
由const修饰的对象称为________。
-
若要访问指针变量p所指向的数据,应使用表达式________。
-
在C++流类库中,根基类为________。
-
在已经定义了整型指针ip后,为了得到一个包括10个整数的数组并由i所指向,应使用语句_________。
-
每个对象都是所属类的一个_________。
-
设要把一个文件输出流对象outfile与文件”d:\text.txt”相关联,设置以二进制形式打开。所用的C++语句是_______。
-
以下叙述错误的是()
- A.基类的保护成员在公有派生类中仍然是保护成员
- B.基类的保护成员在派生类中仍然是保护成员
- C.基类的保护成员在私有派生类中是私有成员
- D.基类的保护成员在私有派生类中能够被访问
-
重载赋值操作符时,应声明函数为()
- A.友元函数
- B.虚函数
- C.成员函数
- D.静态函数
-
类A中存在静态数据成员x,设a和b是类A的两个对象,在执行a.x=10之后,b.x的值为()
- A.未初始化
- B.等于a.x
- C.等于0
- D.随机
-
下述静态成员的特性中,错误的是()
- A.静态成员函数不能利用this指针
- B.静态数据成员要在类体外进行初始化
- C.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符
- D.静态数据成员不是所有对象所共有的
-
派生类继承了基类的()
- A.所有成员
- B.部分成员
- C.数据成员
- D.成员函数
-
下列数组的定义中,错误的是()
- A.char ca1[]={c","m","n"};
- B.char ca2[6]="name";
- C.char ca3[4]="your";
- D.int array[]=1,2,3,4;
-
下列关于复制构造函数的说法中错误的是()
- A.复制构造函数是一种特殊的构造函数,函数名与类名相同
- B.若自定义派生类的复制构造函数,那么也必须自定义基类的复制构造函数
- C.复制构造函数只能有一个参数
- D.复制构造函数不允许在函数体中使用return语句
-
下面列出的基类中的哪部分能被派生类自动继承
- A.基类中的默认构造函数()
- B.基类中的虚析构函数
- C.基类中的复制构造函数
- D.基类中的常成员函数
-
在main函数中可以用p.a的形式访问派生类对象p的基类成员a,其中a是()
- A.私有继承的公有成员
- B.公有继承的私有成员
- C.公有继承的保护成员
- D.公有继承的公有成员
-
下列表达式中不可能作为左值(赋值运算符左侧)的是()
- A.a=b
- B.*p
- C.f(a,b)
- D.&a
-
下述静态数据成员的特征中,错误的是()
- A.说明静态数据成员时前边要加修饰符static
- B.静态数据成员要在类体外进行初始化
- C.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符
- D.静态数据成员不是所有对象所共用的
-
声明函数模板的关键字是()
- A.inline
- B.template
- C.const
- D.short
-
在C++中,数据封装要解决的问题是()
- A.实现规范化
- B.防止书写错误
- C.防止非法访问
- D.实现类型转换
-
下列给字符数组进行初始化中,正确的是()
- A.char s1[]="\n";
- B.char s2[3]="xyz";
- C.char s3[][3]={"a","x","y"};
- D.char s4[2,4]={"xyz","mnp"};
-
C++源文件的扩展名为()
- A..cpp
- B..c
- C..txt
- D..exe
-
下面关于引用的描述正确的是()
- A.引用是被引用变量的复制
- B.被引用变量是引用的别名
- C.引用是被引用变量的别名
- D.被引用变量是引用的复制
-
多态性是指()
- A.不同的对象调用不同名称的函数
- B.不同的对象调用相同名称的函数
- C.一个对象调用不同名称的函数
- D.一个对象调用不同名称的对象
-
关于C++主函数的描述,正确的是()
- A.有且只能有一个,名称不限
- B.可以有多个,名称不限
- C.有且只能有一个,名称为main
- D.可以有多个,名称为main
-
如果表达式y*x++中,“*”是作为成员函数重载的运算符,“++”是作为友元函数重载的运算符,采用运算符函数调用格式时,该表达式应表示为()
- A.x.operator++().operator *(y)
- B.operator *(x.operator++(0),y)
- C.y.operator * operator ++(x,0))
- D.operator*(operator ++(x,0),y)
-
假定一个类的构造函数为“A(int i,int j)x=i,y=i*j;}”,则执行“A a(4,5);”语句后,a.x和a.y的值分别为()
- A.4和5
- B.5和4
- C.4和20
- D.20和5