1、 关于对象概念的描述中,( a)是错误的。 A. 对象就是C语言中的结构变量;
B. 对象代表着正在创建的类的一个实体;
C. 对象是一个属性和操作(或方法)的封装体; D. 对象之间的信息传递是通过消息进行的; 2、 下列给字符数组进行初始化中,(a )是正确的。
A. char s1[ ]=\"12345abcd\"; B. char s2[3]=\"xyz\";
C.char s3[][3]={ 'a', 'x', 'y'}; D. char s4[2[3]={\"xyz\3、 对于int *pa[5];的描述,(d)是正确的。
A. pa是一个指向数组的指针,所指向的数组是5个int型元素;
B. pa是一个指向某个数组中第5个元素的指针,该元素是int型变量; C. pa[5]表示某个数组的第5个元素的值;
D. pa是一个具有5个元素的指针数组,每个元素是一个int型指针; 4、 在int b[][3]={{1},{3,2},{4,5,6},{0}};b[2][2]的值是( d)。 A. 0; B. 2; C. 5; D. 6 5、下列的各类函数中,( c)不是类的成员函数。
A. 构造函数; B. 析构函数; C .友元函数; D. 拷贝初始化构造函数;
6、 下述静态数据成员的特征中,(d )是错误的。 A. 说明静态数据成员时前边要加修饰符static; B. 静态数据成员要在类体外进行初始化;
C. 引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符; D. 静态数据成员不是所有对象所共用的。 7、( a )是析构函数的特征。
A. 一个类中只能定义一个析构函数; B. 析构函数与类名不同;
C. 析构函数的定义只能在类体内; D. 析构函数可以有各个或多个参数。;
8、 已知:p是一个指向类A数据成员m的指针,A1是类A的一个对象。如果要
给m赋值为5,( c)是正确的。
A. A1.p=5; B. A1->p=5; C. A1.*p=5; D. *A1.p=5; 9、 关于new运算符的下列描述中,( d )是错的。 A. 它可以用来动态创建对象和对象数组;
B. 使用它创建的对象或对象数组可以使用运算符delete删除; C. 使用它创建对象时要调用构造函数;
D. 使用它创建对象数组时必须指定初始值。
10、 派生类的对象对它的基类成员中( a )是可以访问的。 A. 公有继承的公有成员; B. 公有继承的私有成员;
C. 公有继承的保护成员; D. 私有继承的公有成员。 二、填空题
1、输入正整数num,按从小到大的次序输出所有的因子。
#include int num,t,i,j,k,a[N]; cout<<\"请输入一个正整数:\\n\"; cin>>num; i=2; k=N-1 //k=39, a[0]=1;j=0; a[N-1]=num;t=num; while(i t=num/i; a[++j]=i; if(i for(i=0;i<=j;i++)cout<2、用1、2、3、4四个数组成四位数,输出所有可能组成的四位数,并统计四位数的个数。 #include int a,b,c,d,sum=0,x; for(a=1; a<5 ; a++ ) for(b=1; b<5 ; b++ ) for(c=1; c<5 ; c++ ) for(d=1; d<5 ; d++ ) { x=a* 1000 +b* 100 +c*10+d; cout<<” ”< typedef struct node { int data, count; node2 *next; }snode, *ptr; void compress(ptr head) { while(p1->next) { p2=p1->next; p1->next=p2->next; else(p1=p1->next) ; } } 4、#include test( int , float ); int getint(){return num;} float getfloat(){return f1;} }; test :: test() 第 3 页 共 15 页 { cout<<\"默认初始化\"< cout<<\"初始化\"< test a; test b(2,5.5); } 三、读程序题, 1、#include extern int x,y; cout< int s; s=a+b+x+y; return s; } 20 2、#include int add(int x=15,int y=10) { return x+y; 结果: } void main( ) { int a=8; cout< 3、#include void main ( ) { int a[8]={10,20,30,40,50,60,70,80}; 结果: int *pi; pi=&a[0]; pi++; cout<<\"*pi=\"<<*pi<<'\\n'; pi=&a[0]; cout<<\"*pi++=\"<<*pi++<<'\\n'; pi=&a[0]; cout<<\"*(pi++)=\"<<*(pi++)<<'\\n'; pi=&a[0]; cout<<\"*++pi=\"<<*++pi<<'\\n'; pi=&a[0]; cout<<\"(*pi)++=\"<<(*pi)++<<'\\n'; pi=&a[0]; cout<<\"++*pi=\"<<++*pi<<'\\n'; } 20 10 10 20 10 12 4、#include int number1; int &set1( ) { return number1; } 结果: int &set2( ) { static int number2; return number2; } int &max(int &m,int &n) { return (m>n?m:n); } void main ( ) { set1( )=5; cout< number1=7; cout< i=a; cout <<\"i=\"<~A ( ) {cout<<\"i=\"<A a(0); 结果: void main ( ) { A a1(10); A a2=20; a2=50; cout<<\"main()函数结束!\"< i=50 调用了析构函数 i=10 调用了析构函数 i=0 调用了析构函数 6、#include class A { int x; static int y; public: A(int x1,int x2) { x=x1; y=y+x2; } static void show1(); static void show2(A a); }; void A::show1( ) { cout<<\"Y=\"< AA(int i,int j) {A=i;B=j;cout<<\"Constructor\\n\";} AA(AA &obj) {A=obj.A+1;B=obj.B+2;cout<<\"Copy_Constructor\\n\";} ~AA() {cout<<\"Destructor\\n\";} void print() {cout<<\"A=\"<int A,B; 结果: }; 第 7 页 共 15 页 void main() { AA a1(2,3); AA a2(a1); a2.print(); AA *pa=new AA(5,6); pa->print(); delete pa;} Constructor Copy_ Constructor A=3,B=5 Constructor A=5,B=6 Destructor Destructor Destructor 8、#include public: virtual void f1() {cout<<\"调用函数CBase∷f1()!\"< void f1() {cout<<\"调用函数CDerived∷f1()!\"< CBase obj1,*P; CDerived obj2; 结果: P=&obj1; P->f1(); P->f2(); P->f3(); P=&obj2; P->f1(); P->f2(); P->f3(); } 调用函数CBase∷f1()! 调用函数CBase∷f2()! 调用函数CBase∷f3()! 调用函数CDerived∷f1()! 调用函数CBase∷f2()! 调用函数CBase∷f3()! 四、编程题 1、定义一个学生的类: 数据成员包括:姓名、学号、英语、数学、计算机三门成绩。 成员函数包括:设置姓名、学号和三门课的成绩、输出数据、以及求平均成绩。 2、编写一个函数,将参数P中元素颠倒次序。 函数原型:float *mirror(float *p[ ],int n); 其中:*mirror:返回类型为指针的函数 float *p[ ]:为指针数组 一、填空题 1、在字长为32位的机器中,sizeof(char)= 1 字节,sizeof(unsigned int)=4 字节. 2、C++语法规定,任何变量在使用前必须先 定义 ;变量有两个值,一个是变量本身的值,另一个是变量的 地址值 。 3、C++中任何一个数组的名字是一个 常量 指针,该指针的值是该数组 首元素 的地址。 第 9 页 共 15 页 4、函数调用时的参数传递主要分为单向传递和 地址 传递,前者的特点是 形参的改变不影响实参 。 5、函数重载时要求同名函数的参数 个数 或 类型 不同,否则无法确定是哪个函数。 6、静态数据成员是类的所有对象中 共享 的成员,静态数据成员初始化与一般数据成员初始化 不同 二、判断题 1、在说明语句 int a(15),&b=a,*p=&a;中,b的值的*P的是相等的。( t ) 2、在不同类型操作数组成的表达式中,其表达式的类型一定是最高类型double型。( f ) 3、break语句也可以用于if体内,它可退出if语句。( f) 4、在一个被调用函数中,一个return语句可返回多个值给调用函数。( f ) 5、在传值调用中,要求实参和形参的类型完全一致并且个数相等。( f) 6、for循环中,循环变量的作用域是该循环的循环体内。(f ) 7、类中所提供的成员函数可以直接访问私有成员。( t) 8、私有继承中,基类中所有成员对派生类的对象都是不可见的。( t ) 三、读程序题,写出运行结果 1、#include void main() { int a,b,c,d=5; c=2,c+=10; 结果: a =b=10; a * = 2; b / = 2; c % = 2; cout<20, 5, 0 2、#include void main() { int a = 50 , b=0 ; 结果: b = ++a; cout<cout<51 51 52 51 3、#include void main() { int f = 2002 , x; if( f != 3) x = 2003 ; 结果: else x = 20 ; cout< void main() { int i=1,sum=0; 结果: while(i<=10) sum+ = ++i; cout << \"sum=\" << sum << \} 65 11 5、#include void main() { int i; for(i=4 ; i<=10 ; i++ ) { if (i%3= =0) continue; 结果: cout<} 4,5,7,8,10 6、#include void main() { char flag='c' ; switch(flag) { case 'a' :cout<<\"1\"< 第 11 页 共 15 页 } 3 4 7、#include void main() { static int b[][3] = { {1,2,3},{4},{5,6} }; b[0][2]=12,b[1][2]=18; cout << **b<<\"\\"<<**(b+1) <<\"\\"<<**b+1<<\"\\"<<*(*(b+1)+2) <<\"\\n\"; cout << b[0][2]+b[1][2]+b[2][2]<< endl; 结果: } 1 4 2 18 30 8、#include void Swap( int &a, int & b); void main() { int x=10, y=7; cout<<\"x=\"< { int temp; temp = a ; a=b ; b=temp ; } 7,10 9、#include int add(int a, int b); void main() { extern int x, y; cout< int add(int a, int b) { int s=a+b ; return s; } 150 100 10、#include class A { public: A(); A(int i,int j); ~A(){cout<<\"Donstructor.\\n\";} void print(); private: int a,b; }; A::A() { a=b=10;cout<<\"Default constructor.\\n\";} 结果: A::A(int i,int j) { a=i,b=j;cout<<\"Constructor.\\n\";} void A::print()
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务