C语言程序设计A期末模拟试题三.docx
《C语言程序设计A期末模拟试题三.docx》由会员分享,可在线阅读,更多相关《C语言程序设计A期末模拟试题三.docx(9页珍藏版)》请在冰豆网上搜索。
C语言程序设计A期末模拟试题三
C语言程序设计A期末模拟试题三
一、单项选择题(每小题2分,共20分)
1.C++程序的基本模块为()。
A.表达式B.标识符C.语句D.函数
2.设x和y均为bool量,则x&&y为真的条件是()。
A.它们均为真B.其中一个为真
C.它们均为假D.其中一个为假
3.函数调用不可以(D)。
A.出现在一个表达式中
B.出现在执行语句中
C.作为一个函数的实参
D.作为一个函数的形参
4.假定变量m定义为“intm=7;”,则定义变量p的正确语句为(B)。
A.intp=&m;B.int*p=&m;C.int&p=*m;D.int*p=m;
5.假定有“structBOOK{chartitle[40];floatprice;};BOOK*book;”,则不正确的语句为(A)。
A.BOOK*x=newbook;B.BOOKx={"C++Programming",27.0};
C.BOOK*x=newBOOK;D.BOOK*x=book;
6.假定变量x定义为“intx=5;”,要使rx成为x的引用(别名),rx应定义为(D)。
A.intrx=x;B.intrx=&x;C.int*rx=&x;D.int&rx=x;
7.面向对象方法的多态性是指()。
A.一个类可以派生出多个特殊类
B.一个对象在不同的运行环境中可以有不同的变体
C.针对一消息,不同的对象可以以适合自身的方式加以响应
D.一个对象可以是由多个其他对象组合而成的
8.面向对象软件开发中使用的OOD表示()。
A.面向对象分析B.面向对象设计
C.面向对象语言D.面向对象方法
9.在关键字private后面定义的成员为类的()成员。
A.私有B.公用C.保护D.任何
10.假定AA为一个类,inta()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为()。
A.intAA:
:
a()B.intAA:
a()
C.AA:
:
a()D.AA:
:
inta()
二、填空题(每题2分,共20分)
1.C++语言的编译单位是扩展名为_CPP__的_____程序_____文件。
2.C++常数0345对应的十进制值为__________。
3.假定x是一个逻辑量,则!
x||false的值为__________。
4.若a是一个字符数组,则从键盘上向该数组输入一个字符串的表达式为____cin>>a____。
5.当定义一个结构体变量时,系统分配给该变量的内存大小等于各成员所需内存大小的____总和___。
6.若p指向x,则____*p____与x的表示是等价的。
7.已知语句“cout<
8.若采用p->abc(y)表达式调用一个成员函数,在成员函数中使用的________就代表了类外的p指针。
9.重载插入运算符<<或抽取运算符>>时,其运算符函数不能被定义为类的________函数。
10.在一个或若干个类的基础上构造一个新类,被称为___________。
三、程序填充题(对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面。
每小题6分,共24分)
1.把从键盘上输入的一个大于等于3的整数分解为质因子的乘积。
如输入24时得到的输出结果为“2223”,输入50时得到的输出结果为“255”,输入37时得到的输出结果为“37”。
#include
voidmain()
{
intx;
cout<<"请输入一个整数,若小于3则重输:
";
docin>>x;while(___
(1)___);
inti=2;
do{
while(___
(2)___){
cout<
x/=i;
}
___(3)___;
}while(iif(x!
=1)cout<cout<}
(1)
(2)(3)
2.主函数调用一个fun函数将字符串逆序。
#include
#include
___
(1)___;
voidmain(){
chars[80];
cin>>s;
___
(2)___;
cout<<”逆序后的字符串:
”<
}
voidfun(charss[]){
intn=strlen(ss);
for(inti=0;___(3)____;i++){
charc=ss[i];
ss[i]=ss[n–1–i];
ss[n–1–i]=c;
}
}
(1)
(2)(3)
3.已知一维数组类ARRAY的定义如下,构造函数的作用是把参数n的值赋给s,给v动态分配长度为n的数组空间,接着利用数组参数a初始化v所指向的数组。
classARRAY{
int*v;//指向存放数组数据的空间
ints;//数组大小
public:
ARRAY(inta[],intn);
~ARRAY(){delete[]v;}
intsize(){returns;}
int&operator[](intn);
};
___
(1)___ARRAY(inta[],intn)
{
if(n<=0){v=NULL;s=0;return;}
s=n;
v=___
(2)___;
for(inti=0;i}
(1)
(2)(3)
4.#include
#include
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);
___
(1)___;//由a指向长度为MaxLen的动态数组
for(inti=0;i}
~A(){delete[]a;}
intGetValue(inti)___
(2)___//函数体返回a[i]的值
};
voidmain()
{
intb[10]={1,2,3,4,5,6,7,8,9,10};
Ar(b,10,10);
inti,s=0;
for(i=0;i<10;i++);___(3)___//把r对象的a数据成员中的每个
//元素值依次累加到s中
cout<<"s="<
}
(1)
(2)(3)
四、理解问答题(写出前两小题的程序运行结果和指出后两小题的程序(或函数)所实现的功能。
每小题6分,共24分)
1.#include
voidmain()
{
inta=2,b=5,c=0;
if(a+b>10)c=a*b;elsec=3*a+b;
if(c<=20)cout<cout<a=a+b;b=a+b;c+=a+b;
cout<<"a,b,c="<}
2.#include
#include
voidmain(){
chara[5][10]={"student","worker","soldier","cadre","peasant"};
chars1[10],s2[10];
strcpy(s1,a[0]);strcpy(s2,a[0]);
for(inti=1;i<5;i++){
if(strcmp(a[i],s1)>0)strcpy(s1,a[i]);
if(strcmp(a[i],s2)<0)strcpy(s2,a[i]);
}
cout<}
3.#include
#include
voidmain()
{
intx,y;
cin>>x;
y=int(sqrt(x));//sqrt(x)为求x的算术平方根
for(inti=1;i<=y;i++)
if(x%i==0)cout<<”x=”<
}
4.IntNode*FindMax(IntNode*f)
{
if(!
f)returnNULL;
IntNode*p=f;
f=f->next;
while(f){
if(f->data>p->data)p=f;
f=f->next;
}
returnp;
}
假定IntNode的类型定义为:
structIntNode{
intdata;//结点值域
IntNode*next;//结点指针域
};
五、编程题(每小题6分,共12分)
1.计算1+3+32+...+310的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。
2.根据下面类中Reverse1函数成员的原型和注释写出它的类外定义。
classAA{
int*a;
intn;
intMS;
public:
voidInitAA(intaa[],intnn,intms){
if(nn>ms){cout<<"Error!
"<(1);}
MS=ms;
n=nn;
a=newint[MS];
for(inti=0;i}
AA*Reverse1();//通过动态存储分配得到一个对象,并动态分配
//a[MS]数组空间,要求该对象中的n和MS的值与*this中的
//对应成员的值相同,数组元素的值是按照*this中数组元
//素的相反次序排列得到的,要求该函数返回动态对象的地址。
};
C语言程序设计A期末模拟试题三
参考答案
一、单选题
1.D2.A3.D4.B5.A6.D7.C8.B9.A10.A
二、填空题
1.cpp、程序2.2293.!
x4.cin>>a5.总和6.*p
7.ple8.this9.成员10.继承(派生)
三、程序填充题
1.
(1)x<3(或x<=2)
(2)x%i==0(3)i++
2.
(1)voidfun(charss[])
(2)fun(s)(3)i3.
(1)ARRAY:
:
(2)newint[n](3)v[i]=a[i]
4.
(1)a=newint[MaxLen]
(2){returna[i];}(3)s+=r.GetValue(i)
四、理解问答题
1.
121
a,b,c=7,12,30
2.
workercadre
3.把从键盘上输入的一个整数x分解为所有可能的每两个因子之积。
4.实现strcat函数的功能,把str2所指字符串连接到str1所指字符串的后面,并返回str1指针。
五、编程题
1.#include
voidmain()
{
inti;//用i作为循环变量
intp=1;//用p作为累乘变量
ints=1;//用s作为累加循环变量
for(i=1;i<=10;i++){p*=3;s+=p;}
cout<
}
2.
AA*AA:
:
Reverse1()
{
AA*px=newAA;
px->n=n;px->MS=MS;
px->a=newint[MS];
for(inti=0;ipx->a[n-1-i]=a[i];
}
returnpx;
}