天津工业大学C++语言期末考试题
--------------------------------------------------------------------------------
一、单选题
1.设x和y均为量bool则x&&y为真的条件是_______。
A.它们均为真B.其中一个为真
C.它们均为假D.其中一个假
2.设X和Y均为bool量则x||y为假的条件是_______。
A.它们均为真B.其中一个为真
C.它们均为假D.其中一个为假
3.声明或定义一个内联函数时必须在函数开始使用保留字_______。
A.staticB.const
C.inlineD.extern
4.在下面构造函数的声明中存在着语法错误是_______。
A.BC(int a,int );B.BC(int
,int);
C.BC(int ,int=5);D.BC(int ,int y);
5.假定AB为一个类则执行"AB
a(4),b[3],*p[2]语句时自动调用该类构造函数的次数为_______。
A.3B.4
C.6D.9
6.假定AB为一个类,px为指向该类动态对象数组的指针该数组长度为n则执行"delete[]px;"语句时自动调用该类析构函数的次数为_______。
A.0B.1
C.nD.n+1
二、填空题(每小题分共分)
1.若需要定义一外标识符常量并且使c++能够进行类型检查则应在定义语句的开始使用保留字_______。
2.算术表达式xy2/3a+4b-1对应的表达式为______。
3.逻辑表达式x>3&&x<10的相反表达式为_______。
4.逻辑表达式a>b||b==5的相反表达式为_______。
5.假定一个二维数组的定义为"char
a[5][6];"则该数组所含元素的个数为_______。所占存储空间的字节数为_______。
6.变量分为全局和局部两种,_______变量没有赋值时将由系统自动置为0。
7.假定a是一个一维数组则a[i]对应的存储地址(以字节为单位)为_______。
8.假定一个结构类型的定义为"struct A{int
a,b;A*C;};则该类型的大小为_______字节
9.假定要访问一个结构指针P所指对象中的指针成员b所指的对象,则表示方法为_______。
10.在一个派生类中,对基类成员、类对象成员和非类对象成员的初始化次序是先_______,后_______,最后为_______。
11.假定用户没有给一个名为AB的类定义构造函数则系统为其隐含定义的构造函数为_______。
12.若需要把一个函数void
F();"定义为个类AB的友元函数则应在类AB的定义中加入一条语句:_______。
三、给出下列程序运行后的输出结果(每小题6分)
1.#include
void main(){
int s=0;
for(int i=1;i<=5;i++)
s+=i**i;
cout<
2..#include
void main(){
int s=0;
for(int i=1;;i++)
if(s>50)brek;
if(i%2==0)s+=i;
}
cout<
}
3.#include
void main(){
int a[8]={36,25,48,14,55,40,32,66};
b1=b2=a[0];
for(int i=1;i<8;i++)
if(a[i]
b1=a[i];
}
cout<
}
4..#include
int LB(int *a,int n){
int s=1;
for(int i=0;i
s*=*a++;
return s;
}
void main(){
int a[]={1,2,3,4,5,6,7,8};
cout<
cout<
}
5..#include
struct Worker{char name[15];
int age;
float pay;
};
void main(){
Worker x={"wangfong",43,640};
Worker y,*p;
y=x;p=&x;
cout<
cout<name<age*2<pay+100<
}
四、写出下列每个函数的功能(每小题6分共24分)
1.int WC(int a[],int n,int k){
int c=0;
for(inti=0;i
if(a[i]>=k)c++;
return c;
}
2.#include
int *LJ(int a[],int n){
int k=0;
for(int i=1;i
if(a[i]>a[k])k=i;
return &a[k];
}
3.//struct DNode{
//double data;
};
void QB(DNode*&f,int n){
if(==0){f=NULL;return;}
f=new DNode;
cin>>f->data;
DNode*p=f;
while(--n){
p=p->next=new DNode;
cin>>p->data;
}
p->next=NULL;
}
4.#include
#include
#include
int JB(char *fname,char*key)
//可把以fname所指字符串作为文件标识符的文件称为fname文件假定该文件中保存着一批字符串每个字符串的和度小
//于20
{
ifstream fin (fname);
char a[20];
int i=0;
while(fin>>a)
if(strcmp(a,key==0)i++;
fin.close();
}
五、编程(10分)
个函数void SelecSort(int
a[],int
n),采用选择排序的方法按升序排列数组a中的n元素。
答案:
一、1.A2.C3.C4.D5.B6.B
二、1.const2.x*pow(y,2)/(3*a)+4*b-13.x<=3||x>=104.a<=b&&b!=5
5.306.全局7.a+i*sizeof(a[0])8.129.*p(p->b)
10.基类成员,类对象成员,非类对象成员11.AB(){}12.friend void F()
三、1.s=552.i,s=15,563.14 254.103605.wangfong 43
640换行wangfong 86 740
四、1.
统计数组a中元素值大于给定值k的个数并返回个数值。
2.查找数组a中最大元素并返回该元素的地址。
3.建立具有n个结点的链表结点的值域从键盘输入指针域动态产生。
4.统计fname
文件中字符串为给定字符串的个数并返回统计结果。
五、
void SelectSort(int a[],int n)
{for(int i=0;j
{int k=i;
for(int j=i+1;j
if(a[k]>a[j])
k=j;
if(k!=i)
{int m=aa[i];
a[i]=a[k];
a[k]=m;}}}