电类程序设计C++上A.docx
《电类程序设计C++上A.docx》由会员分享,可在线阅读,更多相关《电类程序设计C++上A.docx(18页珍藏版)》请在冰豆网上搜索。
电类程序设计C++上A
东南大学考试卷(A卷)
课程名称
程序设计与算法语言(上)
考试学期
09-10-2
得分
适用专业
09级电类专业
考试形式
闭卷
考试时间长度
120分钟
大学计算机基础部份(共15分)
一、选择与填充题:
(每题1分,共15题,共15分)
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++程序设计部分(共85分)
二.选择题(每题1.5分,共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);
三.填空题(每空1.5分,共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.写出下列程序的输出结果。
(此题每空1分)
#include
usingnamespacestd;
intmain()
{
intn=1;
cout<<"取1元,2元,5元纸币10张,支付19元的付法:
"<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(此题每空1分)
#include
usingnamespacestd;
constintPI=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.写出下列程序的输出结果。
(此题最后一空2分,其它空1分)
#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;
}
(此空2分)
4.写出下列程序的输出结果。
(此题每空1分)
#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.写出下列程序的输出结果。
(此题每空0.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;
}
(每空0.5分)
五.完善程序题(每空1.5分,共20空,计30分)
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"<"<}
}
}