elsereturn-1;//6分
}
训练第二套
一、单项选取题(每小题2分,共20分)
1.字符串”a+b=12\n”长度为()。
A.6B.7C.8D.9
2.假定一种二维数组定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]值为()。
A.0B.4C.8D.6
3.如下对的描述是()。
A.函数定义可以嵌套,函数调用不可以嵌套
B.函数定义不可以嵌套,函数调用可以嵌套
C.函数定义和函数调用均可以嵌套
D.函数定义和函数调用均不可以嵌套
4.设有定义“doublearray[10];”,则表达式sizeof(array)/sizeof(array[0])成果为array数组()。
A.首地址B.元素个数
C.每个元素所占字节数D.总字节数
5.若使p指向包括30个整型元素动态数组空间,则使用定义语句为()。
A.int*p=newint[30];B.int*p=newint(30);
C.int*p=new[30];D.*p=newint[30];
6.软件产品与其她软件产品组合成一种整体难易限度叫做软件()。
A.可维护性B.可复用性C.兼容性D.对的性
7.在多文献构造程序中,普通把类声明单独存储于()中。
A.主文献B.实现文献C.库文献D.头文献
8.在一种用数组实现队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队首后一种位置为()。
A.first+1B.(first+1)%MS
C.(first-1)%MSD.(first+length)%MS
9.假定一种类构造函数为“A(intaa=1,intbb=0){a=aa;b=bb;}”,则执行“Ax(4);”语句后,x.a和x.b值分别为()。
A.1和0B.1和4C.4和1D.4和0
10.假定AB为一种类,则执行“ABa
(2),b[3],*p[4];”语句时共调用该类构造函多次数为()。
A.3B.4C.5D.9
二、填空题(每小题2分,共20分)
1.用于输出表达式值原则输出流对象是____________。
2.假定x=5,y=6,则表达式x--*--y值为__________。
3.假定x是一种逻辑量,则x||true值为__________。
4.C++提供预解决命令有宏定义命令,条件编译命令和____________命令。
5.假定a是一种一维数组,则a[i]指针访问方式为________。
6.变量v定义为“doublev=23.4;”,要使指针pv指向v,则定义pv语句为______________。
7.若在类定义体中只给出了一种成员函数原型,则在类外给出完整定义时,其函数名前必要加上________和两个冒号分隔符。
8.若采用x.abc(y)表达式调用一种成员函数,在成员函数中使用________就代表了类外x对象。
9.假定顾客没有给一种名为AB类定义析构函数,则系统为其定义析构函数为__________。
10.假定顾客只为类AB定义了一种构造函数"AB(intaa,intbb=0){a=aa;b=bb;}",则定义该类对象时,其实参表中至多带有_________个实参。
三、程序填充题,依照题旨在横线上填写适当内容。
(每小题6分,共24分)
1.下面函数是求两个整型参数a和b最小公倍数。
intf2(inta,intb)
{
inti=2,p=1;
do{
while(a%i==0&&____________){
p*=i;a/=i;b/=i;
}
i++;
}while(a>=i&&____________);
returnp*a*b;
}
2.对数组a中元素按相反顺序重新排列。
voidPV(inta[],intn)
{
inti;
for(i=0;iintx=a[i];
____________________;
____________________;
}
}
3.假定有定义为“structNODE{intdata;NODE*next;};”,下面算法是把以L为表头指针链表中各结点依次按相反顺序链接并返回新链表表头指针。
NODE*f8(NODE*L)
{
if(L==NULL)returnNULL;
NODE*p=NULL,*q=L,*t;//p为新链表表头指针,初始值为空
while(q!
=NULL){
t=q;
q=q->next;
t->next=__________;
p=__________;
}
returnp;
}
4.类A定义
classA{
int*a;intn;intMaxLen;
public:
A():
a(0),n(0),MaxLen(0){}//无参构造函数
A(int*aa,intnn,intMM){//带参构造函数
n=nn;
MaxLen=MM;
if(n>MaxLen)exit
(1);
a=newint[MaxLen];
for(inti=0;i}
~A(){______________;}//释放动态存储空间
intGetValue(inti){returna[i];}//函数体返回a[i]值
};
四、理解问答题,分别写出前2小题程序运营成果和指出后2小题程序或函数功能。
(每小题6分,共24分)
1.#include
constintB=2;
voidmain()
{
intp=1,s=1;
while(s<50){
p*=B;
s+=p;
}
cout<<"s="<
}
运营成果:
2.#include
classCE{
private:
inta,b;
intgetmin(){return(a
a:
b);}
public:
intc;
voidSetValue(intx1,intx2,intx3){
a=x1;b=x2;c=x3;
}
intGetMin();
};
intCE:
:
GetMin(){
intd=getmin();
return(dd:
c);
}
voidmain()
{
intx=5,y=12,z=8;
CE*ep=newCE;
ep->SetValue(x+y,y-z,10);
cout<GetMin()<}
运营成果:
3.intff(intx,inty,charop){
intz;
switch(op){
case'+':
cout<>z;
if(x+y==z)return1;elsereturn0;
break;
case'-':
cout<>z;
if(x-y==z)return1;elsereturn0;
break;
case'*':
cout<>z;
if(x*y==z)return1;elsereturn0;
break;
case'/':
cout<>z;
if(x/y==z)return1;elsereturn0;
break;
default:
cout<<"运算符错,退出!
";exit
(1);
}
}
函数功能:
4.char*f(char*s){
intn=strlen(s);
char*r=newchar[n+1];
for(inti=0;iif(s[i]>='a'&&s[i]<='z')r[i]=s[i]-'a'+'A';
elser[i]=s[i];
r[n]=’\0’;
returnr;
}
函数功能:
五、编程题(每小题6分,共12分)
1.按照下面函数原型语句编写一种递归函数求出并返回数组a中n个元素平方和。
intf(inta[],intn);
2.依照下面类中拷贝构造函数原型写出它类外定义。
classArray{
int*a;//指向动态分派整型数组空间
intn;//记录数组长度
public:
Array(intaa[],intnn);//构造函数,运用aa数组长度nn初始化n,
//运用aa数组初始化a所指向数组空间
Array(Array&aa);//拷贝构造函数
};
答案供参照
一、单项选取题每小题2分,共20分)
1.B2.A3.B4.B5.A
6.C7.D8.B9.D10.B
二、填空题(每小题2分,共20分)
1.cout2.253.true(或1)4.文献包括5.*(a+i)
6.double*pv=&v;7.类名8.*this9.~AB(){}10.2
三、程序填充题,依照题旨在横线上填写适当内容。
(每小题6分,共24分)
评分原则:
每空3分。
1.b%i==0、b>=i
2.a[i]=a[n-i-1]、a[n-i-1]=x
3.p、t
4.a[i]=aa[i]、delete[]a
四、理解问答题,分别写出前2小题程序运营成果和指出后2小题程序或函数功能。
(每小题6分,共24分)
评分原则:
第3、4小题依照论述完整限度酌情给分。
1.s=63
2.4
3.以参数x和y作为运算对象,以参数op所存字符作为运算符,规定从键盘上输入运算成果,若对的则返回1否则返回0。
4.依照参数s所指向字符串,生成一种由r所指向新字符串并返回,该字符串使s字符串中小写字母均变为大写。
五、编程题(每小题6分,共12分)
评分原则:
按编程完整限度酌情给分。
1.intf(inta[],intn)
{
if(n==0)return0;//1分
elsereturna[n-1]*a[n-1]+f(a,n-1);//6分
}
2.Array:
:
Array(Array&aa){
n=aa.n;//1分
a=newint[n];//3分
for(inti=0;i}
训练第三套
一、单项选取题(每小题2分,共20分)
1.C++程序基