湛江海洋大喾出年第二学期 《C++程序设计》课考试题(A卷) 使用班级:信息与计算科学信计1041-1042 班 级 五 总分 各题分数36 100 实得分数 、选择题(每题2分,共36分) 1、由C艹+日标文件连接而成的可执行文件的缺省扩展名为 A cpp B exe C ob D lik 2、在下面的函数声明中,存在着语法错误的是 A void Bc (int a, int) B void BD(int, int) C void bE (int, int=5) D int bF (int x: int y) 3、假定AB为一个类,则该类的拷贝构造函数的声明语句为 A. AB&(const AB x) B. AB(const AB x) C. AB(const AB& x) D. AB(const AB* x) 4、对于结构中定义的成员,其隐含访问权限为 A public B pr C private D stati 5、在下列表示引用的方法中 是正确的 已知:intm= A int &x=m int &y=10; C int D float &t=&m 6、对于C/C+语言的函数,下列叙述中正确的是 A.函数的定义不能嵌套,但函数调用可以嵌套 B.函数的定义可以嵌套,但函数调用不能嵌套 张 C.函数的定义和调用都不能嵌套 D.函数的定义和调用都可以嵌套 7、在一个被调用函数中,关于 return语句使用的描述 是错误的 第1页共8页
第 1 页 共 8 页 湛江海洋大学 2005 年第二学期 《C++程序设计》课考试题(A 卷) 使用班级:信息与计算科学 信计 1041—1042 题 号 一 二 三 四 五 总分 各题分数 36 20 20 9 15 100 实得分数 一、选择题(每题 2 分,共 36 分) 1、由 C++目标文件连接而成的可执行文件的缺省扩展名为________。 A cpp B exe C obj D lik 2、在下面的函数声明中,存在着语法错误的是________。 A void BC(int a, int); B void BD(int, int); C void BE(int, int=5); D int BF(int x; int y); 3、假定 AB 为一个类,则该类的拷贝构造函数的声明语句为________。 A. AB&(const AB x); B. AB(const AB x) ; C. AB(const AB& x); D. AB(const AB* x); 4、对于结构中定义的成员,其隐含访问权限为________。 A public B protected C private D static 5、在下列表示引用的方法中,________是正确的。 已知:int m=10; A.int &x=m; B.int &y=10; C.int &z; D.float &t=&m; 6、对于 C/C++语言的函数,下列叙述中正确的是________。 A .函数的定义不能嵌套,但函数调用可以嵌套 B.函数的定义可以嵌套,但函数调用不能嵌套 C.函数的定义和调用都不能嵌套 D.函数的定义和调用都可以嵌套 7、在一个被调用函数中,关于 return 语句使用的描述,________是错误的。 班 级 : 姓 名 : 学 号 : 加 白 纸 一 张
A.被调用函数中可以不用 return语句 B.被调用函数中可以使用多个 return语句 C.被调用函数中,如果有返回值,就一定要有 return语句 D.被调用函数中,一个 return语句可以返回多个值给调用函数 8、在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度, 选用 A.内联函数 B.重载函数 C.递归调用 D.嵌套调用 9、下列的各类函数中, 不是类的成员函数 A.构造函数 B.析构函数 C.友元函数D.拷贝构造函数 不是构造函数的特征 A.构造函数的函数名与类名相同 B.构造函数可以重载 C.构造函数可以设置缺省参数 D.构造函数必须指定类型说明 11、已知: print()函数是一个类的常成员函数,它无返回值,下列表示中, 是正确的 A void print()const 3. const void print() C void const print( D void print(const) 12、关于new运算符的下列描述中 是错的。 A.它可以用来动态创建对象和对象数组 B.使用它创建的对象和对象数组可以使用运算符 delete删除 C.使用它创建对象时要调用构造函数 D.使用它创建对象数组时必须指定初始值 13、下列for循环的次数为 for(i=0,x=0;!x&ki<=5;i++) C.1 D.无限 14、对于"int*pa[5]:"的描述中 是正确的。 A.pa是一个指向数组的指针,所指向的数组是5个int型元素 B.pa是一个指向某数组中第5个元素的指针,该元素是int型变量 第2页共8页
第 2 页 共 8 页 A.被调用函数中可以不用 return 语句 B.被调用函数中可以使用多个 return 语句 C.被调用函数中,如果有返回值,就一定要有 return 语句 D.被调用函数中,一个 return 语句可以返回多个值给调用函数 8、在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度, 选用________。 A.内联函数 B.重载函数 C.递归调用 D.嵌套调用 9、下列的各类函数中,________不是类的成员函数。 A.构造函数 B.析构函数 C.友元函数 D.拷贝构造函数 10、________不是构造函数的特征 A.构造函数的函数名与类名相同 B.构造函数可以重载 C.构造函数可以设置缺省参数 D.构造函数必须指定类型说明 11、已知:print( )函数是一个类的常成员函数,它无返回值,下列表示中,________ 是正确的。 A.void print( ) const; B.const void print( ); C.void const print( ); D.void print(const); 12、关于 new 运算符的下列描述中,________是错的。 A.它可以用来动态创建对象和对象数组 B.使用它创建的对象和对象数组可以使用运算符 delete 删除 C.使用它创建对象时要调用构造函数 D.使用它创建对象数组时必须指定初始值 13、下列 for 循环的次数为_______。 for(i=0, x=0; !x&&i<=5; i++) A.5 B.6 C.1 D.无限 14、对于"int *pa[5];"的描述中,_______是正确的。 A.pa 是一个指向数组的指针,所指向的数组是 5 个 int 型元素 B.pa 是一个指向某数组中第 5 个元素的指针,该元素是 int 型变量
C.pa[5]表示某个元素的第5个元素的值 Dpa是一个具有5个元素的指针数组,每个元素是一个int型指针 15、有以下程序段 inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b b=p[6];则b中值是 A、10 B、6 C、8 D、9 16、设正x、y均为整型变量,且x=10,y=3,则以下语句的输出结果是 printf("%d, %d, %d\n",++x, ++y, x) A、10,4,11 B、11,4,11 C、10,4,10 17、下面的程序,输出结果为 void fun(char *p) if(*p!=10) fun(p) if (t!=\0) printf(%c", t): I void maino I char a*a fun(a): I A、运行出错B、1324C、4231 D、4321 18、下面的程序,输出结果为 #includestdio. h> i int *p,i inta[]={2,6,8,7,9} p=a; 1=2 printf( %d\%d\td\t%d\%d\n" *(ati), alp-al, *p++, *++p, *(&alil) D、8 8 、填空(后3题每空2分,其余每空1分,共20分) 第3页共8页
第 3 页 共 8 页 C.pa[5]表示某个元素的第 5 个元素的值 D.pa 是一个具有 5 个元素的指针数组,每个元素是一个 int 型指针 15、有以下程序段: int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b; b=p[6];则 b 中值是______。 A、10 B、6 C、8 D、9 16、设正 x、y 均为整型变量,且 x=10, y=3,则以下语句的输出结果是______ 。 printf("%d,%d,%d\n",++x,++y,x--); A、10,4,11 B、11,4,11 C、10,4,10 D、9,4,10 17、下面的程序,输出结果为 _______。 #include void fun(char *p) { char t; if (*p!='\0') {t=*p++; fun(p); if (t!='\0') printf("%c",t);} } void main() { char *a; a="1234"; fun(a);} A、运行出错 B、1324 C、4231 D、4321 18、下面的程序,输出结果为 _______。 #include void main( ) { int *p, i; int a[]={2, 6, 8, 7, 9}; p=a; i=2; printf("%d\t%d\t%d\t%d\t%d\n",*(a+i), a[p-a],*p++,*++p, *(&a[i])); } A、8 6 6 6 8 B、8 2 2 8 8 C、8 2 6 8 8 D、8 6 8 6 8 二、填空(后 3 题每空 2 分,其余每空 1 分,共 20 分)
1、已知‘A’~‘Z的 ASCII码为65~90,当执行“intx=“D+5;”语句后x的值为。 2、表达式 float(25)/4和int(14.6)%5的值分别为 和 3、关系表达式x+y>5的相反表达式为 4、举出C++中两种用户自定义的数据类型 5、执行“ typedef int aBC[10];”语句把ABC定义为具有10个整型元素的 那么语句“ABCa;”等价的语句是 6、当一个类对象离开它的作用域时,系统将自动调用该类的 7、在C++中,虽然友元提供了类之间数据进行访问的一种方式,但它破坏了面向对象 程序设计的 特性 8、使用 const语句定义一个标识符常量时,则必须对它同时进行 9、设变量均为int型,则表达式(b=51=b++)的值是 10、全局变量和 若不显示初始化,则自动初始化为0。 l1、若需要把一个函数“ void Fo;”定义为一个类AB的友元函数,则应在类AB的定 义中加入一条语句 12、假定p所指对象的值为25,p+1所指对象的值为46,则*++p的值为。 13、假定AB为一个类,则执行“ABa[10];”语句时,系统自动调用该类构造函数的次 数为 14、假定要动态分配一个类型为 Worker的具有n个元素的数组,并由r指向这个动态 数组,则使用的语句为 、读程题(每小题5分,共20分) #includeiostream. h> void maino for(int i=1:i e nt b, char op) switch(op) I case '+': x=double(a)+b: break x=double(a)-b: break case’*’:x= double(a)*b; break case'/: if(b) x=double(a)/b 第4页共8页
第 4 页 共 8 页 1、已知‘A' ‘Z'的 ASCII 码为 6590,当执行“int x=‘D'+5;”语句后 x 的值为________。 2、表达式 float(25)/4 和 int(14.6)%5 的值分别为________和________。 3、关系表达式 x+y>5 的相反表达式为____________________。 4、举出 C++中两种用户自定义的数据类型:___________、____________ 5、执行“typedef int ABC[10];”语句把 ABC 定义为具有 10 个整型元素的________, 那么语句“ABC a;”等价的语句是:________。 6、当一个类对象离开它的作用域时,系统将自动调用该类的____________。 7、在 C++中,虽然友元提供了类之间数据进行访问的一种方式,但它破坏了面向对象 程序设计的____________特性。 8、使用 const 语句定义一个标识符常量时,则必须对它同时进行__________。 9、设变量均为 int 型,则表达式(b=51,i=b++)的值是__________。 10、全局变量和_______________若不显示初始化,则自动初始化为 0。 11、若需要把一个函数“void F();”定义为一个类 AB 的友元函数,则应在类 AB 的定 义中加入一条语句:________________________。 12、假定 p 所指对象的值为 25,p+1 所指对象的值为 46,则*++p 的值为________。 13、假定 AB 为一个类,则执行“AB a[10];”语句时,系统自动调用该类构造函数的次 数为________。 14、假定要动态分配一个类型为 Worker 的具有 n 个元素的数组,并由 r 指向这个动态 数组,则使用的语句为____________________________。 三、读程题(每小题 5 分,共 20 分) 1、#include void main() {int s=0; for(int i=1;i #include double SD(int a, int b, char op) {double x; switch(op) { case '+': x=double(a)+b; break; case '-': x=double(a)-b; break; case '*': x=double(a)*b; break; case '/': if(b) x=double(a)/b;
el se ex it(1) break default: exit(1) return x void maino i int x=20, y=8 #includestring. h> struct Worker { char name[15];/姓名 int age //年龄 float pay;//工资 void maino rker x char *t="Weirong int d=45: float f=1235 strcpy(x name, t) cout void LG (int*& a, int& m) I a=new int[ml int水 for(int i=0; i<m; i++) *p++=i*i;} 第5页共8页
第 5 页 共 8 页 else exit(1); break; default: exit(1); } return x; } void main() { int x=20,y=8; cout #include struct Worker {char name[15]; //姓名 int age; //年龄 float pay; //工资 }; void main() { Worker x; char *t="WeiRong"; int d=45; float f=1235; strcpy(x.name,t); x.age=d; x.pay=f; cout void LG(int*& a, int& m) { a=new int[m]; int* p=a; for(int i=0;i<m;i++) *p++=i*i;}
void maino lint *b, n=5 LG(b, n) for (int i=0; i void main() f int f, fl, f2, i cou<<”斐波那契数列的前20个数为:n" cout<<setw( 8)<<f1<<setw()<<f2 for(i=3;<=20;计++) cout<<setw(8)<<f cout<<endl fl=n2 cout<<endl 2、已知一个类的定义如下:(6分) class AA i int a[ 10] void Seta( int aal,intn)∥用数组aa初始化数据成员a,用nn初始化数据成员n ∥从数组a中前n个元素中查找最大值 第6页共8页
第 6 页 共 8 页 void main() {int *b,n=5; LG(b,n); for(int i=0;i #include void main( ) { int f,f1,f2,i; cout class AA { int a[10]; int n; public: void SetA(int aa[], int nn) //用数组 aa 初始化数据成员 a,用 nn 初始化数据成员 n { …… } int MaxA(); //从数组 a 中前 n 个元素中查找最大值
void sorta(,∥对数组a中前n个元素进行从小到大排序 void PrintAO,∥依次输出数组a中的前n个元素,最后输出一个换行 int AA: MaxAo void AA: SortA void maino inta[10={23,78.46,5562,76,90,25,3842}; x SetA(a, 8) PrintAo cout<<m<<endl 该程序运行结果为 2325465562767890 五、编程题。(15分) 、按照下列要求编写程序: (1)写一个函数 void strsort(char*s),调用该函数能将给定的字符串按由小到大排序。 (其中:该函数参数s:为指向所要排序的字符串的首地址。 该函数名为: strsort 该函数返回类型为:void) 分) 第7页共8页
第 7 页 共 8 页 void SortA(); //对数组 a 中前 n 个元素进行从小到大排序 void PrintA(); //依次输出数组 a 中的前 n 个元素,最后输出一个换行 { …… } }; int AA:: MaxA() { …… } void AA:: SortA() { …… } void main() { int a[10]={23,78,46,55,62,76,90,25,38,42}; __________________________; x.SetA(a,8); int __________________________; __________________________; x.PrintA(); cout<<m<<endl; } 该程序运行结果为: 23 25 46 55 62 76 78 90 90 五、编程题。(15 分) 1、 按照下列要求编写程序: (1)写一个函数 void strsort(char *s),调用该函数能将给定的字符串按由小到大排序。 (其中:该函数参数 s:为指向所要排序的字符串的首地址。 该函数名为:strsort 该函数返回类型为:void ) (5 分)
(2)通过调用上面排序函数编程实现:将从键盘任意输入的两字符串先按由小到大排序 输出,再和并,并将和并后的字符串也按由小到大排序输出。(10分) 第8页共8页
第 8 页 共 8 页 (2)通过调用上面排序函数编程实现:将从键盘任意输入的两字符串先按由小到大排序 输出,再和并,并将和并后的字符串也按由小到大排序输出。(10 分)