C++上考试安排及模拟练习.docx
《C++上考试安排及模拟练习.docx》由会员分享,可在线阅读,更多相关《C++上考试安排及模拟练习.docx(45页珍藏版)》请在冰豆网上搜索。

C++上考试安排及模拟练习
期末考试安排及模拟训练
期末考试安排:
成绩构成
笔试%60+机试30%+10%平时
题型与评分标准
a)笔试(卷面100分),考试时间120分钟
大学计算机基础(20分)
1.选择题(共10题,每题1分,共10分)
2.填空题(共10题,每题1分,共10分)
C++程序设计(80分)
3.选择、填空题(共20题,计30分)
4.阅读填空题(共4-5题,每空1-2分,共25分)
5.完善程序题(共4-5题,每空1-2分,共25分)
b)机试(卷面100分),考试时间70分钟
1.改错题(50分),类与对象
2.编程题(50分,需包含算法、文本文件操作)
第一套笔试练习
一、基础部分选择与填空(10+10共20分)
1.计算机语言的发展经历几个阶段?
下列描述正确的是。
A)机器语言、汇编语言和高级语言三个阶段
B)机器语言、算法语言、对象语言和高级语言等4个阶段
C)高级语言和机器语言两个阶段
D)机器语言和汇编语言两个阶段
2.假设在线性数据组织中,数据连续存储,每个数据占4个存储单元,第3个数据的存储地址为S,则第6个数据的存储地址为。
A)S+(6-1)*4B)S+6*4
C)(S-2*4)+(6-1)*4D)6*4
3.完整的计算机系统应包括_________ 。
A.)CPU和外部设备 B)硬件系统和软件系统
C)主机和外部设备 D)系统软件和应用软件
4.在表示硬盘容量时,一般用GB作为单位,1GB准确的含义是。
A)1000MBB)1024百万
C)1024MBD)1024KB
5.已知字符8的ASCII码是38H,现通过另一个数0FH通过运算得到字符8所对应的数值8,则该运算应该是。
A)按位逻辑非B)按位逻辑与
C)按位逻辑或D)按位逻辑异或
6.假设:
某学生基本信息为:
女、团员、优秀学生干部、平均绩点等于4分,则下列表达式的结果分别是。
.NOT.团员.AND.优秀学生干部.OR.团员.AND..NOT.优秀学生干部
性别=“女”.AND.平均绩点<4.AND.团员.OR.优秀学生干部
(平均绩点>4.OR.性别=“女”).AND..NOT.团员
A).T..F..F.B).F..T..F.
C).F..F..T.D).T..F..T.
7.十进制算式(3210+728+524+1)/16的结果是。
A)(310)10B)(466)8
C)(135)16D)(100110111)2
8.采用某种进位制时,如果4×5=17,那么,6×3=。
A)15B)21C)20D)19
9.将计算机软件分为系统软件和应用软件,应用软件是指面向特定问题处理的
软件,是解决特殊性问题,而系统软件是面向计算机硬件系统,是解决问题。
10.数据的逻辑组织方法有简单数据组织、线性数据组织、和网状数据组织。
11.栈是线性数据组织,只是对数据进栈和出栈做了些限制,其特点是。
12.每一种不同类型的CPU都有自己独特的一组指令,一个CPU所能执行的
全部指令称为______________。
13.“啊”字的区位码是1601H,则汉字国标码是H。
14.为了便于对内存储器中存放的信息进行管理,整个内存被划分成许多存储
单元,每个存储单元都有一个编号,此编号称为。
15.有八位二进制编码为11111111,如将其作为带符号整数的补码,它所表示
的整数值为。
C++程序设计部分(共80分)
二.选择题(15分)
1.以下标识符,不合法的是:
A.IfB.PhotoshopC.3DMaxD.seu
2.对于for,do...while和while三个语句,以下描述错误的是:
A.这三个都是循环语句
B.当条件不满足时,这三个语句的循环次数都可能是0次
C.这三个语句中,都可以使用break和continue
D.这三个语句的循环体都可以是空的
3.判断字符c是是否是小写字母,并将其转为大写字母的语句是:
A.if(c>=‘a’&&c<=‘z’)c+=‘a’-‘A’;
B.if(‘a’<=c<=‘z’)c=c-(‘a’-‘A’);
C.c=(c>=‘a’&&c<=‘z’)?
(c-(‘a’-‘A’)):
c;
D.c=(‘a’<=c<=‘z’)?
(c+(‘a’-‘A’)):
c;
4.现有三个函数:
(1)doubleAdd(doublea)
(2)doubleAdd(doublea,doubleb)
(3)intAdd(doublea,doubleb,doublec=0)
那么以下对Add函数调用过程中,编译出现错误的是:
A.Add(3);B.Add(3.3,3.4);
C.Add(2.3,3.1,3.2);D.Add(3.4);
5.以下语句中,可以将数组A中的全部元素全部赋值为1的语句
是:
A.intA[10]={1};
B.intA[10];for(inti=0;i<10;i++)A[i]=1;
C.intA[10];for(inti=0;i<10;i++)A[1]=i;
D.intA[10]=1;
6.语句:
if((A&0x0001)!
=0)的作用是:
A.判断A的最低位是否为1B.判断A是否是正数还是负数
C.判断A和0x0001是否相等D.判断A是否是2的倍数
7.关于类和对象不正确的说法是:
A.类是一种类型,它封装了数据和操作B.对象是类的实例
C.一个对象必属于某个类D.一个类的对象只有一个
8.在类定义的外部,可以被访问的成员有
A.所有类成员B.private或protected的类成员
C.public的类成员D.public或private的类成员
9.下面对构造函数的不正确描述是
A.系统可以提供默认的构造函数
B.构造函数可以有参数,所以可以有返回值
C.构造函数可以重载
D.创建对象时,一定会调用某个构造函数(包括默认构造函数)
10.以下对于运算符的重载的申明,正确的是
A.CPointoperator/(CPoint&p,doubled);
B.voidoperator+(CPointp1,CPointp2,CPointp3);
C.bool==(CPoint&p1,CPoint&p2);
D.void*(CPointp1,CPointp2);
三.填空题(15分)
1.常量'\x41'所表示的字符的ASCII码是(填写十进制数字)。
2.在switch语句中,当整数变量val遇到常量1或2时,都只需要调用函数F,那么最简单的做法是:
(每行一个语句,只能写两行)
switch(val)
{
F();break;
……
}
3.有函数定义:
voidPrintPoint(CPointp){cout<
运行语句:
CPointp;p.x=p.y=4;PrintPoint(p);会创建个对象。
函数定义修改为:
voidPrintPoint(CPoint&p){cout<
运行同样的语句将创建个对象。
4.假设有语句:
CPointp(3,4);CPointp2=p;
则创建p2时调用的构造函数是构造函数。
5.程序中要对某个函数的调用次数进行统计,方法
(1)至(5)中,可行的
是;如果要统计某个类,创建对象的次数,在以下所有方法中,
最佳的方法是:
。
(1)在该函数中创建普通变量
(2)在该函数中创建静态变量
(3)在该函数中创建const常量(4)创建全局变量
(5)创建全局的const常量(6)创建这个类的普通成员变量
(7)创建这个类的静态成员变量
6.求n!
的函数定义:
intF(intn){if(n<=1)return1;returnF(n-1)*n;};该
函数所采用的程序结构是:
;调用F(20),函数返回:
-2102132736,
这个结果显然是错误的,原因是。
四.阅读填空题(25分)
1.写出下列程序的输出结果。
#include
usingnamespacestd;
intmain()
{
intn=1;
cout<<"取1元,2元,5元纸币10张,支付18元的付法:
"<for(intx=0;x<=10;x++)
for(inty=0;y<=9;y++)
if(x+2*y+5*(10-x-y)==18)
cout<1元币"<<return0;
}
程序的输出结果为:
2.假设程序运行时输入2个整数:
10
#include
usingnamespacestd;
constdoublePI=3.14;
doubleCaculateArea(doubleradius)
{
returnPI*radius*radius;
}
intmain()
{
intd;
doublearea;
while
(1)
{
cout<<"输入直径:
"<cin>>d;
if(d>0)
{
area=CaculateArea(d/2);
cout<<"直径为"<"<
}
else
break;
}
return0;
}
程序的输出结果为:
3.写出下列程序的输出结果。
#include
usingnamespacestd;
inttotal=0;
intfunc(intx)
{
inti;
staticintn=0;
n++;
total++;
cout<if(x<=0)return1;
i=x+func(x-1);
cout<returni;
}
intmain()
{
inti;
i=func
(2);
cout<<"result="<
return0;
}
4.写出下列程序的输出结果。
#include
usingnamespacestd;
intf(intx){cout<<"f1=";returnx;}
intf(chara,charb=0)
{cout<<"f2=";return(a>b?
1:
-1);
}
doublef(double&x)
{cout<<"f3=";x+=sizeof(x);return0;
}
intmain()
{
shorta=0;
charc='A';
doubley;
y=f(0);
cout<y=f(a);
cout<y=f(c);
cout<y=f(a,c);
cout<f(y);
cout<return0;
}
5.写出下列程序的输出结果。
#include
usingnamespacestd;
chargid='A';
classNumber
{
private:
inti;
charid;
public:
Number(intx=0)
{
i=x;
id=gid++;
cout<<"ConstructorNumber:
"<}
Number(constNumber&x)
{
i=x.i;
id=gid++;
cout<<"CopyNumber:
"<}
~Number(){cout<<"DestructorNumber:
"<Numberoperator+(constNumber&x);
};
NumberNumber:
:
operator+(constNumber&x)
{
Numberresult(i+x.i);
returnresult;
}
intmain()
{
Numberx
(1),y;
y=x+2;
return0;
}
五.完善程序题(25分)
1、要求程序运行后的输出结果为:
*
***
*****
*******
*****
***
*
请在程序中的横线处填入适当的语句,将程序补充完整
#include
usingnamespacestd;
voidmain()
{;
for(i=1;i<=4;i++)
{
for(j=1;j<=4-i;)
cout<<"";
for(k=1;;k++)
cout<<"*";
cout<}
for(i=3;i>0;)
{
for(j=1;;j++)
cout<<"";
for(k=1;k<=2*i-1;k++)
cout<<"*";
cout<}
}
2、东南大学举行歌曲比赛,由9位评委给参赛选手打分,满分为10分。
评分规则是:
去掉1个最高分和1个最低分,余下的7个分数的平均值为选手最后得分。
试编程计算并输出选手去掉最高分和最低分后的总分及最后得分。
#include
usingnamespacestd;
intmain()
{
floats,maxs,mins,sum=0;
maxs=0;mins=10;//用于存贮最高分和最低分,为变量赋初值
cout<<"Input9scores:
"<for(inti=1;i<=9;i++)
{
cin>>s;
;
if(s>maxs);
if(s}
sum=;
cout<<"总分:
"<cout<<"最后得分:
"<<<return0;
}
3、下列程序的功能是用函数的递归调用求1!
+2!
+3!
+4!
+5!
请将程序补充完整。
#include
usingnamespacestd;
longjiecheng(intn)
{if(n==1)
return1;
else
;
}
intmain()
{ints;
;
for(inti=1;i<=5;i++)
;
cout<<"1!
+2!
+3!
+4!
+5!
="<
return0;
}
4.下面程序中定义了一个复数类,请将程序补充完整。
#include
usingnamespacestd;
classComplex{
private:
;
public:
Complex(doubler=0.0,doublei=0.0)//定义构造函数
{Real=r;Image=i;}
Complex()//定义拷贝构造函数
{
Real=com.Real;
Image=com.Image;
}
voidPrint()
{cout<<"Real="<}
Complexoperator+=(Complexc)
{Complextemp();
Real=temp.Real;
Image=temp.Image;
;
}
};
intmain(void){
Complexc1(1.0,1.0),c2(2.0,2.0),c3(3.0,3.0);
c3+=c1+=c2;
c3.Print();
return0;
}
5、水仙花数(Armstrongnumber)是一个3位数字的数,它等于每个数字的3次幂的和。
例如153是水仙花数(具有3位数字且等于1*1*1+5*5*5+3*3*3)。
下面程序求100到999之间的所有水仙花数,试补充完整。
#include
usingnamespacestd;
voidmain()
{
intnum,sum,temp;
inti,j;
intbit,bit_n_power;
for(num=100;num<=999;num++)
{
;
temp=num;
for(i=1;i<=3;i++)
{
bit=temp%10;
bit_n_power=1;
for(j=1;j<=3;j++)
;//计算一位数字的3次幂
sum=sum+bit_n_power;
;
}
if()
{
cout<<"Thenumber"<"<}
}
}
第一套参考答案
一.计算机基础选择填空
ACBCBBCA
普遍性树(层次)先进后出指令集3621H地址-1
C++部分:
二.选择题
CBCBBADCBA
三.填空题
65
case1:
case2:
2,
1
拷贝
2和4;
7
递归
溢出(或,将n的数据类型改为double)
四.阅读填空题
1、
取1元,2元,5元纸币10张,支付18元的付法:
1:
1元币2张,2元币8张,5元币0张
2:
1元币5张,2元币4张,5元币1张
3:
1元币8张,2元币0张,5元币2张
2、.
输入直径:
10
直径为1的圆面积为:
0
输入直径:
3、.
2,1
1,2
0,3
1,3
2,3
result=4,3
4、
f1=0
f1=0
f2=1
f2=-1
f3=7
5、
ConstructorNumber:
A1
ConstructorNumber:
B0
ConstructorNumber:
C2
ConstructorNumber:
D3
CopyNumber:
E3
DestructorNumber:
D3
DestructorNumber:
E3
DestructorNumber:
C2
DestructorNumber:
E3
DestructorNumber:
A1
五:
完善程序题
1、
1、inti,j,k
2、j++
3、k<=2*i-1(或者k<2*i)
4、i--
5、j<=4-i(或者j<5-i)
2、
1、sum+=s
2、maxs=s
3、sum-maxs-mins
4、sum/7
3、
1、returnn*jiecheng(n-1)
2、s=0
3、s=s+jiecheng(i)
4、
1、doubleReal,Image
2、Complex&com
3、Real+c.Real,Image+c.Image
4、returntemp
5、
1、sum=0
2、bit_n_power=bit_n_power*bit
3、temp=temp/10
4、sum==num
第二套笔试练习
一、应用基础选择与填空:
(10+10共20分)
1.程序设计的三要素是。
A)应用、语言、环境B)数据、算法、程序
C)程序、文档、语言D)应用、环境、文档
2.数据组织的概念分为两个层次,他们是。
A)文件组织和数据库组织B)线性组织和层次组织
C)内存组织和外存组织D)逻辑组织和物理组织
3.完整的计算机系统应包括_________ 。
A.)CPU和外部设备 B)硬件系统和软件系统
C)主机和外部设备 D)系统软件和应用软件
4.在表示硬盘容量时,一般用GB作为单位,1GB准确的含义是。
A)1000MBB)1024百万C)1024MBD)1024KB
5.当前微机所用的系统总线标准主要是。
A)ISAB)EISAC)PCID)VESA
6.已知字符8的ASCII码是38H,现通过另一个数0FH通过运算得到字符8所对应的数值8,则该运算应该是。
A)按位逻辑非B)按位逻辑与
C)按位逻辑或D)按位逻辑异或
7.十进制算式(32