C++期末考试试卷答案

更新时间:2023-08-30 19:17:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

计算机 c语言 c++ 期末考试真题

2008-2009学年度第二学期

华中科技大学《C++语言程序设计》试卷(A)

(考试时间:150分钟 考试方式:闭卷)

所有答案必须写在答题纸上

一、单项选择题 (30小题,每小题1分,共30分) 1、C++程序中的语句必须以( B )结束

A 冒号 B 分号 C 空格 D 花括号

2、下列选项中,( A )不是分隔符

A 标识符 B ; C : D ( )

3、执行语句

int a = 10, b ;

int & pa = a , & pb =b ; 后,下列正确的语句是( B)

A &pb = a; B pb = pa; C &pb = &pa; D *pb = *pa;

4、设I=1,J=2,则表达式 I++ +J的值为( C )

A 1 B 2 C 3 D 4 5、执行下列语句后,

int x , y ;

x = y = 1 ; ++x || ++y ; y的值是( C)

A 不确定 B 0 C 1 D 2

6、逗号表达式

(x = 4 * 5 , x * 5 ), x + 25 的值为( D )

A 25 B 20 C 100 D 45

7、已知int i, x, y;在下列选项中错误的是(C)

A if ( x && y ) i ++; B if ( x == y) i ――; C if ( xy ) i ――; D if ( x + y ) i++;

8、i=2,执行下列语句后的值为( B )

switch ( i ) { case 1: i++; case 2: i――;

case 3: ++i; break; case 4: ――i; default : i++; }

A 1 B 2 C 3 D 4

9、已知int i = 3;下面do _ while语句执行时循环次数为(B) do { i-- ; cout <<i << endl; } while ( i != 1);

A 1 B 2 C 3 D 无限 10、以下为死循环的程序段是( B )

计算机 c语言 c++ 期末考试真题

A for ( int x = 0 ; x < 3 ; ) { x++ ; } ; B int k = 0;

do { ++k ; } while ( k>=0 ) ;

C int a=5; while ( a ) { a―― ; } ; D int i=3 ; for ( ; i ;i――) ;

11、以下正确的函数原型为( D )

A f (int x ; int y); B void (x , y);

C void (int x , y); D void f (int , int);

12、有函数原型 void fun2 (int * ), 下面选项中,正确的调用是( C ) A double x = 2.17; fun2 (&x); B int a = 15; fun2 (a*3.14); C int b = 100; fun2 (& b); D fun2 (256); 13、有声明

int fun4 (int); int (* pf) (int) = fun4; 下面选项正确的是( B )

A int a = 15; int n = fun4 (&a); B int a = 15; cout<<pf (a*3.14); C cout<<(* pf) (256); D cout<<*pf (256); 14、函数参数的默认值不允许为(C,D)

A 全局常量 B 全局变量 C 局部变量 D 函数调用 15、下列的描述中( B )是错误的。

A 使用全局变量可以从被调用函数中获取多个操作结果 B 局部变量可以初始化,若不初始化,则系统默认它的值为0 C 当函数调用完后,静态局部变量的值不会消失 D 全局变量若不初始化,则系统默认它的值是0 16、以下对一维数组a的正确定义是( C)

A int n=5,a[n]; C int a(5);

B const int n=5; int a[n]; D int n;cin>>n; int a[n];

17、已知int a[10]={0,1,2,3,4,5,6,7,8,9}和*p=a,则不能表示数组a中元素的式子是( C )

A *a B *p C a D a [p-a] 18、以下不能对二维数组a进行正确初始化的语句是( C ) A int a[2][3] = 0;

B int a[][3] = { {0,1},{0}};

C int a[2][3] = {{0,1},{2,3},{4,5}}

D int a[][3] = {{0,1},{2,3,4},{5,6},{7}} 19、已知int a[3][3] = {1,2,3,4,5,6,7,8,9},则不能表示数组元素a[2][1]的地址是( B ) A &a[2][1] B * (a[2] + 1)

C a[2] + 1 D * (a + 2) + 1

20、若用数组名作为调用函数的实参,则传递给形参的是( A ) A 数组存储首地址 C 数组的第一个元素值 B 数组中全部元素的值 D 数组元素的个数 21、下列描述中,错误的是( A ) A 输出字符指针就是输出字符串

B 输出字符指指针的间接引用就是输出单个字符

计算机 c语言 c++ 期末考试真题

C 具有相同字符的两个字符串常量相等

D 两个数组名的比较是地址的比较

22、判断字符串s1是否大于字符串s2的表达式为( D )

A s1 > s2 B strcmp ( s1, s2) = = 0 C strcpy (s1,s2) > 0 D strcmp (s2,s1) > 0 23、在下列结构变量的定义中,不正确的是( D )

A struct employee B struct

{ char name[20]; {char name [20];

long code; long code;

}emp; }emp; C struct employee D struct

{ char name[20]; {char name[20]; long code; long code ; }; }employee;

employee emp ; employee emp;

24、假定有以下声明和定义,则下面引用形式错误的的( B )

struct student { int num; float score;

}stu[3]={{1001,80},{1002,75},{1003,91}},*p=stu;

A p->num B (p++).num C (p++)->num D (*p).num 25、若有以下声明和定义,则下列错误的引用是( D )

struct worker {int no;

char name[20];

}w,*p=&w;

A w.no B p->no C (*p).no D *p.no 26、关于类和对象不正确的说法是( C )

A 类是一种类型,它封装了数据和操作 B 对象是为类的实例

C 一个类的对象只有一个 D 一个对象必属于某个类

27、下面对构造函数的不正确描述是( B )

A 系统可以提供默认的构造函数。

B 构造函数可以有参数,所以也可以有返回值 C 构造函数可以重载。

D 构造函数可以设置默认参数。

28、在类定义的外部,可以被访问的成员有( C )

A 所有类成员 B private 或 protected 的类成员 C public 的类成员 D public 或 private 的类成员

29、在下列选项中,(C )是错误的。 A gets和函数puts可以输入输出包含空格的字符串 B cin不能输入包含空格的字符串 C cout不能输出包含空格的字符串

计算机 c语言 c++ 期末考试真题

D 使用赋值运算符总可以对字符数组整体赋值

30、下列选项中,( C )具有文件作用域。

A 语句标号 B 局部变量 C 全局变量 D 形式参数

二、程序填空(每空2分,共10分 )

1、函数yanghui的功能是把杨辉三角形的数据赋给二维数组的下半三角,请填空。 void yanghui(int x[6][6]) {

int i,j; x[0][0]=1;

for(i=1;i<6;i++)

{

x[i][0]=__x[i][i]___(1)_______=1;

for(j=1;j<i;j++)

x[i][j]=c(i,j) _____(2)________; //此处c(i,j)为求组合的函数 } }

2、函数fun的功能是逆置数组元素,数组a有n个元素,请填空。 void fun(int a[], int n)

{ int i,t;

for (i=0; i<__n/2_(3)___; i++) {

t=a[i];

a[i] = a[_n-1-i__(4)___]; _a[n-1-i]__(5)___ = t; } }

三、程序分析题:给出下面各程序的输出结果。 (5小题,每小题4 分,共20分 ) 1、将下列程序的运行结果写在右边空白位置

#include<iostream.h> void main()

{ int i , s = 0 ;

for ( i = 0 ; i< 5 ; i++ ) switch ( i)

{ case 0 : s+= i ; break; case 1 : s+= i ; break; case 2 : s+= i ; break; default: s+= 2 ; }

cout<<"s ="<< s <<endl; } S=7

计算机 c语言 c++ 期末考试真题

2、将下列程序的运行结果写在右边空白位置

#include <iostream.h>

int f1 ( int a, int b) {return a + b; } int f2 ( int a, int b) {return a - b; }

int f3 ( int ( *t) ( int , int ) , int a , int b) {return (*t) (a , b); } void main()

{ int (*p) (int ,int );

p = f1;

cout << f3 ( p, 4, 8) <<endl; p = f2;

cout << f3 ( p, 8, 4)<< endl; } 12 4

3、将下列程序的运行结果写在右边空白位置

int f ( int [ ][3 ],int ,int ); #include <iostream.h> void main()

{int a[ ][3]={0,1,2,3,4,5,6,7,8}; cout<<f(a,3,3)<<endl;

}

int f (int a[ ][ 3 ],int row,int col) {int i,j,t= 1;

for (i=0;i<row;i ++) for (j=0;j<col;j ++) { a[ i ][j] ++;

if (i==j) t *= a[i][ j]; }

return t; } 45

4、将下列程序的运行结果写在右边空白位置

#include<iostream.h>

#include<math.h> class point { public:

point(float x,float y)

{ a=x;b=y;cout<<"点("<<a<<","<<b<<")";}

friend float d(point &A,point &B)

{return sqrt((A.a-B.a)*(A.a-B.a)+(A.b-B.b)*(A.b-B.b));} private:

float a, b; };

计算机 c语言 c++ 期末考试真题

void main()

{ point p1(2,3); cout<<"到"; point p2(4,5);

cout<<"的距离是:"<<d(p1,p2)<<endl; }

点(2,3)到点(4,5)的距离是:2.82843

5、将下列程序的运行结果写在右边空白位置

#include<iostream.h> class T { public:

T( int x) { a=x; b+=x;}; static void display( T c)

{cout<<"a="<<c.a<<'\t'<<"b="<<c.b<<endl;} private: int a;

static int b; };

int T::b=5; void main() { T A(3),B(5); T::display(A); T::display(B); }

a=3 b=13 a=5 b=13

四、程序设计题(4小题,每小题10分,共40分)

1、输入某学生成绩,若成绩在通常情况下85分以上输出"very good",若成绩在60分到85分之间输出"good",若成绩低于60分输出"no good"。 #include<iostream> using namespace std; void main() { }

int score;

cout<<"输入分数:"; cin>>score;

if(score>=85)cout<<"very good!"; else if(score>=60)cout<<"good!"; else cout<<"no good!";

2、编写一个程序,包含三个重载的display函数和一个主函数。要求第一个函数输出double 值,前面用字符串“a double:”引导,第二个函数输出 一个int值,前面用字符串“a int:”引导,第三个函数输出一个char字符值,前面用字符串“a char:”引导,在主函数中分别

计算机 c语言 c++ 期末考试真题

用double、int 和char型变量作为实参调用display函数。 #include<iostream> using namespace std; void display(double x) { }

cout<<"a double:"<<x;

void display(int x) { }

void display(char x) { }

void main() { display(1.345);cout<<endl;

display(3);cout<<endl; display('a');cout<<endl; cout<<"a char:"<<x; cout<<"a int:"<<x;

}

3、编写程序,按照指定长度生成动态数组,用随机数对数组元素赋值,然后逆置该数组元素。输出逆置前后的数组元素序列。要求逆置时不使用辅助数组。 #include<iostream> #include<ctime> #include<cstdlib> #include<iomanip> using namespace std; void main() {

int n;

cout<<"输入数组长度:"; cin>>n;

int *p=new int[n]; srand(unsigned(time(0))); for(int *a=p;a<p+n;++a) {

*a=rand()%n;

cout<<setw(3)<<*a;

} cout<<endl;

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

计算机 c语言 c++ 期末考试真题

{

int t; t=*(p+i); *(p+i)=*(p+n-1-i); *(p+n-1-i)=t; }

for(int *b=p;b<p+n;++b) }

4、定义一个Student类,在该类定义中包括:一个数据成员score(分数) 及两个静态数据成员total(总分)和学生人数count;成员函数scoretalcount(float s)用于设置分数、求总分和累计学生人数;静态成员函数sum用于返回总分;静态成员函数average用于求平均值。

#include<iostream> #include<ctime> #include<cstdlib> #include<iomanip> using namespace std; class Student {

float score;

static float total; static int count; { }

cout<<setw(3)<<*b;

public: void scoretalcount(float s)

{ }

score=s; total+=s; ++count;

static float sum() {return total;}

static float average() {return total/count;} };

int Student::count=0; float Student::total=0; void main() {

Student s1,s2,s3;

s1.scoretalcount(80); s2.scoretalcount(70);

计算机 c语言 c++ 期末考试真题

}

s3.scoretalcount(60);

cout<<"总成绩为:"<<Student::sum(); cout<<endl;

cout<<"平均分为:"<<Student::average();

计算机 c语言 c++ 期末考试真题

《C++语言程序设计》答题纸

班级: 学号: 姓名:

1、 2、 3、 4、 5、

三、程序分析题:给出下面各程序的输出结果。 (5小题,每小题4 分,共20分 ) 1、 2、 3、 4、

一、单项选择题(用铅笔在正确的选项上涂黑)。

5、

计算机 c语言 c++ 期末考试真题

四、程序设计题(4小题,每小题10分

本文来源:https://www.bwwdw.com/article/utti.html

Top