面向对象程序设计题库(C )(DOC)

面向对象程序设计题库(C  )(DOC)
面向对象程序设计题库(C  )(DOC)

一、单项选择题

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::HisClass(Type a, Type b, Type c){

if(a>b&&a>c)

data=a;

else

if(b>c)

data=b;

else

data=c;

}

template

Type HisClass::getData()

{

return data;

}

int main()

{

HisClass x1(3,4,5), x2(5,3,4),

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++面向对象程序设计大作业

《面向对象程序设计》 大作业 题目学生成绩管理系统 学院 专业 班级 姓名 指导教师 2015 年11 月11 日

目录 一大作业的目的 (1) 二大作业的内容............................ . .. (2) 三大作业的要求与数据............... ...... . (3) 四大作业应完成的工作.................. . (4) 五总体设计(包含几大功能模块)........... . (5) 六详细设计(各功能模块的具体实现算法——流程图) (6) 七调试分析(包含各模块的测试用例,及测试结果) (7) 八总结 (8) 十参考资料 (9)

一大作业的目的 《面向对象程序设计》是一门实践性很强的课程,通过大作业不仅可以全方位检验学生知识掌握程度和综合能力,而且还可以进一步加深、巩固所学课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。更好地掌握运用C++语言独立地编写、调试应用程序和进行其它相关设计的技能。 二大作业的内容 对学生信息(包括学号、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出.将学生的成绩信息进行记录,信息内容包含:(1)学生的学号(2)学生的姓名(3)学生的成绩。假设,现收集到了一个班学生的所有成绩信息,要求用C语言编写一个简单的成绩管理系统,可进行录入、查询、修改和浏览等功能。学习相关开发工具和应用软件,熟悉系统建设过程。 三大作业的要求与数据 1、用C++语言实现系统; 2、对学生信息(包括学号、姓名、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出. 3、学生信息包括:其内容较多,为了简化讨论,要求设计的管理系统能够完成以下功能: (1) 每一条记录包括一个学生的学号、姓名、3门课成绩 (2)、成绩信息录入功能:(成绩信息用文件保存,可以一次完成若干条记录 的输入。) (3)、成绩信息显示浏览功能:完成全部学生记录的显示。 (4)、查询功能:完成按姓名查找学生记录,并显示。 (5)成绩信息的删除:按学号进行删除某学生的成绩. (6)、排序功能:按学生平均成绩进行排序。 (7)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!

C语言练习试题和答案

单项选择题: 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从 C开始执行。 A) 程序中第一条可执行语句 B) 程序中第一个函数 C) 程序中的main函数 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)。 [i] 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# 语言中的简单数据类型包括(D)。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是C。 A) B)2 C)1 D)3 11.如果int a=3,b=4;则条件表达式"a

面向对象程序设计 复习资料

1.对象 (1)从概念层面讲,对象是某种拥有责任的抽象。 (2)从规格层面讲,对象是一系列可以被其他对象使用的公共接口。 (3)从语言实现层面讲,对象封装了代码和数据。 2.软件开发中的经典阶段:需求、分析、设计、规范、实现、测试、部署、维护。 3.设计7原则:开闭原则、里氏代换原则、依赖倒转原则、合成/聚合复用原则、 迪M特原则、接口隔离原则、单一职责原则。 4.面向对象的方法学:UML(统一建模语言)、RUP(统一软件开发过程)、XP(极限 编程)。 开发方法:Booch、Coad、OMT、UML、OOSE、Wirfs—Brock 5.OOA——运用面向对象方法进行需求分析。 OOD——运用面向对象方法进行系统设计。 OOP——运用面向对象方法进行程序设计。 6.OOA的基本任务:是运用面向对象的方法,对问题域和系统责任进行分析和理解,对其中的事物和它们之间的关系产生正确的认识,找出描述问题域及系统责任所需的类及对象,定义这些类和对象的属性和操作,以及它们之间所形成的结构、静态联系和动态联系。最终目的:是产生一个符合用户需求,并能够直接反映问题域和系统责任的OOA模型及其详细说明。 优点:(1)加强了对问题域和系统责任的理解。(2)改进与分析有关的各类人员之间的交流。(3)对需求的变化具有较强的适应性。(4)支持软件复用。 OOA的三大策略是:属性策略、方法策略、对象策略。 7.(1)封装:是指对象在其操作中隐藏属性。它是一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的。封装的目的是使对象的使用者和生产者分开,使对象的定义和实现分开。 例如:要从同事那里借钱,在商店购买食物,就不会抢夺同事的钱包,大翻一通,看看里 面是否有足够的钱。而应该询问他们是否可以借你一些钱,他们就会自己翻钱包。 以表示圆的一个对象作为封装的例子。圆的操作应能计算出半径、直径、周长和面积。假定选择存储直径,要访问直径的程序员都会选择存储直径属性,而不是通过“获取直径”的操作来访问。如果在软件的后续版本中要存储的是半径,就必须找出系统中直接访问直径的所有代码,并更正它们,有了封装,就不会有问题。 (2)继承:可以指定类从父类中获取一些特性,再添加它自己的独特特性。继承是类间的 基本关系,它是基于层次关系的不同类共享数据和操作的一种机制。父类中定义了其所有子类的公共属性和操作,在子类中除了定义自己特有的属性和操作外,可以继承父类的属性和操作,也可以对父类中的操作重新定义其实现方法。 例如:在面向对象中,我们可以把洗衣机、电冰箱、微波炉、收音机看成是家用电气类的 子类,也可以说家用电器类是这些类的超类。家用电器类具有的属性OnOffSwitch和electricWire,具有turnOn()和turnOff()操作。因此,如果你知道某物是家用电器,那么就会立即知道它 具有家用电器类的属性和操作,这种关系就是继承。每个家用电器类的子类都继承了家用电器类的特征。同时,每个子类都增加了自己的属性和操作。 (3)多态:是指同一操作作用于不同的对象上可以有不同的解释,并产生不同的执行结果。例如:“画”操作,作用在“矩形”对象上,则在屏幕上画一个矩形;作用在“圆”对象上, 则在屏幕上画一个圆。也就是说,相同操作的消息发送给不同对象时,每个对象将根据自1 / 9

面向对象程序设计实验指导书讲解

面向对象程序设计实验指导书 实验一、C++开发环境应用入门(2学时)(选做) 1、实验目的 (1)了解C++开发工具的特点 (2)熟悉C++开发环境 (3)学习用C++编写标准的C++程序 2、实验任务 使用C++来建立一个非图形化的标准C++程序,编译、运行下例程序: #include void main(void) { cout<<”Hello!\n”; cout<<”Welcome to C++!\n”; } 3、实验步骤 (1)启动Visual C++或C++Builder开发环境 (2)创建一个项目 A)单击File菜单中的New选项,显示示新建对话框 B)选择Console Wizard(C++Builder) 或Win32 Console Application(VC++)。 C)选择项目所在路径及输入项目的名称 D)依次按‘下一步’直至完成为止。 (3)至此,C++Builder已经建立好工程相关的文件(请不要随意更改其自动生成的文件),在生成的main函数中写入必要的内容即可。 (4)对于VC,请继续下面的步骤: A)建立C++源程序文件 a)选选菜单命令Project|Add to Project|New,弹出New对话框 b)在New对话框的Files选项卡中选择C++ Source File,并填入文件名称,单击OK按钮,完成 新建C++源程序文件 B)编辑C++源程序文件 a)在文件编辑窗口中输入代码 b)完成后,选择菜单File|Save保存这个文件 C)建立并运行可执行程序 a)选择菜单命令Build,建立可执行程序 如果你正确输入了源程序,此时便成功地生成了可执行程序。 如果程序有语法错误,则屏幕下方的状态窗口中会显示错误信息,根据这些错误信息对源 程序进行修改后,重新选择菜单命令Build建立可执行程序。 b)选择菜单命令Run,运行程序,观察屏幕显示内容。 D)关闭工作空间 选择菜单命令File|Colse WorkSpace关闭工作空间。

2016年电大面向对象程序设计技术-作业题

2015秋季学期计算机科学与技术本科 《面向对象程序设计技术》作业题 (在电大在线该课程讨论区跟帖提交,注明姓名和学号以记录成绩)选择题 1.可以在本类及派生类的成员函数中进行访问的访问控制修饰符是(B) A.private B.protected C.public 2.在IDE中将编程项目采用多文件结构下,类的定义一般放在(A) A.头文件 B.程序文件 C.主程序文件 3.内联成员函数在类外定义时要将其和类定义一起放在(A) A.头文件 B.程序文件 C.主程序文件 4.下面哪个内存区域是C++中的运行时动态内存分配区域?( D ) A.代码区 B.栈区 C.数据区 D.堆区 5.对象作为函数参数使用时,一般使用(A)形式 A.引用 B.指针 C.对象拷贝

6.同类的多个不同对象的数据成员值各有不同,但不同对象可以共享类的成员函数代码, 实际调用成员函数时,是通过(B )来区分不同对象的。 A.显式给出不同对象不同地址 B.隐含的this指针 C.引用 7.下面哪一种情况不会自动调用拷贝构造函数。(E) A.用一个对象初始化另一个对象时 B.当一个对象作为值传递给一个函数时 C.当一个对象作为值从一个函数返回之前,该对象被拷贝到栈区 D.函数调用结束后,栈区中的返回对象拷贝给主调程序的对象 E.建立指向对象的指针并初始化指针值时 8.下列哪些对象的数据成员类型可以不用初始化表的方式进行初始化(D) A.常量数据成员 B.引用数据成员 C.类中对象成员 D.一般数据成员 9.下列哪一种类设计一般无需在类中设计静态数据成员以使建立的多个对象共享静态数 据数据成员。( D ) A.一个链表类的头指针和尾指针 B.一个学生类中用于保存建立了多少个学生对象的计数器 C.银行帐号类中的年利率 D.一般只用于建立一个对象的类 10.一个类中的公有(public)性质的静态数据成员,以下哪一种访问方式是错误的(D) A.对象名.静态数据成员名 B.指向对象的指针—>静态数据成员名 C.类名::静态数据成员名 D.类名.静态数据成员名 11.下列哪一个运算符不能够被类所重载(E) A.“.”成员访问运算符 B.“*”成员指针访问运算符 C.“::”域运算符 D.“?:”条件运算符 E.“=”赋值运算符

第3章 面向对象程序设计基础

第3章面向对象程序设计基础

第3章面向对象程序设计基础 【1】什么是Java程序使用的类?什么是类库? 答:类是将一类事物的特性描述出来,然后如果用这个类来定义对象,则该对象就拥有了这个类所描述的所有特性。 在Java系统中,系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合称为一个包,所有包合称为类库。 【2】如何定义方法?在面向对象程序设计中方法有什么作用? 答:方法的定义由两部分组成:方法声明和方法体。 方法的声明如下: 返回值类型方法名(参数类型形式参数1,参数类型形式参数2…){ 程序代码; 返回值; } 在面向对象程序设计中,方法的作用是完成对类和对象属性操作。 【3】简述构造方法的功能和特点。下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。 void Student(int no,String name) {

studentNo=no; studentName=name; return no; } 答:构造方法的功能是:构造方法是一个特殊的方法,主要用于初始化新创建的对象; 特点:构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,而且构造方法是不返回任何数据类型,甚至也不返回void数据类型,即不能在构造方法前加void。 错误之处:(1)构造方法Student()前不能加void,(2)不能用return语句,(3)类名Student 首字母S改成小写s. 【4】定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。编写Java程序创建student类的对象及测试其方法的功能。 class Student { String id; String name; String sex; int age; void talk(){

c语言试题及答案

1、以下正确的说法是( B ) (A) 用户若需要调用标准库函数,调用前必须重新定义 (B) 用户可以重新定义标准库函数,若如此,该函数将失去原有含义 (C) 系统根本不允许用户重新定义标准库函数 (D) 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调 2、以下正确的函数声明形式是( A ) (A) double fun(int x, int y) (B) double fun(int x; int y) (C) double fun(int x, int y); (D) double fun(int x,y); 3、以下正确的函数形式是( D ) (A) double fun(int x, int y) { z=x+y; return z;} (B) fun(int x,y) { int z; return z;} (C) fun(x,y) { int x,y; double z; z=x+y; return z;} (D) double fun(int x, int y) { double z; z=x+y; return z;} 4、以下正确的说法是( A ) 在C语言中 (A) 实参和与其对应的形参各占用独立的存储单元 (B) 实参和与其对应的形参共占用一个存储单元 (C) 只有当实参和与其对应的形参同名时才共占用存储单元 (D) 形参是虚拟的,不占用存储单元 5、若调用一个函数,且此函数中没有return语句,则正确的说法是( A ) 该函数 (A) 没有返回值 (B) 返回若干个系统默认值 (C) 能返回一个用户所希望的函数值 (D) 返回一个不确定的值 6、以下不正确的说法是( B ) C语言规定 (A) 实参可以是常量、变量和表达式 (B) 形参可以是常量、变量和表达式 (C) 实参可以为任意类型 (D) 形参应与其对应的实参类型一致 7、以下正确的说法是( C ) (A) 定义函数时,形参的类型说明可以放在函数体内 (B) return后边的值不能为表达式 (C) 如果函数值的类型与返回值类型不一致,以函数值类型为准 (D) 如果形参与实参的类型不一致,以实参类型为准 8、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( B ) (A) 地址传递 (B) 单向值传递 (C) 由实参传给形参,再由形参传回给实参 (D) 由用户指定传递方式

面向对象程序设计期末综合练习一(单选题)

22. 下列的符号常量定义中,错误的定义是()。 A. const M=10; B. const int M=20; C. const char ch; D. const bool mark=true; 40. 函数重载是指()。 A. 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同 B. 两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同 C. 两个以上的函数名字不同,但形参的个数或类型相同 D. 两个以上的函数取相同的函数名,并且函数的返回类型相同 41. 以下关于函数模板叙述正确的是()。 A. 函数模板也是一个具体类型的函数 B. 函数模板的类型参数与函数的参数是同一个概念 C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数 D. 用函数模板定义的函数没有类型 42. 下列()的调用方式是引用调用。 A. 形参和实参都是变量 B.形参是指针,实参是地址值 C. 形参是引用,实参是变量 D.形参是变量,实参是地址值

43. 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择()。 A. 内联函数 B.重载函数 C.递归函数 D.函数模板 44. 函数原型语句正确的是()。 A. int Function(void a); B.void Function (int); C. int Function(a); D.void int(double a); 45. C++中函数返回值的类型是由()决定的。 A. return语句中表达式的类型 B.该函数定义时的类型 C.调用函数时的调用语句 D.系统根据结果 56. 采用重载函数的目的是()。 A. 实现共享 B. 减少空间 C. 提高速度 D. 使用方便,提高可读性 58. 以下叙述中正确的是( )。 A. 使用#define可以为常量定义一个名字,该名字在程序中可以再赋另外的值 B. 使用const定义的常量,其值在程序运行时是不可改变的 C. 在程序中使用内联函数使程序的可读性变差 D. 在定义函数时可以在形参表的任何位置给出缺省形参值 70. 用new运算符创建一个含10个元素的一维整型数组的正确语句是( )。 A. int *p=new a[10]; B. int *p=new float[10];

面向对象程序设计(答案)

学号:姓名: 第三章面向对象程序设计作业 一、判断题 1、一个Java源程序可有多个类,但只仅有一个public类,而且程序名与public类名相同。对 2、如果类A和类B在同一个包中,则除了私有成员外,类A可以访问类B中所有的成员。对 3、接口中的成员变量全部为常量,方法为抽象方法。对 4、抽象类可以有构造方法,可以直接实例化。错 5、对static方法的调用可以不需要类实例。对 6、包含抽象方法的类一定是抽象类。对 7、方法中的形参可以和方法所属类的属性同名。对 8、接口无构造器,不能有实例,也不能定义常量。错 9、类的实例对象的生命周括实例对象的创建、使用、废弃、垃圾的回收。对 10、Java应用程序的入口main方法只有一种定义法。对 二、选择题 1、下列答案正确的是(A ) A) 在同一个Java源文件中可以包含多个类,只能有一个被声明为public B) 在同一个Java源文件中只能包含一个类,并被声明为public C) 在同一个Java源文件中可以包含多个类,都可以被声明为public D) 在同一个Java源文件中可以包含多个类,只能有一个被声明为default 2、Java实现动态多态性是通过( B )实现的。 A) 重载B) 覆盖 C) 接口D) 抽象类 3、下列哪一个是正确的方法重载描述( A ) A) 重载方法的参数类型必须不同 B) 重载方法的参数名称必须不同 C) 返回值类型必须不同 D) 修饰词必须不同 4、final关键字不可以用来修饰( D ) A) 类B) 成员方法 C) 域D) 接口 5、接口的所有成员方法都具有( B )属性 A) private, final B) public, abstract C) static, protected D) static 6、Java的封装性是通过(A )实现的 A) 访问控制B) 设计内部类 C) 静态域和静态方法D) 包 7、下列接口或类不属于.*包的是( D ) A) Collection B)Vector C) Map D) Integer 8、下述哪一组方法,是一个类中方法重载的正确写法( A ) A) int addValue( int a, int b ){return a+b;}

C语言试卷及答案

一、选择题(每题 1 分,共 20 分) 1. C 语言程序的三种基本结构是顺序结构、选择结构和结构。 A、循环 B、递归 C、转移 D、嵌套 2. 下列标识符中,合法的是_______ 。 A) unsigned B) 5ab C) INT# D)_num2 3. 若float x ;x = 10/4 ;x的值是。 A、2.5 B、2.0 C、3 D、 2 4. 表达式!x 等价于。 A、x==0 B、x==1 C、x != 0 D、x != 1 5. 算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为。 A、算术运算、赋值运算、关系运算 B、关系运算、赋值运算、算术运算 C、算术运算、关系运算、赋值运算 D、关系运算、算术运算、赋值运算 6. 能将高级语言编写的源程序转换为目标程序的是。 A、链接程序 B、解释程序 C、编译程序 D、编辑程序 7. 下列语句定义pf为指向float类型变量f的指针,是正确的。 A、float f, *pf = f; B、float f, *pf = &f; C、float *pf = &f, f; D、float f, pf = f; 8. 一个C程序的执行是从。 A、本程序的main函数开始,到main函数结束 B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C、本程序的main函数开始,到本程序文件的最后一个函数结束 D、本程序文件的第一个函数开始,到本程序main函数结束 9. 能正确表示“当x的取值在[1,10]或[[200,210]范围内为真,否则为假”的表达式是________。 A、(x>=1)&&(x<=10)&&(x>=200)&&(x<=210) B、(x>=1)||(x<=10)||(x>=200)||(x<=210) C、(x>=1)&&(x<=10)||(x>=200)&&(x<=210) D、(x>=1)||(x<=10)&&(x>=200)||(x<=210) 10. 对两个数组a和b进行如下初始化 char a[]=“ABCDEF”;char b[]={ …A?,?B?,?C?,?D?,?E?,?F?}; 则以下叙述正确的是。 A、a和b数组完全相同 B、a和b长度相同 C、a和b中都存放字符串 D、a数组比b数组长度长 11. 是不正确的字符常量。 A、'\n' B、'1' C、"a" D、'\101' 12. 若变量已正确定义,语句“if(a>b) k=0; else k=1;”和等价。 A、k=(a>b)?1:0; B、k=a>b; C、k=a<=b; D、a<=b ? 0 : 1; 13. 设变量定义为“int x, *p=&x;”,则&*p相当于。 A、p B、*p C、x D、*&x 14. 有两个字符数组a、b,则以下正确的输入语句是。 A)gets(a,b); B) scanf(“%s%s”,a,b); C) scanf(“%s%s”,&a,&b); D) gets(“a”),gets(“b”); 15. C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是。 A、地址传递 B、单向值传递

(完整版)C语言试题及答案解析

C语言 一、选择题(第题2分,共20分) 1.一个C程序的执行是从 A 。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 2.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为 C 。 x=(i=4,j=16,k=32) A) 4 B) 16 C) 32 D) 52 3.设C语言中,一个int型数据在内存中占2个字节,则unsigned int 型数据的取值范围为 C 。 A) 0~255 B) 0~32767 C) 0~65535 D) 0~2147483647 4.设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为 D 。 A) float B) char C) int D) double 5. putchar函数可以向终端输出一个 D 。 A) 整型变量表达式 B) 实型变量值 C) 字符串 D) 字符或字符型变量值 6. printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式 B ;如果字符串长度小于5,则输出按方式 C 。 A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字符串,左补空格 D) 输出错误信息 7.判断char型变量ch是否为大写字母的正确表达式是 C 。 A) ‘A’<=ch<=‘Z’ B) (ch>=‘A’)&(ch<=‘Z’) C) (ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch) 8.已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 B 。 if(x>y) z=x; x=y; y=z; A) x=10, y=20, z=30 B) x=20, y=30, z=30 C) x=20, y=30, z=10 D) x=20, y=30, z=20 9.以下程序段______C__. x=-1; do{ x=x*x; } while(!x); A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误 10.以下正确的描述是___B____. A)continue语句的作用是结束整个循环的执行

面向对象程序设计大作业(C++)

面向对象分析/设计课程大作业 银行业务处理系统 13级软件学院测试班 1367004029 曾丹 1.需求分析 随着社会经济的发展,信息化程度的不断深入,银行的传统业务己愈来愈不能满足银行客户的需要。 现今,人们的金融意识、科技意识己经有了很大的提高,在紧张忙碌的生活中,己越来越来不习惯每月奔忙于各银行营业柜台之问去排队缴各种各样的费用了;同时,各种经营单位如电信、移动、供电、煤气、自来水、证券等等一是为了提高服务质量、方便客户,二是为了减轻自己日趋繁重的工作量,纷纷委托银行为其开展代收代付业务:同时,随着我国加入世贸组织的日益临近,我国的银行业将面临更加激烈的同业竞争,如何提供更多的金融产品和更优质的服务,如

何吸引更多的客户,如何利用计算机技术加强银行帐户信息管理、进行银行业务再造,提高银行的工作效率和业务竟争能力是摆在各家银行面前的一个迫切需要解诀的问题。 近几年来,各商业银行加快了与社会各业的合作,利用自身的网点优势和业务特点,为其提供各种高效、快捷的代收代付业务,也就是中间代理业务,目前以与广大人民群众生活密切相关的各项缴费业务如水电费、电话费、手机费等代收业务为主,这些业务开展方式多种多样,但一般都离不开计算机的高效管理支持。 随着代理业务不断发展,业务品种越来越多,各项业务做法互有差异,这就对银行的电子化水平和相应的管理水平提出了更高的要求。如何利用电子化的手段构建一个高效统一的、通用灵活的系统来管理各种各样的业务,是每个商业银行所要研究的课题。支持决策系统的,需要在数据库的基础上,进行联机分析处理,每次处理的数据量大,响应时间长。 特别是银行每天要处理大量的存取款事件,做好存取款是银行工作重要的环节,然而要有效处理必须要有良好的程序和数据管理系统来建立一个良好的软件系统来实现快速、有效、准确、安全的处理银行事物。 主要用于银行的储蓄卡管理系统,它可以帮助我们有效、准确、并且高效实现的完成存取事件。此系统操作方便效率、安全性高,只要客户开户并设定好密码就可以轻松的实现存取款。 系统实现的主要有储蓄卡开户管理、存取款管理、用户查询历史数据显示、注销等功能。 储蓄卡开户管理模块:卡号、姓名、开户金额、身份证号、地址、电话、密码、确认密码和保存组成。(开户金额必须是数字,密码和确认密码必须一样是六位数字) *注销模块:一旦注销该卡号就不存在且余额提醒你取出。 通过该银行账户管理系统地运行,使办公人员可以轻松快捷的完成对账户管理的任务,提高账目管理效率,使银行的账目管理工作系统化、规范化、自动化。 该银行帐目管理信息系统,优点是设计过程思路清晰、模块划分简洁,设计各阶段分工明确。经过实践证明,该划分是合理的,极大得提高了本系统的实现。

面向对象程序设计完整版

Object- Orien ted Programmi ng C++ 主讲成长生 东华大学计算机科学与技术学院

第一章概述 § 1.1 面向对象程序设计的基本思想 C++是基于C语言发展的,又冲破C语言局限的面向对象的程序设计语言。它与Java 语言都作为当前计算机科学的主流语言, 越来越受到用户的欢迎。 要弄清楚什么是面向对象的程序设计, 首先了解和回顾传统的 ( Pascal(或C))结构化程序设计方法及其设计思想、程序结构及特点。SP(Structure Programming)是60 年代诞生的针对当时爆发的所谓”软件危机” , 为此发展形成了现代软件工程学的基础。 SP的总的设计思想是: . 自顶向下、层次化 . 逐步求精、精细化 程序结构是按功能划分基本模块的树型结构, 使模块间的关系尽可能简单独立。因此SP的程序的基本特点是: . 按层次组织模块(战略上划分战役) . 每一模块只有一个入口, 一个出口 ?代码和数据分离(程序=数据结构+算法) 归纳得到: SP 把数据和过程(代码、函数)分离为相互独立的实体, 用数据代表问题空间中的客体借以表示实际问题中的信 息; 程序代码则用来处理加工这些数据。程序员在编程时 必须时刻考虑所要处理的数据结构和类型。对不同的数据格式即使要作同样

的处理计算, 或者要对相同的数据格式作不同的处理都必须编写不同的程序(如两个整型数和两个浮点数相加)。这样的编程方法,即传统的SP方法设计出来的程序或系统其可重用的成分很少。其次把数据和代码作为不同的分离实体时, 总存在着用错误的数据调用正确的程序模块, 或用正确的数据调用错误的程序模块的危险, 从而使数据与程序始终保持兼容, 已成为程序员 的一个沉重的负担。在开发一个大型软件课题中, 当工程进入到 后期若用户改变了方案要求, 很容易使技术人员的前期工作受到摧毁性的打击,使其前功尽弃。为克服以上的弊端或者该SP方法难以控制处理的矛盾而产生了面向对象程序设计方法, 即Object —Oriented Programming ----------- OOP从二十世纪六十年代提出对象 的雏形, 到七十年代美国国防部的专用语言Ada 语言, 直到当前国际上流行的高品味的Java 和C++(Tc++,Balandc++ 及Vc++), , 应该讲OOP方法与技术吸取了SP的一切优点,同时又正视和顺应现实世界由物质和意识二部分组成。映射到面向对象的解空间就是: 具体事物—对象; 抽象概念—类。 OOP的基本原理是用问题领域的模型来模拟大千世界,从而设计出尽可能直接、自然地表示问题求解方法的软件, 这样的软件由对象组成, 而对象则是完整反映客观世界事物具有不可分割的静态属性(”数据结构” )与动态行为(”方法” )的。而且它们是既有联系又

C语言试题与答案

大学C语言考试题库 第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. A B. B C. D D. E (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 32 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系

面向对象程序设计作业参考答案

习题一 5、分析下面程序运行的结果。 # using namespace std; int main() { cout<<”This”<<”is”; cout<<”a”<<”C++”; cout<<”program.”< using namespace std; int main() { int a,b,c; a = 10; b = 23; c = a + b; cout<<'a + b ="; cout< using namespace std; int main() { int a, b; a = b = 0; int c = a + b; cout<<”a + b =”<

9、输入以下程序,进行编译,观察编译情况,如果有错误,请修改程序,在进行编译,直到没有错误,然后进行连接和运行,分析运行结果。 修改后的程序如下: #include using namespace std; int add(int x,int y); int main() { int a = 0, b = 0; int c = add(a,b); cout<<" a + b ="<

面向对象程序设计基本概念

面向对象程序设计基本概念 面向对象设计是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。 对象:对象是要研究的任何事物。从一本书到一家图书馆,单的整数到整数列庞大的数据库、极其复杂的自动化工厂、航天飞机都可看作对象,它不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。对象由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一独立整体。从程序设计者来看,对象是一个程序模块,从用户来看,对象为他们提供所希望的行为。 类:类是对象的模板。即类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。类是在对象之上的抽象,对象则是类的具体化,是类的实例。类可有其子类,也可有其它类,形成类层次结构。 消息:消息是对象之间进行通信的一种规格说明。一般它由三部分组成:接收消息的对象、消息名及实际变元。 面向对象主要特征: 封装性:封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。 继承性:继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继承其它类的全部描述,同时可修改和扩充。继承具有传递性。继承分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类)。类的对象是各自封闭的,如果没继承性机制,则类对象中数据、方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促进系统的可扩充性。 多态性:对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。例如:Print消息被发送给一图或表时调用的打印方法与将同样的Print消息发送给一正文文件而调用的打印方法会完全不同。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在OOPL中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态性。

c语言试题及答案

《C语言》课程综合复习资料 一、单选题 1. 在C语言中,字符型数据在存中的存储形式是 A)原码 B)补码 C)反码 D)ASCII码 2. 在C语言中,十进制数47可等价地表示为 A) 2f B) 02f C) 57 D) 057 3. 设有定义:int x=12,n=5; 则表达式 x%=(n%2) 的值为 A) 0 B) 1 C) 2 D) 3 4. 设有定义语句:char str[][20]={,"Beijing","中国石油大学"},*p=str; 则printf("%d\n",strlen(p+20)); 输出结果是 A)10 B) 6 C) 0 D) 20 5. 已定义以下函数: fun(int *p) { return *p; } 该函数的返回值是 A)不确定的值 B)形参p所指存储单元中的值 C)形参p中存放的值 D)形参p的地址值 6. C语言中,函数返回值的类型是由 A)return语句中的表达式类型决定 B)调用函数的主调函数类型决定 C)调用函数时的临时类型决定 D)定义函数时所指定的函数类型决定 7. 有以下函数定义: void fun( int n , double x ) { …… } 若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是 A) fun( int y , double m ); B) k=fun( 10 , 12.5 ); C) fun( 10 , 12.5 ); D) void fun( 10 , 12.5 ); 8. 以下选项中不能正确赋值的是 A) char b[]={′H′,′e′,′l′,′l′,′o′,′!′}; B) char b[10];b="Hello!";

面向对象程序设计试卷作业答案

《面向对象程序设计》作业答案 作业一: 编写程序,将从键盘读入的所有大小写字母写入名为a.txt的文件中(遇EOF结束)。(本题总分10分,fopen函数使用妥当4分,读入过程正确4分,关闭文件2分。程序结构完整,有不妥之处,酌情扣分。) #include main ( ) { FILE *fptr; fptr = fopen("a.txt","w"); if (fptr==NULL) return 0; char a; a=getchar( ); while(a!=EOF ) { if(a>=’a’ && a<=’z’|| a>=’A’ && a<=’Z’) fputc(a,fptr); a = getchar(); } fclose(fptr); return 0; } 作业二 定义一个矩形类Rectangle,并在main函数中用它声明一个矩形对象,然后利用接口 设置该矩形对象的长和宽、计算面积并输出。(本题总分10分,类结构2分,设置矩阵对象的长与高各1分,计算面积函数2分,输出函数2分,主函数2分。程序结构完整,有不妥之处,酌情扣分。) #include #include class Rectangle { public: int getArea(); void setWidth(int w); void setLength(int l); private: int Length; int Width;

}; int Rectangle::getArea() { return Length*Width; } void Rectangle::setLength(int l) { Length=l; } void Rectangle::setWidth(int w) { Width=w; } main() { int len,wid; Rectangle r1; cout<<"Input the Rectangle's Information"<>len; cout<<"Width:"<>wid; r1.setLength(len); r1.setWidth(wid); cout<<"Rectangle's Area:"< #include struct Node { int item; struct Node *next; };

相关文档
最新文档