优题选
题目:山东广播电视大学开放教育电大《C++语言程序设计》课程


一、单选题(每小题2分,共12分)

1. 下面的哪一个保留字不能作为函数的返回类型?( )

A. void B. int C. new D. long

2. 假定a为一个数组名,则下面的哪一种表示有错误?( )

A. a[i] B. *++a C. *a D. *(a+1)

3. 在下面的二维数组定义中,哪一个是正确的?( )

A. int a[5][]; B. int a[](10);

C. int a[][]; D. int a[][5]={{1,2,3},{4,5}};

4.下面的哪一个函数头格式不正确?( )

A. AA(int a, int b) B. AA(int a=0, int b)

C. AA(int a=0, int b=0) D. AA(int a, int b=0)

5.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为( )。

A. AB operator +(AB& a, AB& b); B. AB operator +(AB& a);

C. operator +(AB a); D. AB& operator +();

6.当需要使用ostrstream流类定义一个流对象并联系一个字符串时,应在文件开始使用#include命令,使之包含( )文件。

A. strstrea.h B. stdlib.h C. iostream.h D. fstream.h

二、填空题(每小题2分,共24分)

1. 执行“cout<<”x1=”<<18*3;”语句后得到的输出结果为________。

2. 在c++语言中,用输出控制字符________表示输出一个换行。

3.short int类型的大小为________字节。

4.算术表达式 +1对应的C++表达式为____________________。

5. 逻辑表达式x<-5 || x>10的相反表达式为______________。

6. 假定x=5,则执行“a=(x<0?10:20);”语句后a的值为________。

7. 假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为________。

8.函数被调用时,实参向形参的传送分为________传送和值传送两种方式。

9.假定一个结构类型的定义为 ”struct B{int a[5]; char* b;};”,则该类型的大小为________字节。

10. 在定义类对象的语句执行时,系统在建立每个对象的过程中将自动调用该类的____________使其初始化。

11.当一个类对象离开它的作用域时,系统将自动调用该类的____________。

12. 假定一个类AB中有一个静态整型成员bb,在类外为它进行定义并初始化为0时,所使用的语句为________________。

三 写出下列每一个程序运行后的结果。(每题六分,共30分)

1. #include<iostream.h>

void main() {

int s1=0, s2=0;

for(int i=0; i<15; i++)

if(i%2) s1+=i;

else s2+=i;

cout<<s1<<','<<s2<<endl;

}

2. #include<iostream.h>

void main() {

int a[10]={8,19,46,15,6,24,27,18,20,53};

int c1=0, c2=0;

for(int i=0;i<10;i++) {

if(a[i]>=20) c1++;

if(a[i]>=10 && a[i]<=40) c2++;

}

cout<<c1<<','<<c2<<endl;

}

3. #include<iostream.h>

void main() {

int a[3][4]={{1,2,7,8},{5,6,11,15},{9,20,3,4}};

int m=a[0][0];

int k1=0, k2=0;

for(int i=0;i<3;i++)

for(int j=0;j<4;j++)

if(a[i][j]>m) {m=a[i][j]; k1=i; k2=j;}

cout<<k1<<’ ’<<k2<<’ ’<<a[k1][k2]<<endl;

}

4. #include<iostream.h>

void main() {

int a=10, b=15;

cout<<a<<' '<<b<<endl;

{ a*=3;

int b=a+20;

cout<<a<<' '<<b<<endl;

}

cout<<a<<' '<<b<<endl;

}

5. #include<iostream.h>

struct Worker {

char name[15]; //姓名

int age; //年龄

float pay; //工资

};

void main() {

Worker x={"wangfong",46,1640};

Worker y, *p;

y=x; p=&x;

cout<<y.name<<’ ’<<y.age<<’ ’<<y.pay<<endl;

cout<<p->name<<’ ’<<p->age+5<<’ ’<<p->pay-300<<endl;

}

四、写出下列每个函数的功能(每小题6分,共24分)

1. bool WB(int a[], int n, int x) {

for(int i=0;i<n;i++)

if(a[i]==x) return true;

return false;

}

2. template<class Type>

bool WE(Type a[], Type b[], int n) {

int c=0;

for(int i=0;i<n;i++)

if(a[i]==b[i]) c++;

if(c==n) return true; return false;

}

3. void LK(double a[], int n, int& m) {

double s=0;

int i;

for(i=0;i<n;i++) s+=a[i];

s/=n;

m=0;

for(i=0;i<n;i++) if(a[i]>=s) m++;

}

4.假定以fname所指字符串作为文件名的文件中保存着一批正整数。

#include<iomanip.h>

#include<fstream.h>

int JB(char* fname)

{

ifstream fin(fname);

int a, max=0;

while(fin>>a) if(a>max) max=a;

fin.close();

return max;

}

五、按题目要求编写函数(10分)

假定一个函数声明为“int FF(int a[], int n);”,要求递归求出数组a中所有n个元素之积并返回。


标准答案

一、单选题(每小题2分,共12分)

评分标准:选对者得2分,否则不得分。

1.C 2.B 3.D 4.B 5.B 6.A

二、填空题(每小题2分,共24分)

评分标准:每题与标准答案相同者得2分,否则不得分。

1. x1=54 2. ’/n’

3. 2 4. (x*x+y*y)/(2*x*y)+1

5. x>=5 && x<=10 6. 20

7. 6 8. 引用

9. 24 10. 构造函数

11. 析构函数 12. int AB::bb=0;

三、写出下列每个程序运行后的输出结果(每小题6分,共30分)

1. 49,56 //每个数据3分

2. 5,6 //每个数据3分

3. 2 1 20 //每个数据2分

4. 10 15 //共三行,每行数据正确得2分,否则2分全扣

30 50

30 15

5. wangfong 46 1640 //3分,每个数据1分

wangfong 51 1340 //3分,每个数据1分

四、写出下列每个函数的功能(每小题6分,共24分)

评分标准:每题与标准答案的叙述含义相同者得6分,否则酌情给分。

1.从数组a中顺序查找值为x的元素,若查找成功则返回真,否则返回假。

2.模板函数,判断具有n个元素的两个数组a和b中对应元素值是否全部相等,若是则返回真,否则返回0。

3.统计出数组a的前n个元素中大于等于其平均值的元素个数并由引用参数m带回。

4.求出并返回以fname所指字符串作为文件名的文件中保存的所有整数中的最大值。

五、按题目要求编写函数(10分)

评分标准:根据编程的完整情况酌情给分。

int FF(int a[], int n)

{

if(n==1) return a[n-1];

else return a[n-1]*FF(a,n-1);

}

关键字:
返回顶部