20.以下各选项中,正确的函数声明是 C 。 A)double func( int x , int y ) B)int func( int x ; int y ) ; C)float func( int x , int y ) ; D)char func( int x , y ) ; 二、填空题(每空1分,共20分)
1.一个C++程序的执行从 main 函数开始,到 main 函数结束 。
南昌大学 2003 ~ 2004 学年第二学期期 末 考试试卷 A卷 一单项选择题
1.‘A’的ASCII码为65,n为int型,执行 n =‘A’+‘6’-‘3’;后,n的值为 B 。
A)‘D’ B) 68 C) 不确定的值 D) 编译出错 2.下列变量名中, A 是合法的。
A)CHINA B) byte-size C) double D) A+a 3.在static int B[3][3]={{1},{3,2},{4,5,6}};中, a[2][2]的值是 C 。
A)0 B) 5 C)6 D)2 4.若有定义 int a=3, *p=&a ;则 *p的值是 B 。
A)常量a的地址值 B)3 C)变量p的地址值 D)无意义 5.下列关于指针运算的各叙述中,不正确的叙述是 D 。
A)指向同一数组的两个指针,可以进行相等或不等的比较运算; B)可以用一个空指针赋值给某个指针;
C)指向数组的指针,可以和整数进行加减运算;
D)指向同一数组的两个指针,可以进行有意义的相加运算。
6. 已知x、y、z是int型变量,且x=3,y=4,z=5;则下面各表达式中,值为0的是 D 。
A)‘x’&&‘y’ B) x<=y C)x || y+z && y-z D) !((x A) 0和‘\\0’值相等。 B) 0和‘0’ 值相等 。 C)‘\\0’和 ‘0’ 值相等 。 D) 0、‘\\0’和‘0’ 值都不相等。 8. 若有说明语句:char ch=‘\\72’;则变量 ch A 。 A)包含1个字符 B) 包含2个字符 C) 包含3个字符 D) 说明不合法 9.在下列关于C++与C语言关系的各描述中, D 是错误的。 A)C语言是C++的一个子集; B)C语言与C++是兼容的; C)C++对C语言进行了一些改进; D) C++和C语言都是面向对象的。 10.在下列关于类概念的各描述中, A 是错误的。 A)类就是C语言中的结构体类型; B)类是具有共同行为的若干对象的统一描述体; C)类是创建对象的样板; D)类是抽象数据类型的实现。 11.在下列各选项中,符合C++语法的赋值表达式是 C 。 A) d=3+=d+6 B) d=6+e=d+8 C) d=e+=f+6 D) d=2+e, d+5=1 12.对 for( 表达式1 ; ;表达式3 ) 可理解为 B 。 A)for( 表达式1 ;0 ;表达式3 ) B)for( 表达式1 ;1 ;表达式3 ) C)for( 表达式1 ;表达式1 ;表达式3 ) D)for( 表达式1 ;表达式3 ;表达式3 ) 13.若有定义:int a[3][4] ; 则对a数组某一元素的正确表示是 C 。 A)a[2][4] B) a[1,3] C)a[1+1][0] D) a(2)(1) 14.若有初始化 static char str[]=“NDJSZX” ;则其中的str[]相当于 B 。 A)str[8] B) str[7] C) str[6] D) str[2] 15.一维整型数组a的正确定义是 D 。 A) int a(10); B) int n=10; int a[n]; C) int n; cin>>n; int a[n]; D) const int SIZE=10; int a[SIZE]; 16.采用函数重载的目的在于 D ; A) 实现共享 B)减少空间 C) 提高速度 D)使用方便,提高可读性 17.下列的各类函数中, C 不是类的成员函数。 A)构造函数 B)析构函数 C)友元函数 D)拷贝初始化构造函数 18.若有定义:int x , *p ; 则正确的赋值表达式是 D 。 A) *p=*x B) *p=&x C) p=x D) p=&x 19.下列静态数据成员特性中, D 是错误的。 A) 说明静态数据成员时前边要加修饰符static; B) 静态数据成员要在类体外进行初始化; C) 引用静态数据成员时,要在静态数据成员名前加<类名>和作用域分辨符; D) 静态数据成员不是所有对象共有的。 2. 设有定义 int x=3, y=4 ; 则表达式 x*=y+5的值为 27 。若有 定义 int a=2 ;则执行完语句 a+=a-=a*a ;之后,a的值为 -4 。 3.在C++ 中,只能用于整型操作数的算术运算符是 % ;表达式3 / 2的结果为 1 。 4.在C++ 中, 变量的三个基本要素是指:变量名、 变量类型 和 变量值 。 5.设有定义 int x=3, y=4, t ; 则实现x,y两变量值交换的三个语句是:t=x ; x=y ; y=t ; 。 6.在C++ 中,有两种给出注释的方法。一种是沿用C语言的注释符,即 /* */ 。另一种是从它开始,直到它所在行尾的字符都为注释的注释符,即 // 。 7.在C++ 中, 函数在定义时可以预先定义出默认的形参值。默认形参值必须 按 从右到左 的顺序定义。因为在调用时,实参初始化形参是按 从左到右 的顺序。 8.在C++程序中,对刚创建的对象进行初始化的工作由 构造 函数来完成;而对象被删除前的一些清理工作则是由 析构 函数来完成的。 9. Visual C++ 6.0 集成开发环境界面由标题栏、菜单栏、工具栏、 项目工作区 窗口、文档窗口、 输出 窗口以及状态栏等组成。 10.类是逻辑上相关的 函数 与数据的封装。特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的 继承 。 三、程序阅读题 (每小题5分,共30分) 请在各程序的右侧空白部分,写出对应程序运行后的输出结果 1.源程序如下: # include char *s =″abcdefg″ ; cout << s << endl ; s + = 2 ; cout << s << endl ; } 2.源程序如下: # include int i , j ; for( i = N; i >= 1 ; i-- ) { for( j = 1; j <= N-i ; j + + ) cout << ″ ″; // 双引号内含一空格 for( j = 1; j <= 2*i-1 ; j + + ) cout << ″*″; cout << endl ; } } 3.源程序如下: # include int fun( int a ) ; int a=2, i ; for ( i = 0 ; i < 3 ; i + + ) printf (“ = ” , fun( a ) ) ; } int fun( int a ) { int b = 1 ; static int c = 1 ; b = b + 1 ; c = c + 1 ; return ( a + b + c ) ; } 4.源程序如下: # include int prime ( int x ) ; static int a [6] = { 5, 9, 6, 11, 13, 8 } ; int i , *p = a , sum = 0 ; for ( i = 0 ; i < 6 ; i + + ) if ( prime ( *( p + i ) ) = = 1 ) { printf ( “ %d \\t ” , * (a+i ) ) ; sum + = * ( a + i ) ; } printf ( “\\n The Sum = %d \\n ”, sum ) ; } int prime ( int x ) { int i ; for ( i = 2 ; i < x ; i + + ) if ( x % i = = 0 ) return ( 0 ) ; return ( 1 ); } 5.源程序如下: # include < iostream.h > void f1( int I ) { I += 10 ; } void f2( int * I ) { *I += 10 ; }kl, void f3( int& n ) { n += 10 ; } void main( ) { int I = 0 ; f1( I ) ; cout <<“I is ”<< I << endl ; f2( &I ) ; cout <<“I is ”<< I << endl ; f3( I ) ; cout <<“I is ”<< I << endl ; } abcdefg 6.源程序如下: cdefg # include ~Class ( ) ; void Set ( int n , int m ) { x = n ; y = m ; } ********* private : ******* int x, y ; } ; Class :: Class( int ***** n, int m) { Set( n, *** m ) ; cout <<“Construct : x= ”<< x <<“, } * y= ” << y << endl ; Class :: ~Class( ) { cout <<“Destruct : x=” << x <<“, y= ” << y << endl ; } void main( ) { Class a ( 5 ) ; Class b ( 1 , 3 ) ; cout <<“exiting… 6 7 \\n ” ;8 } 四、程序填空题 (每小题6分,共12分)。 1.本程序用递归的方法计算并输出Fibonacci数列的前20项。Fibonacci数列 的规律是:数列前两项均为1,从第三项开始,每一项都是其前两项的和。请补全fac函数。 # include int i ; for( i = 0 ; i < 20 ; i + + ) cout << fac( i ) << ″ ″; 5 11 } The Sum = 29int fac( int { n ) 13 // 红色显示的部分为参考答案 int s; if(n==0 || n==1) s=1; else s=fac(n-1)+fac(n-2); return s; } 2.本程序的功能是输出三角形式的九九乘法表。请在横线上填空。 #include void main( ) { int i , j ; for( i=1; i<=___9___ ; i++ ) { for( j=1; j<=___i_____ ; j++) printf ( “ *=- ” , j , i , i*j ) ; printf( “ \\n ” ) ; } } 五、程序设计题(每小题9分,共18分) 1.设学生的人数已知,他们的考试成绩也已知。请编程补全下面的程序,使该程序能完成:I is (0 1)计算出这些成绩的平均成绩并显示出来;(2)计算 出这些成绩的最高成绩并显示出来。I is 10 # include I static float score[N]={ 86, 67, 98, 80, 78, 95, 56, 78 } ; int i; float s, aver, max; s=0; for(i=0; i cout<<”aver=”< max=score[0]; for(i=1; i if(max } 2.编一程序,其功能是:对键盘输入的年、月、日,计算并输出该日是该年的第几天。 要求:年、月、日分别用year、month、day表示;用函数leap 来判别year年是否闰年。 提示:非闰年各月的天数可预先放入一个数组中。 void main( ) { int year , month , day , s , i ; bool leap(int year); static dofm[13]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; // 0下标(0月)不用 cin>>year>>month>>day; s=0; for(i=1; i s=s+day; // 统计非闰年时到month月day日的总天数 if( month>2 && leap(year)==true ) s=s+1; cout< bool leap(int year) { bool flag=false ; // 先设输入的该年不是闰年 if( (year@0==0) || ( year%4==0 && year0 !=0 ) ) flag=true ; return flag ; } 南昌大学 2008~2009学年第二学期期末考试试卷 试卷编号: ( B )卷课程编号: 课程名称: C++语言程序设计 考试形式: 闭卷 一、选择题(每小题2 分,共30分) 1、下列字符串中可以用作C++标识符的是 A 。 A) _123 B) foo~bar C) case D) 3var 2、字符串”student”占用 D 个字节的空间。 A) 7 B) 6 C) 5 D) 8 3、在int a[][3]={{1},{3,2},{4,5,6},{0}}中,a[2][2]的值是 C 。 A) 3 B) 2 C) 6 D) 4 4、在类中说明的成员可以使用关键字 A 进行修饰。 A) private B) extern C) auto D) register 5、下列关于指针运算的描述错误的是: B 。 A)在一定条件下,两个指针可以进行关系运算 B)在一定条件下,两个指针可以相加 C)在一定条件下,指针可以为空 D)在一定条件下,两个指针可以相互赋值 6、在C++语言中,对函数参数默认值描述正确的是: A) 函数参数的默认值只能设定一个 B) 一个函数的参数若有多个,则参数默认值的设定可以不连续 C) 函数参数必须设定默认值 D) 在设定了参数的默认值后,该参数后面定义的所有参数都必须设定默认值 7、假定 AB 为一个类,则执行 AB x ;语句时将自动调用该类的 。 A) 有参构造函数 B) 无参构造函数 C) 拷贝构造函数 D) 赋值构造函数 8、下述关于开关语句的描述中, 是正确的。 A) 开关语句中default子句可以没有,也可以有一个; B) 开关语句中每个语句序列中必须有break语句; C) 开关语句中default子句只能放在最后; D) 开关语句中case子句后面的表达式可以是整形表达式。 9、关于对象概念的描述中, 是错误的。 A) 对象就是C语言中的结构变量; B) 对象代表着正在创建的系统中的一个实体; C) 对象是一个状态和操作(或方法)的封装体; D) 对象之间的信息传递是通过消息进行的; 10、下列给字符数组进行初始化中, 是正确的。 A) char s1[ ]=\ B) char s2[3]=\ C) char s3[][3]={ 'a', 'x', 'y'}; D) char s4[2[3]={\11、一个const对象 。 A) 能访问所有成员函数 B) 只能访问const成员函数 C) 也能访问volatile成员函数 D) 能访问const和volatile成员函数 12、声明类test的拷贝构造函数的正确形式是 。 A) int test B) void test C) test(void) D) test(test&) 13、关于new运算符的下列描述中, 是错的。 A) 它可以用来动态创建对象和对象数组; B) 使用它创建的对象或对象数组可以使用运算符delete删除; C) 使用它创建对象时要调用构造函数; D) 使用它创建对象数组时必须指定初始值。 14、在 C++ 中有以下 4 条语句: static int hot=200;int &rad=hot; hot=hot+100;cout< 15、下列关于构造函数的描述中,错误的是 。 A) 构造函数可以设置默认参数; B) 构造函数在声明对象时自动执行; C) 构造函数可以对静态数据成员进行初始化; D) 构造函数可以重载; 一、 填空题(每空题1 分,共20分) 1、C++程序中,一个基本语句的最后一个字符是【1】 。 2、一个C++程序的开发步骤通常包括编辑、【2】 、【3】 、运行和调试。 3、类的具体表现是通过定义【4】 __来操作的。 4、一般情况下,按照面向对象的要求,把类中的数据成员(属性)定义为【5】 __权限,而把成员函数(方法)定义为 【6】 __权限。 5、假定用户没有给一个名为MyClass的类定义构造函数和析构函数,则系统为其定义的默认构造函数形式为_【7】 ____,默认析构函数形式为 【8】 _ 。 6、在类中定义和实现的函数称为_【9】 _。 7、 描述命题\大于B或小于C\的表达式为 【10】 8、C++中没有字符串类型,字符串是通过 【11】 来表示的,每一个字符串都有一个结尾字符【12】 。 9、要使语句p=new double[12][5];能够正常执行,变量p的定义应为【13】 。 10、当一个成员函数被调用时,该成员函数的【14】 指向调用它的对象。 11、完成下面的类定义。 class MyClass { public: MyClass( ) { x = 0; } 【15】 __ int GetNum( 【16】 ___ my); private: int x;