资源描述
东南大学2008~2009第2学期
C++(上)试卷
A卷
第一部分 计算机基础
一、选择题(每小题1分,共10分)
1.一个完整的计算机系统应包括 。
A.主机及外部设备 B.机箱、键盘、显示器及打印设备
C.硬件系统和软件系统 D.中央处理器、储存器及外部设备
2.按位逻辑与运算:11001010^11000101的运算结果是 。
A.00001000 B.00001001 C.11000001 D.11000000
3.下列关于存储器的说法中,正确的是 。
A.ROM是只读存储器,其中的内容只能读一次
B.硬盘通常安装在主机箱内,所以硬盘属于内存
C.CPU不能直接从外存储器读取数据
D.任何存储器都有记忆能力,且断电后信息不会丢失
4.在某进制的运算中4*5=14,根据这一运算规则,则5*7= 。
A.3A R.35 C.29 D.23
5.长度为1个字节的二进制整数,若采用补码表示,且由5个“1”和3个“O”组成,则可表示的最小十进制整数为 。
A.-120 B.-113 C.-15 D.-8
6.算法设计采用的方法是 。
A.由精到粗、由具体到抽象 B.由粗到精、由抽象到具体
C.由精到粗、由抽象到具体 D.由粗到精、由具体到抽象
7.下列四个不同进位制的数中最大的数是 。
A.二进制数1001101.01 B.十进制数73.5
C.八进制数115.1 D.十六进制数4C.4
8.下列编码中, 不属于汉字输入码。
A.点阵 B.全拼双音码 C.郑码输入码 D.区位码码
9.外存中的文件必须读入 后计算机才能进行处理。
A.CPU B.Cache C.ROM D.RAM
10.程序的基本结构不包括 。
A.循环结构 B.递推结构 C.分支结构 D递归结构
二、填空题(每空1分,共5分)
1.C语言源程序转换为目标程序的过程称为 (1) 。
7.在线性数据组织中,栈是一种进栈和出栈均在同一端口进行的组织方法,这种组织方法的特点可以表示为 (2) 。
6.线性数据组织可以分为 (3) 和 (4) 两种。
3.下图是一个二叉树层次数据组织,请按照中序的顺序给出遍历结果。(说明:中序是指对于任何一个节点和其两个子女,先访问左子女,再访问该节点,最后访问右子女。)中序输出结果: (5) 。
A
R
C
H
F
B
N
K
G
第二部分 C++程序设计
一、选择题(每小题2分,共20分)
1.a是一个整型变量,则执行下列输出语句后a的值是 。
cout<<(a=3*5,a*4,a+=5);
A.65 B.0 C.15 D.20
2.设整型变量x的值是10,则表达式2>x>5的值是 。
A.不确定 B.1 C.0 D.表达式非法
3.设整型变量x的当前值为4,执行以下循环语句后,输出的结果是 。
do
cout<<(x-=2);
while(!(--x));
A.2 B.1 -2 C.3 0 D.死循环,输出许多值
4.对下面三条语句,正确的论断是 。
(1)if(!a)s1;else s2;
(2)if(a==0)s2;else s1;
(3)if(a!=0)s1;else s2;
A.三者相互等价 B.三者相互不等价
C.只有(2)和(3)等价 D.以上三咱说法都不正确
5.执行以下程序段的输出是:
for(int i=1;i<7;i++)
{ if(i%3==0)continue;
cout<<i<<'\t';
}
A.1 2 3 4 5 6 B.1 2 4 5 C.1 2 3 D.1 2
6.C++语言中函数返回值的类型是由 决定的。
A.定义函数时所指定的函数类型 B.调用该函数的主调函数类型
C.return语句中的表达式类型 D.传递给函数的实参类型
7.设有函数声明 int fun(int a,int &b);,有变量int i,j;,下面哪个是对函数的正确调用
A.fun(i,&j) B.fun(i,j+2)
C.fun(i+2,j) D.fun(2,3)
8.在一个函数内部,以下描述正确的是__________。
A.可以定义和调用其他函数
B.可以调用但不能定义其他函数
C.不可以调用但能定义其他函数
D.不可以调用也不能定义其他函数
9.以下对二维数组a进行正确初始化的是 。
A.int a[2][3]={{1,2},{3,4},{5,6}};
B.int a[][3]={1,2,3,4,5,6};
C.int a[2][]={1,2,3,4,5,6};
D.int a[2][2]={(1,2),(3,4)};
10.在定义int a[2][3];之后,对a的引用正确的是 。
A.a(1,2) B.a[1,3] C.a[1>2][!1] D.a[2][0]
二、阅读理解(6小题,共35分)
1.阅读下列程序,指出程的输出结果,每空2分,共4分。
#include<iostream.h>
void main(void)
{
int a[4][4]={1,2,3,4,2,2,5,6,3,5,2,7,4,6,4,7};
int i,j,flag=0,sum=0;
for(j=0;j<4;j++)
for(i=0;i<=j;i++){
if(a[j][i]==a[i][j])
{ sum+=a[i][j];
continue;
}
flag=1;
}
if(flag)cout<<"No!"<<endl;
else cout<<"All Right!"<<endl;
cout<<"sum="<<sum<<endl;
}
程序输出的结果: (1)
(2)
2.阅读下列程序,指出程的输出结果,每空2分,共4分。
#include<iostream.h>
int rune(int a,int b)
{ return(a+b);}
void main()
{ int x=2,y=5,z=8,r;
r=rune(rune(x,y),z);
cout<<r<<endl;
cout<<rune(z,r)<<endl;
}
程序的输出结果是: (3)
(4)
3.阅读下列程序,指出程的输出结果,每空2分,共4分。
#include <iostream.h>
int fun(int n)
{
if(n==1|| n==2) return 1;
if(n==3) return 3;
return fun(n-1)+fun(n-2)-fun(n-3);
}
void main()
{ cout<<fun(5)<< ’\n’;
cout<<fun(6)<<’\n’;
}
程序的输出结果是: (5)
(6)
4.阅读下列程序,指出程的输出结果,每空2分,共6分。
#include<iostream.h>
int fun(int i);
void main()
{ int i=1;
switch(i)
{
default: i++; break;
case 0: i++;fun(i);
case 1: i++;fun(i);
case 2: i++;fun(i);
}
cout<<i<<’\n’;
}
int fun(int i)
{
static k=10;
i++;k++;
cout<<k<<’\n’;
return k;
}
程序的输出结果是: (7)
(8)
(9)
5.阅读下列程序,指出程的输出结果,每字符1分,共3分。
#include<iostream.h>
#include<string.h>
void main(){
char str[]=“computer”;
int i;
for(i=strlen(str)-2;i>0;i-=2)
cout<<str[i];
cout<<“\n”;
}
程序的输出结果是: (10)
6.设下列程序在运行输入的是1~16这16个数字,指出程的输出结果,每空2分,共8分。
#include<iostream.h>
#define N 4
void main()
{ int a[N][N];
int i,j,t;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
cin>>a[i][j];
for(i=0;i<N;i++)
{ for(j=0;j<N;j++)
if((i==0)||(i==N-1))a[i][j]++;
else if((j==0)||(j==N-1))cout<<a[i][j]<<'\t';
}
cout<<'\n';
}
程序的输出结果是: (11) 、 (12) 、 (13) 、 (14)
7.阅读下列程序,指出程的输出结果,每输出2分,共6分。
#include<iostream.h>
void f(int);
void main()
{
f(567);
}
void f(int n)
{ cout<<n%10;
if(n>10)
f(n/10);
}
程序的输出结果是: (15) 、 (16) 、 (17)
三、完善程序(每空2分,共30分)
1.求400之内的亲密对数。所谓亲密对数,即A的所有因子之和等于B,B的所有因子之和等于A。
#include<iostream.h>
(1) ;
void main()
{
for(int i=2;i<400;i++)
if( (2) ==i)
cout<<i<<' '<< (3) <<'\n';
}
int fun(int n)
{
int s=0;
for(int i=2;i<n;i++)
(4)
s+=i;
(5) ;
}
2.下列函数inverse的功能是使一个字符串按逆序存放,请填空。
void inverse(char str[])
{ char m;
int i,j=strlen(str);
for(i=0;i<( (6) );i++;)
{ m=str[i];
str[i]=( (7) ) ;
( (8) );
}
}
3.求f(x)=-x2/2!+x4/4!-x6/6+x8/8!……,要求精度为十万分之一。
#include<iostream.h>
#include<math.h>
void main()
{
double x,y,t;
int n=0;
cout<<“Input x:”
cin>>x
t=1;
(9) ;
while(fabs(t)>1e-6)
{
n++;
y+=(t= (10) );//A
}
cout<<“y(“<<x<<”)=”<<y<<’\n’;
}
4.下列程序的功能是求一个一维数组全体元素的最大公约数。算法是:
(1)先找出数组中的最小元素t;
(2)判断t能否将数组中所有元素整除。如果能,这t为最大公约数;否则t=t-1;
(3)重复步骤(2)直至t=1。
请完善该程序。
#include<iostream.h>
int min(int b[],int n)
{ int i,k=0;
for(i=1;i<n;i++)
if( (11) )k=i;
return k;
}
int gys(int b[],int n)
{ int i,t;
t=min(b,n);
while(t>0)
{ for(i=0;i<n;i++)
if( (12) )break;
if(i==n)return t;
t--;
}
}
void main()
{ int a[10]={92,84,56,68,64,36,48,80,92,40};
for(int i=0;i<10;i++)
cout<<a[i]<<’\t’;
cout<<”\n10个数的最大公约数为:”<<gys( (13) )<<endl;
}
5. 下列程序的功能是输出以下图形,请完善该程序。
& & & & & & & & &
& & & & & & &
& & & & &
& & &
&
#include<iostream.h>
#include<string.h>
void main()
{ int i,j,k;
for(i=0;i< (14) ;i++) //控制输出的行数
{ for(k=0;k<i;k++) //每行前面的空格
cout<<" ";
for(j=0;j< (15) ;j++) //输出图形
cout<<" &";
cout<<'\n';
}
}
展开阅读全文