最新C语言程序设计A期末模拟试题14知识点复习考点归纳总结参考Word格式文档下载.docx
《最新C语言程序设计A期末模拟试题14知识点复习考点归纳总结参考Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《最新C语言程序设计A期末模拟试题14知识点复习考点归纳总结参考Word格式文档下载.docx(40页珍藏版)》请在冰豆网上搜索。
C.派生类除了包含它直接定义的成员外,还包含其基类的成员
D.派生类所继承的基类成员的访问权限保持不变
二、填空题(每题2分,共20分)
1.C++语言是在_________语言的基础上发展起来的。
2.当执行cin语句时,从键盘上输入每个数据后必须接着输入一个________符,然后才能继续输入下一个数据。
3.假定x是一个逻辑量,则x&
false的值为__________。
4.元素类型为char的二维数组a[10][30]共占用________字节的存储空间。
5.局部变量具有局部生存期,存放在内存的______栈______区中。
6.已知语句“cout<
<
”的输出是“Hello!
”,则语句“cout<
*p;
”输出的是__________。
7.对类中常量成员的初始化是通过在构造函数中给出的______________来实现的。
8.在重载一个单目运算符时,参数表中没有参数,说明该运算符函数只能是类的_____________。
9.假定用户为类AB定义了一个构造函数“AB(intaa):
a(aa){}”,则定义该类的对象时,有________种定义格式。
10.在每个成员函数中,隐含的第一个参数的参数名为________。
三、程序填充题(对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面。
每小题6分,共24分)
1.斐波那契数列的第1和第2个数分别为0和1,从第三个数开始,每个数等于其前两个数之和。
求斐波那契数列中的前20个数,要求每行输出5个数。
#include<
iostream.h>
voidmain(){
intf,f1,f2,i;
cout<
”斐波那契数列:
\n”;
f1=0;
f2=1;
setw(6)<
f1<
f2;
for(i=3;
i<
=20;
i++){
f=______
(1)______;
cout<
f;
if(_____
(2)______)cout<
endl;
f1=f2;
f2=____(3)_______;
}
(1)
(2)(3)
2.对数组a[n]按升序进行的选择排序算法
voidSelectSort(inta[],___
(1)___)
{
inti,j,k;
for(i=1;
n;
i++){//进行n-1次选择和交换
k=i-1;
for(j=i;
j<
j++)
if(a[j]<
a[k])___
(2)___;
intx=a[i-1];
a[i-1]=a[k];
___(3)___;
3.已知一个类的定义如下:
classAA{
inta[10];
intn;
public:
voidSetA(intaa[],intnn);
//用数组aa初始化数据成员a,
//用nn初始化数据成员n
intMaxA();
//从数组a中前n个元素中查找最大值
voidSortA();
//采用选择排序的方法对数组a中前n个元素
//进行从小到大排序
voidInsertA();
//采用插入排序的方法对数组a中前n个元素进行从小到大排序
voidPrintA();
//依次输出数组a中的前n个元素
};
该类中MaxA()函数的实现如下,请在标号位置补充适当的内容。
int____
(1)_____
{
intx=a[0];
for(inti=1;
i<
i++)
if(a[i]>
x)___
(2)___;
}
(1)
(2)(3)
4.classA{
inta;
public:
A(){a=0;
___
(1)___{}//定义构造函数,用参数aa初始化数据成员a
};
main(){
___
(2)___;
//定义类A的指针对象p
___(3)__;
//用p指向动态对象并初始化为整数5
四、理解问答题(写出前两小题的程序运行结果和指出后两小题的程序(或函数)所实现的功能。
1.#include<
#include<
stdlib.h>
voidmain()
inta[8]={25,48,32,85,64,18,48,29};
intmax,min;
max=min=a[0];
for(inti=0;
8;
i++){
if(x>
a[i])max=a[i];
if(x<
a[i])min=a[i];
cout<
"
max:
max<
min:
min<
2.#include<
for(inti=1,s=0;
20;
if(i%2==0||i%3==0)continue;
’’;
s+=i;
s<
3.voidtrans(intx)
{
chara[10];
inti=0,rem;
do{
rem=x%16;
x=x/16;
if(rem<
10)a[i]=48+rem;
//’0’字符的ASCII码为48
elsea[i]=55+rem;
//’A’字符的ASCII码为65
i++;
}while(x!
=0);
while(i>
0)cout<
a[i];
4.char*f(char*s){
intn=strlen(s);
char*r=newchar[n+1];
i++)
if(s[i]>
='
a'
&
s[i]<
z'
)r[i]=s[i]-'
+'
A'
;
elser[i]=s[i];
r[n]=’\0’;
returnr;
五、编程题(每小题6分,共12分)
1.求出从键盘上输入的10个整数中的最大值,要求输入变量用x表示,存储最大值的变量用max表示。
2.根据下面类中Reverse函数成员的原型和注释写出它的类外定义。
int*a;
intMS;
voidInitAA(intaa[],intnn,intms){
if(nn>
ms){cout<
Error!
exit
(1);
MS=ms;
n=nn;
a=newint[MS];
for(inti=0;
MS;
i++)a[i]=aa[i];
AA*Reverse();
//对于调用该函数的对象,将其a数组中前n个
//元素值按相反的次序排列,返回指向该对象的指针。
C语言程序设计A期末模拟试题一
参考答案
一、单选题
1.B2.A3.C4.B5.C6.A7.C8.B9.D10.D
二、填空题
1.C2.空白3.false(或0)4.3005.栈6.H7.初始化表
8.成员函数9.110.this
三、程序填充题
1.
(1)f1+f2
(2)i%5==0(3)f
2.
(1)intn
(2)k=j(3)a[k]=x
3.
(1)AA:
:
MaxA()
(2)x=a[i](3)returnx
4.
(1)A(intaa):
a(aa)
(2)A*p(3)p=newA(5)
四、理解问答题
1.
85
18
2.
157111337
3.
此函数用于把十进制整数x转换为十六进制数字串输出
4.
根据参数s所指向的字符串,生成一个由r所指向的新字符串并返回,该字符串使s字符串中的小写字母均变为大写。
五、编程题
1.#include<
voidmain()
intx,max;
cin>
>
x;
max=x;
9;
cin>
if(x>
max)max=x;
2.
AA*AA:
Reverse()
inti,x;
for(i=0;
n/2;
x=a[i];
a[i]=a[n-1-i];
a[n-1-i]=x;
returnthis;
C语言程序设计A期末模拟试题二
1.编写C++程序一般需经过的几个步骤依次是()。
A.编译、编辑、连接、调试
B.编辑、编译、连接、调试
C.编译、调试、编辑、连接
D.编辑、调试、编辑、连接
2.假定一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};
”,则元素a[2][1]的值为(A)。
A.0B.4C.8D.6
3.函数重载是指(A)。
A.两个或两个以上的函数取相同的函数名,但形参的个数或类型不同
B.两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同
C.两个以上的函数名字不同,但形参的个数或类型相同
D.两个以上的函数取相同的函数名,并且函数的返回类型相同
4.假定p指向的字符串为”string”,若要输出这个字符串的地址值,则使用(D)。
A.cout<
*s;
B.cout<
s;
C.cout<
D.cout<
(void*)s;
5.在类作用域中能够通过直接使用该类的()成员名进行访问。
A.私有B.公用C.保护D.任何
6.假定AA为一个类,a为该类公有的数据成员,若要在该类的一个成员函数中访问它,则书写格式为()。
A.aB.AA:
aC.a()D.AA:
a()
7.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾(即最后一个)元素的位置为()。
A.length+1B.first+length
C.(first+length-1)%MSD.(first+length)%MS
8.假定AB为一个类,则执行“ABr1=r2;
”语句时将自动调用该类的()。
A.无参构造函数B.带参构造函数C.赋值重载函数D.拷贝构造函数
9.双目运算符重载为普通函数时,其参数表中应带有()个参数。
A.0B.1C.2D.3
10.当派生类中有和基类一样名字的成员时,一般来说,()。
A.将产生二义性B.派生类的同名成员将覆盖基类的成员
C.是不能允许的D.基类的同名成员将覆盖派生类的成员
1.行尾使用注释的开始标记符为__________。
2.设enumPrintstatus{ready=2,busy,error};
则cout<
busy的输出结果是________。
3.重载一个函数的条件是:
该函数必须在参数的个数或参数的___类型_上与其它同名函数有所不同。
4.定义一个函数模板要用到的第一个修饰符是_template_。
5.与结构成员访问表达式p->
name等价的表达式是____________。
6.如果一个派生类的基类不止一个,则这种继承称为____________。
7.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则插入一个新元素的位置为__________。
8.向一个队列中插入元素就是把该元素放到________元素的后一位置上。
9.假定用户只为类AB定义了一个构造函数“AB():
a(0),b(0){}”,则定义该类对象x的定义语句“ABx;
”是_________(正确/错误)的。
10.除了__________运算符外,其他重载的运算符都可以被派生类继承。
1.统计字符串中英文字母个数的程序。
#include<
intcount(charstr[]);
voidmain(){
chars1[80];
cout<
”Enteraline:
”;
cin>
s1;
”count=”<
count(s1)<
intcount(charstr[]){
intnum=0;
//给统计变量赋初值
str[i];
i++)
if(str[i]>
=’a’&
str[i]<
=’z’||___
(1)___)
2.从键盘上输入一个正整数,然后把它转换成的二进制数的每一位存放到一维数组中,最后输出该二进制数。
注意二进制数的存放是按照从低位到高位的次序进行的。
intx;
输入一个整数:
inta[20],k=0,r;
r=x%2;
a[k++]=r;
x=___
(1)___;
}while(___
(2)___);
for(--k;
k>
=0;
k--)___(3)___;
3.假定有定义为“structNODE{intdata;
NODE*next;
”,下面算法根据table数组中的n个元素建立一个表头指针为L的链表,链表中结点值的顺序与数组元素值的顺序正好相反。
voidf6(NODE*&
L,inttable[],intn)
{
L=NULL;
if(n<
=0)return;
inti=0;
NODE*p;
while(___
(1)___){
p=newNODE;
p->
data=___
(2)___;
next=L;
___(3)___;
4.已知一个利用数组实现栈的类定义如下:
constintARRAY_SIZE=10;
classStack{
voidInit(){top=-1;
}//初始化栈为空
voidPush(intnewElem);
//向栈中压入一个元素
intPop();
//从栈顶弹出一个元素
boolEmpty(){//判栈空
if(top==-1)returntrue;
elsereturnfalse;
intDepth(){returntop+1;
}//返回栈的深度
voidPrint();
//按照后进先出原则依次输出栈中每个元素,直到栈空为止
private:
intelem[ARRAY_SIZE];
//用于保存堆栈元素的数组
inttop;
//指明栈顶元素位置的指针
该类的Pop和Print函数的实现分别如下:
___
(1)___{
if(top==-1){
栈空!
exit
(1);
//中止运行
return___
(2)___;
voidStack:
Print(){
while(!
Empty())
___(3)___<
'
'
iomanip.h>
constintN=5;
inti,p=1,s=0;
N;
p=p*i;
s=s+p;
setw(5)<
2.#include<
string.h>
classCD{
char*a;
intb;
voidInit(char*aa,intbb)
a=newchar[strlen(aa)+1];
strcpy(a,aa);
b=bb;
char*Geta(){returna;
intGetb(){returnb;
voidOutput(){cout<
a<
b<
voidmain()
CDdx,dy;
chara[20];
dx.Init("
abcdef"
30);
strcpy(a,dx.Geta());
strcat(a,"
xyz"
);
dy.Init(a,dx.Getb()+20);
dx.Output();
dy.Output();
3.#include<
math.h>
inti=10,a;
0){
a=rand()%100+10;
intj,k=int(sqrt(a)+1e-5);
//sqrt(x)为求x的平方根函数
for(j=2;
j<
=k;
j++)
if(a%j==0)break;
if(j>
k){cout<
i--;
4.intf8(constchar*str1,constchar*str2)
while(str1[i]&
str2[i])
if(str1[i]==str2[i])i++;
elseif(str1[i]>
str2[i])return1;
elsereturn-1;
if(str1[i]==str2[i])return0;
elseif(str1[i]>
elsereturn-1;
1.按照下面函数原型语句编写一个函数,返回二维数组a[m][n]中所有元素的平均值,假定采用变量v存放平均值。
2.根据下面类中MaxMin函数成员的原型和注释写出它的类外定义。
intMaxMin(int&
x,int&
y);
//从数组a的前n个元素中求出
//最大值和最小值,并分别由引用参数x和y带回,
//同时若n大于0则返回1,否则返回0。
C语言程序设计A期末模拟试题二
参考答案
三、单选题
1.B2.A3.A4.D5.B6.A7.C8.D9.C10.B
四、填空题
1.//2.33.类型4.template5.(*p).name6.多继承
7.(first+length)%MS8.队尾9.正确10.赋值
1.
(1)str[i]>
=’A’&
=