一、单项选择题
1. 在C++语言中,对函数参数默认值描述正确的是:( D )
A) 函数参数的默认值只能设定一个
B) 一个函数的参数若有多个,则参数默认值的设定可以不连续
C) 函数参数必须设定默认值
D) 在设定了参数的默认值后,该参数后面定义的所有参数都必须设定默认值
2. 假定AB 为一个类,则执行AB x ;语句时将自动调用该类的( B )。
A) 有参构造函数B) 无参构造函数
C) 拷贝构造函数D) 赋值构造函数
3. 下述关于开关语句的描述中,()是正确的。
A) 开关语句中default子句可以没有,也可以有一个;
B) 开关语句中每个语句序列中必须有break语句;
C) 开关语句中default子句只能放在最后;
D) 开关语句中case子句后面的表达式可以是整形表达式。
4. 关于对象概念的描述中,()是错误的。
A) 对象就是C语言中的结构变量;
B) 对象代表着正在创建的系统中的一个实体;
C) 对象是一个状态和操作(或方法)的封装体;
D) 对象之间的信息传递是通过消息进行的;
5. 下列给字符数组进行初始化中,()是正确的。
A) char s1[ ]="12345abcd"; B) char s2[3]="xyz";
C) char s3[][3]={ 'a', 'x', 'y'}; D) char s4[2[3]={"xyz","mnp"};
6. 在int a[][3]={{1},{3,2},{4,5,6},{0}}中,a[2][2]的值是()。
A) 3 B) 2 C) 6 D) 4
7. 声明类test的拷贝构造函数的正确形式是( D )。
A) int test B) void test C) test(void) D) test(test&)
8. 关于new运算符的下列描述中,()是错的。
A) 它可以用来动态创建对象和对象数组;
B) 使用它创建的对象或对象数组可以使用运算符delete删除;
C) 使用它创建对象时要调用构造函数;
D) 使用它创建对象数组时必须指定初始值。
9. 在C++ 中有以下4 条语句:static int hot=200;int &rad=hot;
hot=hot+100;cout< A) 0 B) 100 C) 300 D) 200 10. 下列关于构造函数的描述中,错误的是( B )。 A) 构造函数可以设置默认参数; B) 构造函数在声明对象时自动执行; C) 构造函数可以对静态数据成员进行初始化; D) 构造函数可以重载; 11. 下面关于重载函数的说明中正确的是( )。 A) 重载函数必须具有不同的返回类型。 B) 重载函数形参的个数必须不同 C) 重载函数必须具有不同的形式参数表 D) 重载函数名可以不同 12. 下列关于C++函数的说明中,正确的是( )。 A) 内联函数就是定义在另一个函数体内部的函数 B) 函数体的最后一条语句必须是return 语句 C) C++要求在调用一个函数前必须先声明其原型 D) 编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式 13. 已知函数原型为: void foo(int*, long &b); 实参定义为: int i; long f; 则正确的调用语句是( ). A) foo(i, &f); B) foo(i, f); C) foo(&i, f); D) foo(&i, &f); 14. C++中对于结构中定义的成员,其默认的访问权限为( )。 A) public B) protected C) private D) static 15. 下列关于类与对象的说法中,不正确的是( )。 A) 对象是类的一个实例 B) 任何对象只能属于一个具体的类 C) 一个类只能有一个对象 D) 类与对象的关系和数据类型与变量的关系相似 16. 下列关于构造函数的描述中错误的是( ) A) 构造函数可以设置默认参数B) 构造函数在定义类对象时自动执行 C) 构造函数可以对静态数据成员进行初始化D) 构造函数不可以重载 17. 类的析构函数的作用是( )。 A) 作为类的一般成员函数B) 类的初始化C) 对象的初始化D) 对象的删除 18. 以下关于静态数据成员的描述正确的是( )。 A) 静态数据成员可以在类体中进行初始化B) 静态数据成员不可以被类的实例调用 C) 静态数据成员不能受protected控制符的作用D) 静态数据成员可以直接用类名调用 19. 下面关于友元函数的描述中正确的是( )。 A) 友元函数的实现必须在类的内部定义B) 友元函数是类的成员函数 C) 友元函数破坏了类的封装性和隐藏性C) 友元函数不能访问类的私有成员 20. 下面关于友元函数的描述中错误的是( )。 A) 如果类A是类B的友元,那么类B也是类A的友元 B) 如果函数fun()被说明为类A的友元,那么在fun()中可以访问类A的私有成员 C) 友元关系不能被继承 D) 如果类A是类B的友元,那么类A的所有成员函数都是类B的友元函数 21. 下列属于C++语句的是。 A) ; B) a=17 C) a+5 D) cout<<’\n’ 22. 执行语句k=30;j=k++;后k和j的值分别为。 A) k=30,j=30 B) k=30,j=31 C) k=31,j=30 D) k=31,j=31 23. 若X是一个bool型变量,则X && 5<3的值。 A) 为true B) 为false C) 与X的值相同 D) 与X的值相反 24. 如果a=1,b=2,c=3,d=4,则条件表达式“a>b?a:c A) 3 B) 2 C) 1 D) 4 25. 执行下列语句后的输出结果是。 int hot=100; int &rad=hot; hot+=100; cout< A) 0 B) 100 C) 200 D) 300 26. 下列关于break语句的叙述不正确的是。 A) break语句可用于循环体中,它将使执行流程跳出本层循环体; break语句可用于switch语句中,它将使执行流程跳出当前的switch语句;break语句可用于if语句中,它将使执行流程跳出当前if语句; break语句在一层循环体中可以出现多次。 27. 下面关于类的对象性质的描述,正确的是。 A) 对象之间不可以相互赋值B) 不可以说明指向对象的指针 C) 对象不能用作数组元素D) 一个对象能用作另一个对象的成员 28. 在C++ 中实现封装是借助于。 A) 枚举 B) 类 C) 数组D) 函数 29. 下列不是描述类的成员函数的是。 A) 构造函数B) 析构函数 C) 友元函数D) 拷贝构造函数 30. 不能作为函数重载判断依据的是。 A) 参数个数B) 参数类型 C) 函数名称D)返回值类型 31. 假定一个类的构造函数为A(int aa,int bb){a=aa++;b=a*bb++;} ,则执行 A X(4,5); 语句后,X.a 和X.b 的值分别为。 A) 4 和5 B)5 和30 C) 4 和20 D)20 和5 32. 对于double (*p)[10];的描述,是正确的。 A) p是一个指向数组的指针,所指向的数组是10个double型元素; B) p是一个指向某个数组中第10个元素的指针,该元素是double型变量; C) p[5]表示某个数组的第10个元素的值; D) p是一个具有10个元素的指针数组,每个元素是一个double型指针; 33. 下面的函数声明中, 哪一个是”void BC(int a, int b);”的重载函数? A) int BC(int a, int b) B) void BC(int a, char b) C) float BC(int a, int b, int c = 0) D) void BC(int a, int b=0) 34. 已知char c; char * const pc="asdf",是正确的。 A) pc="dfgh"B) *pc=‘b’ C) *pc++=‘y’D) pc=&c 35. 下列关于构造函数的叙述,错误的是。 A)构造函数可以设置默认参数; B)构造函数在说明类变量时自动调用; C)构造函数可以对静态数据成员进行初始化; D)构造函数可以重载; 36. 下列关于构造函数的描述中错误的是( ) A) 构造函数可以设置默认参数B) 构造函数在定义类对象时自动执行 C) 构造函数可以对静态数据成员进行初始化D) 构造函数不可以重载 37. 类的析构函数的作用是( )。 A) 作为类的一般成员函数B) 类的初始化C) 对象的初始化D) 对象的删除 38. 以下关于静态数据成员的描述正确的是( )。 A) 静态数据成员可以在类体中进行初始化B) 静态数据成员不可以被类的实例调用 C) 静态数据成员不能受protected控制符的作用D) 静态数据成员可以直接用类名调用 39. 下面关于友元函数的描述中正确的是( )。 A) 友元函数的实现必须在类的内部定义B) 友元函数是类的成员函数 C) 友元函数破坏了类的封装性和隐藏性C) 友元函数不能访问类的私有成员 40. 下面关于友元函数的描述中错误的是( )。 A) 如果类A是类B的友元,那么类B也是类A的友元 B) 如果函数fun()被说明为类A的友元,那么在fun()中可以访问类A的私有成员 C) 友元关系不能被继承 D) 如果类A是类B的友元,那么类A的所有成员函数都是类B的友元函数 41. 重载函数在调用时选择的依据中,错误的是( ) A. 函数的参数 B. 参数的类型 C. 函数的名字 D. 函数的类型 42. 一个函数功能不太复杂,但要求被频繁调用,选用( . ) A. 内联函数 B. 重载函数 C. 递归函数 D. 嵌套函数 43. 下列不是描述类的成员函数的是( ) A. 构造函数 B. 析构函数 C. 友元函数 D. 拷贝构造函数 44. 构造函数不具备的特征的是( ) A. 构造函数的函数名与类名相同 B. 构造函数可以重载 C. 构造函数可以设置默认参数 D. 构造函数可以指定返回类型 45. 通常,拷贝构造函数的参数是( ) A. 某个对象名 B. 某个对象的成员名 C. 某个对象的引用名 D. 某个对象的指针名 46. 继承机制的作用是( ) A. 信息隐藏 B. 数据封装 C. 代码重用 D. 数据抽象 47. 类的析构函数的作用是( ) A.一般成员函数 B.类的初始化 C.对象的初始化 D.删除对象创建的所有对象 48. 类的析构函数是在( ) 调用的。 A. 类创建时 B. 创建对象时 C. 删除对象时 D. 不自动调用 49. 已知print ()函数是一个类无返回值的常成员函数,下列表示中正确的是( )。 A.void print()const B.const void print() C.void const print ; D.void print (const ); 50. 如果类A 被说明成类B 的友元,则( ) A. 类A 的成员即类B 的成员 B. 类B 的成员即类A 的成员 C. 类A 的成员函数不得访问类B 的成员 D. 类B 不一定是类A 的友元 51. 通过一个对象调用虚函数时,C++系统对该调用采用( )。 A.动态联编 B.静态联编 C.不确定是哪种联编 D.函数重载 52. 在公有继承的情况下,基类成员在派生类中的访问权限( ) A. 受限制 B. 保持不变 C. 受保护 D. 不受保护 53. 在C++中,当一个对象被创建后,它的每一个成员函数都含有一个系统自动生成的隐含的指针,称之为( )指针。 A.对象 B.派生C基类 D.this 54. 假定AB 为一个类,则执行AB x ;语句时将自动调用该类的( ) A. 有参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值构造函数 55. C++ 语言建立类族是通过( ) A. 类的嵌套 B. 类的继承 C. 虚函数 D. 抽象类 二、判断题 1、C++中,数组下标从1开始。( 错) 2、C++允许对字符串进行整体操作。( ) 3、break语句也可以用于if体内,它可退出if语句。() 4、在说明语句char a(‘A’),&b=a,*pa=&a;中,b的值与*pa的值相等。( ) 5、对象数组的元素可以是不同类的对象。() 6、私有继承中,基类中所有成员对派生类的对象都是不可见的。() 7、类中所提供的成员函数可以直接访问私有成员。() 8、按照标识符的要求,下划线是不能组成正确标识符的。() 9、函数的默认参数没有顺序要求,可以随意定义。() 10、在C++ 语言中,”A”占两个字节,而’A’占一个字节。() 11、C++语言支持封装性和继承性,不支持多态性。[ 错] 12、关系运算符可以用来比较两个字符的大小,也可用来比较两个字符串的大小。)[ ] 13、字符串"sdfgh"的长度是5。[ ] 14、引用和指针都可作函数参数。[ ] 15、友元函数说明在类体内,它是一种成员函数。[ ] 16、友元类必须被说明为公有成员。[ ] 17、纯虚函数是在基类中说明的虚函数,它在该基类中没有定义具体的操作内容。[ ] 18、析构函数不能被继承。[ ] 19、运算符重载以后,其优先级和结合性都不能改变。[ ] 20、在C++中,函数名实际上是一个指针,它指向函数的入口。[ ] 21、构造函数可以被继承。( ) 22、析构函数不能被继承。( ) 23、多继承情况下,派生类的构造函数的执行顺序取决于定义派生时所指定的各基类的顺序。( ) 24、解决多继承情况下出现的二义性的方法之一是使用成员名限定法。( ) 25、函数的参数个数和类型都相同,只是返回值不同,这不是重载函数。( ) 26、多数运算符可以重载,个别运算符不能重载,运算符重载是通过函数定义实现的。( ) 27、对每个可重载的运算符来讲,它既可以重载为友元函数,又可以重载为成员函数,还可以重载为非成员函数。( ) 28、对单目运算符重载为友元函数时,说明一个形参;重载为成员函数时,不能显式说明形参。( ) 29、重载运算符保持原运算符的优先级和结合性不变。( ) 30、构造函数说明为纯虚函数是没有意义的。( ) 三、简答题 1. 简述C++的异常处理机制? 2.C++的预定义的流对象有哪些? 3. 试以客观世界为例,说明抽象、封装、继承性和多态性等概念。 4. 多继承的情况下为什么会产生二义性?如何消除二义性? 5. 试说明void F(const T &t); 和inf f() const; 中关键字const 作用。 6.有如下程序 #include #include using namespace std; class B; class A{ friend B; public: A(){ cout<<"in A()"< } A(const A &a){ cout<<"in A(const A &a)< } ~A(){ cout<<"In ~A()"< } }; class B: public A{ public: B(){ cout<<"In B()"< } B(const A a){ cout<<"In B(const A a)"< } }; void f(A &a){ cout<<"In f(A &a)"< } void ff(const B &b){ cout<<"In ff(B &b)"< } void ff(A a){} int main() { A a; B bb=a; } 程序运行的结果是_________________________ 7.有如下程序 #include using namespace std; template class HisClass { Type data; public: HisClass(Type a, Type b, Type c); Type getData(); }; template HisClass if(a>b&&a>c) data=a; else if(b>c) data=b; else data=c; } template Type HisClass { return data; } int main() { HisClass x3(4,5,3), x4(7,8,9), x5(8,7,9); cout< < system("pause"); return 0; } 程序运行的结果是_________________________ 8. 以下程序在运行中出现致命错误,找出错误原因并修正。 #include #include class sample{ private: char *string; public: sample(const char *s){ string = new char[strlen(s)+1]; strcpy(string s); } ~sample(){ delete string; }; }; sample f(char *arg){ sample tmp(arg); return tmp; } int main() { sample local=f("abcd"); return 0; } 9.有如下程序 #include using namespace std; class P { char *name; int age; char *add; public: P(){ cout<<"P"; } ~P(){ cout<<"!P"; } }; class S:public P { char *department; int level; cout<<"S"; } ~S(){ cout<<"!S"; } }; class T: public P { char *major; float s; public: T(){ cout<<"T"; } ~T(){ cout<<"!T"; } }; int main() { S s; T t; system("pause"); return 0; } 程序运行的结果是_________________________ 10.有如下程序 #include using namespace std; class B { public: B( ) { cout << "B::B( )" << endl; num++; } virtual void f( ) = 0; virtual void g( ) = 0; cout << "B::k( )" << endl; g( ); } virtual ~B( ){ cout << "B::~B( )" << endl; num--; } static int getNum( ){ return num; } private: static int num; }; class D1: public B { public: D1( ) { cout << "D1::D1( )" << endl; } void f( ) { cout << "D1::f( )" << endl; } void g( ){ cout << "D1::g( )" << endl; } ~D1( ) { cout << "D1::~D1( )" << endl; } }; class D2: public B { public: D2( ) { cout << "D2::D2( )" << endl; } void f( ){ cout << "D2::f( )" << endl; } void g( ){ cout << "D2::g( )" << endl; } cout << "D2::~D2( )" << endl; } }; int B::num = 0; int main( ) { B* buf[3]; buf[0] = new D1; buf[1] = new D2; buf[2] = new D1; int i; cout << B::getNum( ) << endl; for ( i = 0; i<3; i++) buf[i]->k( ); for (i = 0; i<3; i++) delete buf[i]; cout << B::getNum( ) << endl; system("pause"); return 0; } 程序运行的结果是_________________________ 11.有如下程序 #include using namespace std; class R { public: R(int r1, int r2): R1(r1), R2(r2){}; void print(); void print() const; private: int R1, R2; }; void R::print(){ cout< }; void R::print()const{ cout< } R a(5,4); const R b(20,52); b.print(); system("pause"); return 1; } 程序运行的结果是_________________________ 12.有如下程序 #include using namespace std; class demo{ public: static int constructor, copy_constructor; demo(){ cout<<"default constructor"< constructor++; } demo(const demo& x){ cout<<"copy constructor"< copy_constructor++; } }; int demo::constructor=0; int demo::copy_constructor=0; demo usercode(demo b){ demo c(b); return c; } int main() { demo a, d; cout<<"calling usercode"< d=usercode(a); cout< system("pause"); 程序运行的结果是_________________________ 13.有如下程序 #include using namespace std; class A{ static int m; int n; public: A(int m, int n){ m=this->m; n=this->n; } Show(){ cout< } } int A::m; int main() { A a1(3,4); A a2(5,6); a1.Show(); a2.Show(); } 程序运行的结果是_________________________ 14.有如下程序 #include using namespace std; class P { char *name; int age; char *add; public: cout<<"P"; } ~P(){ cout<<"!P"; } }; class S:public P { char *department; int level; public: S(){ cout<<"S"; } ~S(){ cout<<"!S"; } }; class T: public P { char *major; float s; public: T(){ cout<<"T"; } ~T(){ cout<<"!T"; } }; int main() { S s; T t; system("pause"); return 0; } 程序运行的结果是: 15. 为什么要定义虚析构函数? 16.有如下程序 #include using namespace std; class B { public: B( ) { cout << "B::B( )" << endl; num++; } virtual void f( ) = 0; virtual void g( ) = 0; void k( ){ f( ); cout << "B::k( )" << endl; g( ); } virtual ~B( ){ cout << "B::~B( )" << endl; num--; } static int getNum( ){ return num; } private: static int num; }; class D1: public B { public: D1( ) { cout << "D1::D1( )" << endl; } void f( ) { cout << "D1::f( )" << endl; } void g( ){ cout << "D1::g( )" << endl; } ~D1( ) { cout << "D1::~D1( )" << endl; } }; class D2: public B { public: D2( ) { cout << "D2::D2( )" << endl; } void f( ){ cout << "D2::f( )" << endl; } void g( ){ cout << "D2::g( )" << endl; } ~D2( ){ cout << "D2::~D2( )" << endl; } }; int B::num = 0; int main( ) { B* buf[3]; buf[0] = new D1; buf[1] = new D2; buf[2] = new D1; int i; cout << B::getNum( ) << endl; for ( i = 0; i<3; i++) buf[i]->k( ); for (i = 0; i<3; i++) delete buf[i]; cout << B::getNum( ) << endl; system("pause"); return 0; } 程序运行的结果是_________________________ 17.有如下程序 #include using namespace std; class R { public: R(int r1, int r2): R1(r1), R2(r2){}; void print(); void print() const; private: int R1, R2; }; void R::print(){ cout< }; void R::print()const{ cout< } int main() { R a(5,4); const R b(20,52); b.print(); system("pause"); return 1; } 程序运行的结果是: 18.有如下程序 #include using namespace std; class B; class A{ friend B; public: A(){ cout<<"in A()"< } A(const A &a){ cout<<"in A(const A &a)< } ~A(){ cout<<"In ~A()"< } }; class B: public A{ public: B(){ cout<<"In B()"< } B(const A a){ cout<<"In B(const A a)"< } }; void f(A &a){ cout<<"In f(A &a)"< } void ff(const B &b){ cout<<"In ff(B &b)"< } void ff(A a){} int main() { A a; B bb=a; } 19.有如下程序 #include using namespace std; class demo{ public: static int constructor, copy_constructor; demo(){ cout<<"default constructor"< constructor++; } demo(const demo& x){ cout<<"copy constructor"< copy_constructor++; } }; int demo::constructor=0; int demo::copy_constructor=0; demo usercode(demo b){ demo c(b); return c; } int main() { demo a, d; cout<<"calling usercode"< d=usercode(a); cout< system("pause"); return 0; } 程序运行的结果是: 20. 请分析下面的程序并给出该程序的执行结果。 #include class AA{ int a; 《面向对象程序设计C++》期末考试试卷(B) 一、单项选择题(每小题2分,共40分) 1、关于C++与C语言关系的描述中,()是错误的。 A.C语言是C++语言的一个子集B.C语言与C++语言是兼容的 C.C++语言对C语言进行了一些改进D.C++语言和C语言都是面向对象的 2、已知:int m=10; 下列表示引用的方法中,()是正确的。 A.int &x=m; B.int &y=10; C.int &z; D.float &t=&m; 3、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*'); 下面函数调用中,不合法的是()。 A.testDefaulParam(5); B.testDefaulParam(5,8); C.testDefaulParam(5,'#'); D.testDefaulParam(0,0,'*'); 4、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是()。 A.函数的返回值类型B.参数的类型C.函数名称D.参数个数 5、下列有关C++类的说法中,不正确的是()。 A.类是一种用户自定义的数据类型 B.只有类中的成员函数或类的友元函数才能存取类中的私有成员 C.在类中,如果不做特别说明,所有成员的访问权限均为私有的 D.在类中,如果不做特别说明,所有成员的访问权限均为公用的 6、已知X类,则当程序执行到语句X array[3];时,调用了()次构造函数。 A.0 B.1 C.2 D.3 7、有关析构函数的说法,不正确的是()。 A.析构函数有且仅有一个 B.析构函数和构造函数一样可以有形参 C.析构函数的功能是在系统释放对象之前作一些内存清理工作 D.析构函数无任何函数类型 一、填空题(每空1分,共14分) 1、观看以下程序: class point{ public: void show() {cout<<”point”< (A)指针(B)引用(C)枚举(D)结构 3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。 (A)share (B)public (C)private (D)protected 4、关于构造函数,下列说法不正确的是()。 (A)构造函数名字和类名相同 (B)构造函数在创建对象时自动执行 (C)构造函数无任何函数返回类型 (D)构造函数有且只有一个 5、派生类可以访问其基类的()。 (A)公有成员(B)保护成员 (C)私有派生(D)公有和保护成员 6、下列关于运算符重载的描述中,错误的是()。 (A)运算符重载不可以改变操作数的个数 (B)运算符重载不可以改变运算符的功能 (C)运算符重载不可以改变结合方向 (D)运算符重载不可以改变运算优先级 7、C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是() (A)面向过程(B)面向对象(C)安全性(D)复用性 8、对于类中定义的成员,其隐含访问权限为()。 A.public B.protected C.private D.static 9、下面有关重载函数的说法中正确的是() (A)重载函数必须具有不同的返回值类型;(B)重载函数形参个数必须不同; (C)重载函数必须有不同的形参列表(D)重载函数名可以不同; 10、有如下的对类“CSample”的说明,其中()是错误的。 class CSample { A.int a=23; B.CSample(); public: C.CSample(int val); D.~ CSample(); 11、在int a=3,int *p=&a;中,*p的值是( ) A.变量a的地址值 B.无意义 C.变量p的地址值 D.3 12、每个类()构造函数。 (A)只能有一个(B)只可有公有的 1 什么是面向对象程序设计,它与传统的结构式程序有什么不同。 面向对象程序设计是一种适用于设计、开发各类软件的范型。它是将软件看成是一个由对象组成的社会:这些对象具有足够的智能,能理解从其他对象接受的信息,并以适当的行为作出响应;允许低层对象从高层对象继承属性和行为。通过这样的设计思想和方法,将所模拟的现实世界中的事物直接映射到软件系统的解空间。 与传统的结构式程序设计相比,面向对象程序设计吸取了结构式程序设计的一切优点(自顶向下、逐步求精的设计原则)。而二者之间的最大差别表现在: ·面向对象程序采用数据抽象和信息隐藏技术使组成类的数据和操作是不可分割的,避免了结构式程序由于数据和过程分离引起的弊病。 · 面向对象程序是由类定义、对象(类实例)和对象之间的动态联系组成的。而结构式程序是由结构化的数据、过程的定义以及调用过程处理相应的数据组成的 2 用面向对象方法建立模型的思维过程是怎样的。 用面向对象方法建立拟建系统的模型的过程就是从被模拟现实世界的感性具体中抽象要解决的问题概念的过程。这种抽象过程分为知性思维和具体思维两个阶段,其中:·知性思维是从感性材料中分解对象,抽象出一般规定,形成了对对象的普遍认识。·具体思维是从知性思维得到出的一般规定中揭示的事物的深刻本质和规律,其目的是把握具体对象的多样性的统一和不同规定的综合。 3 解释以下概念: ①对象:在现实世界中,对象就是可以感觉到的实体。每个对象具有一个特定的名字以 区别于其他对象;具有一组状态用来描述它的某些特性;具有一组操作,每一个操作决定对象的一种功能或行为(为自身服务的操作和为其他对象提供服务的操作)。而在面向对象系统中,对象是可以标识的存储区域。每个对象的状态被保存在此区域中,而实现一类对象行为的操作(代码)被保存在另外相关的存储器区域中。 ②消息:消息是要求某个对象执行其某种功能操作(方法)的规格说明。因此,消息是 由消息的接收者、消息要求提供的操作(消息名)和必要的参数组成的。 ③类:在现实世界中,类是对一组具有共同特性(属性和行为)的客观对象的抽象。而 在面向对象系统中,类是由程序员自定义的具有特定结构和功能的类型,是一种代码共享的手段。 ④实例:任何一个对象都是该对象所属类的一个具体实例。 ⑤公有消息:是由对象外向对象发送的消息,用于激活该对象的某种方法。 ⑥私有消息:是由对象向自身发送的消息,用于内部操作;该类消息不能从对象外向该 对象发送。 ⑦消息序列:在面向对象系统中一个事件的发生总会有多个对象的多次相互作用才能完 成,使得这些对象能够相互作用的消息组成的序列被称为消息序列。 4 类与实例的关系如何? 类是创建对象的模板,而对象是实现类的实例。属于同一类的不同实例必须具有: ·相同的操作集合; ·相同的静态属性集合; ·不同的对象名和属性动态值。 C语言题库及答案 姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题吧。加油! 一单项选择题 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’ 若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串 选项B,C,分别用{}和’’标识字符串 选项D,标识字符。 3、以下说法中正确的是( C )。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是( B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C )。 A.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是( B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是( C )。 A) %x B) a+b C) a123 D) 123 8、下列四组字符串中都可以用作C语言程序中的标识符的是( A )。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。《面向对象程序设计C 》期末试卷及标准答案
c面向对象程序设计试题和答案(经典题目)
什么是面向对象程序设计
C语言题库及答案
《面向对象程序设计》答案