文档库 最新最全的文档下载
当前位置:文档库 › 面向对象程序设计习题

面向对象程序设计习题

面向对象程序设计习题
面向对象程序设计习题

选择题

1. 程序中主函数的名字为()。

A. main

B. MAIN

C. Main

D. 任意标识符

2. 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择()。

A. 内联函数

B.重载函数

C.递归函数

D.函数模板

3. 将两个字符串连接起来组成一个字符串时,选用()函数。

A. strlen()

B. strcap()

C. strcat()

D. strcmp()

4. 对于任一个类,用户所能定义的析构函数的个数至多为( )。

A. 0

B. 1

C. 2

D. 任意个

5. 对类中引用成员的初始化是通过构造函数中给出的( )实现的。

A. 函数体

B. 参数表

C. 初始化表

D. 初始化表或函数体

6. 假定AB为一个类,则执行“AB x(a,5);”语句时将自动调用该类的( )。

A. 带参构造函数

B. 无参构造函数

C. 拷贝构造函数

D. 赋值重载函数

7. 对于任一个类,用户所能定义的析构函数的个数至多为( )。

A. 0

B. 1

C. 2

D. 任意个

8. 用new运算符创建一维整型数组的正确语句是__________。

A. int *p=new a[10];

B.int *p=new float[10];

C. int *p=new int[10];

D.int *p=new int[5]={1,2,3,4,5}

9. 假定有定义“int b[10]; int *pb;”,则不正确的赋值语句为()。

A. pb=b;

B. pb=&b[0];

C. pb=new int;

D. pb=b[5];

10. 程序中主函数的名字为()。

A. main

B. MAIN

C. Main

D. 任意标识符

11. 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择()。

A. 内联函数

B.重载函数

C.递归函数

D.函数模板

12. 将两个字符串连接起来组成一个字符串时,选用()函数。

A. strlen()

B. strcap()

C. strcat()

D. strcmp()

13. 用new运算符创建一维整型数组的正确语句是__________。

A. int *p=new a[10];

B.int *p=new float[10];

C. int *p=new int[10];

D.int *p=new int[5]={1,2,3,4,5}

14. 假定有定义“int b[10]; int *pb;”,则不正确的赋值语句为()。

A. pb=b;

B. pb=&b[0];

C. pb=new int;

D. pb=b[5];

15. 假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则

访问x对象中数据成员a的格式为()。

A. x(a)

B. x[a]

C. x->a

D. x.a

16. 假定AB为一个类,则执行“AB x(a,5);”语句时将自动调用该类的( )。

A. 带参构造函数

B. 无参构造函数

C. 拷贝构造函数

D. 赋值重载函数

17. 对于任一个类,用户所能定义的析构函数的个数至多为( )。

A. 0

B. 1

C. 2

D. 任意个

18. 对类中引用成员的初始化是通过构造函数中给出的( )实现的。

A. 函数体

B. 参数表

C. 初始化表

D. 初始化表或函数体

19. 如果表达式a==b中的“==”是作为普通函数重载的运算符,若采用运

算符函数调用格式,则可表示为()。

A. a.operator==(b)

B. b.operator==(a)

C. operator==(a,b)

D. operator==(b,a)

填空题

1.若只需要通过一个成员函数读取其数据成员的值,而不需要修改它们,则应

在函数头的后面加上________关键字;若只需要读取引用参数的值,不需要对其修改,则应在该参数说明的开始使用__________关键字。

2.假定一个类对象数组为A[N],当定义该数组时,将自动调用该类的无参构造函数的次数为________次,当离开它的作用域时,将自动调用该类析构函数的次数为________次。

3.假定AB为一个类,则类定义体中的“AB(AB& x);”语句为该类______________的原型语句,而“operator=(AB& x);”为该类______________的原型语句。

4. 在定义一个派生类时,使用__________关键字表示为私有继承,使用

__________关键字表示为公有继承。

5. 元素类型为double的二维数组a[4][6]共有________个元素,共占用

________字节的存储空间。

6. 假定对二维数组a[3][4]进行初始化的数据为{{3,5,6},{2,8},{7}},则

a[1][1]和a[2][3]分别被初始化为_______和________。

7. 假定p为指向二维数组int d[4][6]的指针,则p的类型为________,其中

一个元素d[i][j]表示成指针访问方式为____________。

8.假定一个类对象数组为A[N],当定义该数组时,将自动调用该类的无参构造函数的次数为________次,当离开它的作用域时,将自动调用该类析构函

数的次数为________次。

9. 已知一维数组类ARRAY的定义如下,ARRAY与普通一维数组区别是:其重载

的运算符[ ]要对下标是否越界进行检查。

class ARRAY{

int *v; //指向存放数组数据的空间

int s; //数组大小

public:

ARRAY(int a[], int n);

~ARRAY(){delete []v;}

int size(){ return s;}

int& operator[](int n);

};

___(1)___ operator[](int n) //[ ]的运算符成员函数定义

{

if(n<0 || ___(2)___) {cerr<<"下标越界!"; exit(1);}

return ___(3)___;

}

(1) (2) (3)

10. 常数-4.205和6.7E-9分别具有__________和__________位有效数字。

11. 元素类型为double的二维数组a[4][6]共有________个元素,共占用

________字节的存储空间。

12. 假定对二维数组a[3][4]进行初始化的数据为{{3,5,6},{2,8},{7}},则

a[1][1]和a[2][3]分别被初始化为_______和________。

13. 假定p为指向二维数组int d[4][6]的指针,则p的类型为________,其

中一个元素d[i][j]表示成指针访问方式为____________。

14. 已知变量a定义为“int a=5;”,要使ra成为a的引用,则ra应定义为

____________,要使rb指向a,则rb应定义为____________。

15. 若只需要通过一个成员函数读取其数据成员的值,而不需要修改它们,则

应在函数头的后面加上________关键字;若只需要读取引用参数的值,不需要对其修改,则应在该参数说明的开始使用__________关键字。

16.假定一个类对象数组为A[N],当定义该数组时,将自动调用该类的无参构造函数的次数为________次,当离开它的作用域时,将自动调用该类析构函数的次数为________次。

17.假定AB为一个类,则类定义体中的“AB(AB& x);”语句为该类______________的原型语句,而“operator=(AB& x);”为该类

______________的原型语句。

18. 在定义一个派生类时,使用__________关键字表示为私有继承,使用

__________关键字表示为公有继承。

19. 重载一个运算符时,该运算符的__________、__________以及操作符的个

数不允许改变。

程序题

1.实现一个类A,在A中有两个私有的整型变量a和b,定义构造函数对a和b 进行初始化,并实现成员函数geta()取得a的值和getb()取b的值。实现类B从A继承,覆盖geta(),使其返回a的2倍。

答案:

#include

using namespace std;

class A

{

int a;

int b;

public:

A(int m,int n):a(m),b(n) {}

int geta() {return a; }

int getb() {return b; }

};

class B :public A

{

public:

B(int m,int n):A(m,n) {}

int geta() {return A::geta()*2; }

};

void main()

{

B b(2,2);

b.geta();

cout<

}

2.写一个函数,找出给定字符串中小写字母字符的个数。函数的原型为:int CalcAlpha(char*str);

函数参数: str为所要处理的字符串;

函数返回值:所给字符串中小写字母字符的个数

答案:

int CalcAlpha(char*str)

{

if(str == NULL) return 0;

int number=0;

for(int i=0;*(str+i)!=’\0′;i++)

{

if(*(str+i)>=’a'&&*(str+i)<=’z')

{

number++;

};

}

return number;

}

3.定义一个图形Shape类并用继承方法定义圆形Circle类.

答案:

class shape

{

public:

shape(){};

};

class circle:public shape

{

public:

circle();

};

4.用函数重载的方法定义两个重名函数,分别找出两实型数中的最小值和三个实型数的最小值.

答案:

float min(float x1,float x2)

{

return x1>x2?x2:x1;

}

float min(float x1,float x2,float x3)

{

return min(min(x1,x2),x3);

}

5..实现一个Point类(数据成员为一个点在两维直角坐标系内的坐标);派生一个圆Circle类;要求圆能计算周长,能够画出一个圆。

6.定义一个复数类Complex,要求复数类重载“*”;能够将复数对象转换为一个整数。

#include

using namespace std;

class complex

{

public:

complex(int r=0,int i=0,int me=0){real=r;imag=i;m=me;}

complex operator * (complex c2);

void display();

void display1();

private:

int real;

int imag;

int m;

};

complex complex::operator *(complex c2)

{

complex c;

c.real=c2.real*real;

c.imag=c2.imag*imag;

c.m=c.real-c.imag;

return complex(c.real,c.imag,c.m);

}

void complex::display()

{ cout<<”(“<

{ cout<

void main()

{ complex c1(5,4),c2(2,10),c3;

cout<<”c1=”; c1.display();

cout<<”c2=”; c2.display();

c3=c1*c2;

cout<<”c3=c1*c2=”;

c3.display1();

}

7.假设已定义了一个栈类Stack,编写入栈和出栈的成员函数代码。

#define STACKSIZE20

class Stack{

long buffer[STACKSIZE];

long*SP;

public;

Stack(){sp=buffer+STACKSIZE;}//sp指向栈底

~Stack(){}

void push(long);//入栈操作

long pop();//出栈操作

};

4.下面的文件queue.h是一个队列类模板Queue的完整实现。在这个文件中首先定义了一个队列元素类模板QueueItem,然后在这个类的基础上定义了队列类模板Queue。在Queue中使用链表存放队列的各个元素,front指针指向链表的第一个节点元素,back指针指向链表的最后一个节点元素,成员函数add()将一个新节点元素加入到队列结尾,remove()从队列开头删除一个节点元素。为方便起见,程序中加上了行号。阅读程序,根据程序后面的问题作出相应解答。

/*———————————————————/

/********************* 文件queue.h ***********************/

/*————————————————————/

template

class Queue;

/***************** 定义模板类QueueItem ************/ template

class QueueItem

{

public:

QueueItem(const Type & elem):item(elem) {} QueueItem() {}

private:

Type item;

QueueItem * nextItem;

friend class Queue;

};

/***************** 定义模板类Queue ************/ template

class Queue {

public:

Queue():front( NULL), ____(A)_____ {}

~Queue();

Type remove();

void add(const Type &);

bool is_empty() const { return ____(B)______ ; } private:

QueueItem *front;

QueueItem *back;

//模板类Queue的函数成员remove()的实现

//从队列头取出一个节点,并返回该节点的值template

Type Queue::remove()

{

QueueItem *pFront; //指向头节点的临时指针Type retVal; //返回值

______(C)_________;

retVal = front->item;

front = front->nextItem;

delete pFront;

return retVal;

}

//模板类Queue的函数成员add()的实现template

void Queue::add(const Type & newItem) {

QueueItem *pNew = new QueueItem; pNew->item = newItem;

______(D)____________;

if (front == NULL)

front = back = pNew;

else

back->nextItem = pNew;

_____(E)__________;

}

}

template

Queue::~Queue()

{

QueueItem *p = front, *q;

while(p != NULL)

{

q = p->nextItem;

delete p;

p = q;

}

}

问题1:程序中有几处填空,将它们完成。(A)back(NULL)

(B)front == NULL 或 back == NULL (C)pFront = front

(D)pNew->nextItem = NULL

(E)back = pNew

问题2:()题中程序第1,2行为什么要说明一下类模板Queue?如果没有这两行语句,程序还正确吗?

答:不正确。因为在类QueueItem模板类的定义中用到了模板类Queue,而此时Queue还没有定义,所以要先声明一下,告诉编译程序Queue是一个模板类,它将在程序的其他地方定义。如果没有这个说明,编译程序就不知道标识符Queue 代表什么样的含义了。

问题3:程序第22,23行各有一个const,它们各自表示什么含义:

答:第22行的const修饰的是函数的参数,表示在这个函数体中不能改它所修饰的参数所对应的实际参数的值。

第23行的const修饰的是模板类Queue的成员函数is_empty(),它表示在函数is_empty()的函数体中不能改变任何数据成员的值。

问题4:程序中模板类Queue的析构函数主要做了什么事情?为什么要这么做?

答:析构函数中主要是释放链表中存放的各个节点的空间。因为Queue对象在其生存期间可能加入了很多节点,从堆中申请了一些内存空间,这些空间应该随着对象的消亡而释放掉,所以需要在析构函数中来释放这些空间。

问题5:下面的程序使用了queue.h文件中定义的类模板,说明程序中哪些定义队列对象的语句是不正确的,哪些是正确的。

#include “queue.h”

void main()

{

Queue q1; // 1

Queue q2; // 2

Queue q3(100); // 3

Queue q4[100]; // 4

Queue *q5 = new Queue; // 5

//….

delete q5;

}

1 2 3 4 5

错对错对对

6.下面的程序定义了三个类,Base是图形对象基类,Point表示屏幕上的一个点,ColorPoint表示带颜色的点,基类中利用posx和posy记录图形对象的位置。先阅读三个类的定义,然后回答后面的问题(假定程序中调用的SetPixel()和SetColor()是系统函数库中预定义的函数,可以直接使用)。

/*****************************************************************/

class Base{

public:

Base():posz(0),posy(0){};

Base(int px,int py);posz(px),posy(py){};

virtual void draw()=0;

protected:

int posx,posy;//图形对象的位置

};

class Point:public Base{

public:

Point(int px,int py):Base(px,py){}

void draw(){SetPixel(posx,posy);}

class Colorpoint:public Point{

public;

ColorPoint(int px,int py):Point(px,py){color=0;}

ColorPoint(int px,int py,int c):Point(px,py),color(c){}

void draw()

{

SetColor(color);

Point::draw();

}

protected:

int color;

};

/******************************************************************** ******/

问题1下面的主程序使用了上面定义的三个类,程序中定义对象语句哪些是正确的,哪些是错误的?

void main()

{

Base b;//1

Point p1;//2

Point p2(3,4);//3

ColorPoint cp1;//4

ColorPoint cp2(5,6);//5

ColorPoint cp3(7,8,1);//6

问题2:将类ColorPoint的两个构造函数合并为一个构造函数,写出该函数的实现(提示:使用函数的默认参数)。

答:合并后的构造函数定义为:

ColorPoint( int px , int py , int c=0 ):Point( px , py ) , color( c ){ }

问题3:下面的程序段

Base*p;

p=new ColorPoint(5,6);

p—>draw()

运行后将调用:

(A)Base::draw()

(B)Point::draw()

(C)ColorPoint::draw()

(D)::draw()

答:运行后将调用 (C),即ColorPoint::draw( )

一、程序题:

1.实现一个类A,在A中有两个私有的整型变量a和b,定义构造函数对a和b 进行初始化,并实现成员函数geta()取得a的值和getb()取b的值。实现类B从A继承,覆盖geta(),使其返回a的2倍。

答案:

#include

using namespace std;

class A

{

int a;

int b;

public:

A(int m,int n):a(m),b(n) {}

int geta() {return a; }

int getb() {return b; }

};

class B :public A

{

public:

B(int m,int n):A(m,n) {}

int geta() {return A::geta()*2; }

};

void main()

{

B b(2,2);

b.geta();

cout<

}

2.写一个函数,找出给定字符串中小写字母字符的个数。函数的原型为:int CalcAlpha(char*str);

函数参数: str为所要处理的字符串;

函数返回值:所给字符串中小写字母字符的个数

答案:

int CalcAlpha(char*str)

{

if(str == NULL) return 0;

int number=0;

for(int i=0;*(str+i)!=’\0′;i++)

{

if(*(str+i)>=’a'&&*(str+i)<=’z')

{

number++;

};

}

return number;

}

3.用函数重载的方法定义两个重名函数,分别找出两实型数中的最小值和三个实型数的最小值.

答案:

float min(float x1,float x2)

{

return x1>x2?x2:x1;

}

float min(float x1,float x2,float x3)

{

return min(min(x1,x2),x3);

}

理解问答题,写出前三小题的程序运行结果和指出后两小题的程序(或函数)所能实现的功能。

1. #include

const int B=2;

void main()

{

int p=1,s=1;

while(s<50) {

p*=B;

s+=p;

}

cout<<"s="<

}

2. #include

class CE {

private:

int a,b;

int getmin() {return (a

public:

int c;

void SetValue(int x1,int x2, int x3) { a=x1; b=x2; c=x3;

}

int GetMin();

};

int CE::GetMin() {

int d=getmin();

return (d

}

void main()

{

int x=5,y=12,z=8;

CE *ep;

ep=new CE;

ep->SetValue(x+y,y-z,10);

cout<GetMin()<

CE a=*ep;

cout<

}

运行结果:

3. #include

class A {

int a[10]; int n;

public:

A(int aa[], int nn): n(nn) {

for(int i=0; i

int Get(int i) {return a[i];}

int SumA(int nn) {

int s=0;

for(int j=0; j

return s;

}

};

void main() {

int a[]={2,5,8,10,15,20};

A x(a,4);

A y(a,6);

int d=1;

for(int i=0; i<4; i++) d*=x.Get(i);

int f=y.SumA(5);

cout<<"d="<

cout<<"f="<

}

运行结果:

4. #include

#include

#include

const int N=10;

int ff(int x, int y) {

int z;

cout<

cin>>z;

if(x+y==z) return 1; else return 0;

}

void main()

{

int a,b,c=0;

srand(time(0)); //初始化随机数序列

for(int i=0;i

a=rand()%20+1; //rand()函数产生0-32767之间的一个随机数

b=rand()%20+1;

c+=ff(a,b);

}

cout<<"得分:"<

}

程序功能:

5. char *f(char *s){

int n=strlen(s);

char* r=new char[n+1];

for(int i=0; i

if(s[i]>='a' && s[i]<='z') r[i]=s[i]-'a'+'A';

else r[i]=s[i];

r[n]=’\0’;

return r;

}

程序功能:

编程题

1. 编写一个函数,分别求出由指针a所指向的字符串中包含的每种十进制数字出现的次数,把统计结果保存在数组b的相应元素中,该函数的原型如下。

void fun(char* a, int b[]);

2. 根据下面类中CompareBig 函数成员的原型和注释写出它的类外定义。 class AA {

int* a;

int n;

int MS;

public:

void InitAA(int aa[], int nn, int ms) {

if(nn>ms) {cout<<"Error!"<

MS=ms;

n=nn;

a=new int[MS];

for(int i=0; i

}

int CompareBig(AA& b); //比较*this与b的大小,从前向后按两数组

//中的对应元素比较,若*this中元素值大则返回1,若b中

//元素值大则返回-1,若相等则继续比较下一个元素,直到

//一个数组中无元素比较,此时若两者的n值相同则返回0,

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)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!

什么是面向对象程序设计

1 什么是面向对象程序设计,它与传统的结构式程序有什么不同。 面向对象程序设计是一种适用于设计、开发各类软件的范型。它是将软件看成是一个由对象组成的社会:这些对象具有足够的智能,能理解从其他对象接受的信息,并以适当的行为作出响应;允许低层对象从高层对象继承属性和行为。通过这样的设计思想和方法,将所模拟的现实世界中的事物直接映射到软件系统的解空间。 与传统的结构式程序设计相比,面向对象程序设计吸取了结构式程序设计的一切优点(自顶向下、逐步求精的设计原则)。而二者之间的最大差别表现在: ·面向对象程序采用数据抽象和信息隐藏技术使组成类的数据和操作是不可分割的,避免了结构式程序由于数据和过程分离引起的弊病。 · 面向对象程序是由类定义、对象(类实例)和对象之间的动态联系组成的。而结构式程序是由结构化的数据、过程的定义以及调用过程处理相应的数据组成的 2 用面向对象方法建立模型的思维过程是怎样的。 用面向对象方法建立拟建系统的模型的过程就是从被模拟现实世界的感性具体中抽象要解决的问题概念的过程。这种抽象过程分为知性思维和具体思维两个阶段,其中:·知性思维是从感性材料中分解对象,抽象出一般规定,形成了对对象的普遍认识。·具体思维是从知性思维得到出的一般规定中揭示的事物的深刻本质和规律,其目的是把握具体对象的多样性的统一和不同规定的综合。 3 解释以下概念: ①对象:在现实世界中,对象就是可以感觉到的实体。每个对象具有一个特定的名字以 区别于其他对象;具有一组状态用来描述它的某些特性;具有一组操作,每一个操作决定对象的一种功能或行为(为自身服务的操作和为其他对象提供服务的操作)。而在面向对象系统中,对象是可以标识的存储区域。每个对象的状态被保存在此区域中,而实现一类对象行为的操作(代码)被保存在另外相关的存储器区域中。 ②消息:消息是要求某个对象执行其某种功能操作(方法)的规格说明。因此,消息是 由消息的接收者、消息要求提供的操作(消息名)和必要的参数组成的。 ③类:在现实世界中,类是对一组具有共同特性(属性和行为)的客观对象的抽象。而 在面向对象系统中,类是由程序员自定义的具有特定结构和功能的类型,是一种代码共享的手段。 ④实例:任何一个对象都是该对象所属类的一个具体实例。 ⑤公有消息:是由对象外向对象发送的消息,用于激活该对象的某种方法。 ⑥私有消息:是由对象向自身发送的消息,用于内部操作;该类消息不能从对象外向该 对象发送。 ⑦消息序列:在面向对象系统中一个事件的发生总会有多个对象的多次相互作用才能完 成,使得这些对象能够相互作用的消息组成的序列被称为消息序列。 4 类与实例的关系如何? 类是创建对象的模板,而对象是实现类的实例。属于同一类的不同实例必须具有: ·相同的操作集合; ·相同的静态属性集合; ·不同的对象名和属性动态值。

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

面向对象程序设计实验指导书 实验一、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(){

《面向对象程序设计》答案

实验一熟悉VC++IDE开发环境 一、实验目的 1、熟悉VC++6.0集成开发环境,熟练掌握VC++6.0项目工作区、各种编辑器、菜单栏和工具栏的使用。 2、掌握如何编辑、编译、连接和运行一个C++程序。 3、通过运行简单的C++程序,初步了解C++源程序的结构和特点。 二、实验要求 1、分析下列程序运行的结果。 程序一: #include int add(int x,int y=8); void main() { int x=4; cout< void main() { int *p,i; i=5; p=&i; i=*p+10; cout<<"i="< void main(void) { int i=10; int &r=i; r++; cout<<"i="< void func(); int n=1; void main() { static int a; int b= -9; cout <<"a:"<

《面向对象程序设计》实验指导书

《面向对象程序设计》课程实验指导书

实验一 Java开发环境的安装与配置 一、实验目的: 1. 掌握JDK、Eclipse的安装步骤。 2. 理解环境变量PATH, CLASSPATH的作用,以及Eclipse的配置。 3. 熟悉Eclipse的编辑、编译与调试环境,编写简单的Application程序 编译执行并完成调试。 二、实验内容: 熟悉JDK的安装和配置,学习如何编写并运行简单的Application程序 (能输出一条简单的问候信息); 三、实验要求: 1. 能正确地安装JDK 2. 熟悉环境变量PATH, CLASSPATH设置方法,熟悉编辑环境 3. 调试程序、编译,运行后得到正确的结果 四、实验步骤: 1.从https://www.wendangku.net/doc/5310697826.html,/technetwork/java/index.html上下载最新版本的JDK,并安装。 2.设置环境变量PATH, CLASSPATH, 使得Java程序能正确编译和执行。 3.在Eclipse环境下编写一个HelloWorld.java程序, (1)在主方法static public void main(String[ ] args)中调用System. out.println()方法,使程序输出一条问候信息; (2) 编译运行程序,观察运行情况和输出结果。(使用JDK环境,调用 javac.exe和java.exe编译和执行程序)

实验二 Java语言基础 一、实验目的: 熟悉Java基本语法,基本数据类型,各种运算符及表达式的使用,掌握运算符优先级,熟悉使用Java的选择语句,循环语句。 二、实验内容: 1.编写Java Application程序,输出1900年到2000年之间的所有润年。 (闰年的判断条件:能被4整除且不能被100整除,或能被400整除); 2.金字塔:Pyramid.java 在屏幕上显示一个由星型符号“*”组成的金字塔图案,示例如下: * *** ***** ******* 要求:金字塔高度h,可以由用户设置。 三、实验要求: 1. 正确使用Java语言的选择语句,循环语句; 2. 调试程序、编译,运行后得到正确的结果 3.写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提成 示,并给出解决办法。 四、实验步骤: 1.编写主类; 2.在static public void main(String[ ] args)方法中加入实现要求功能 的代码,主要步骤如下: (第一题)从1900到2000循环,按照闰年的判断条件是则输出1900年到2000年之间的所有润年。 (第二题)允许用户设置金字塔高度。 4. 编译运行程序,观察输出结果是否正确。

《面向对象程序设计》教学大纲资料

面向对象程序设计教学大纲西北民族大学数学与计算机科学学院 制定的时间:二〇一二年五月

面向对象程序设计教学大纲 一、课程基本资料 主讲教师:曹永春、蔡正琦、顿毅杰 主教材:《C++面向对象程序设计》中国铁道出版社,陈维兴、林小茶编著,第2版,2009 辅助教材: 1.《C++编程思想》机械工业出版社,美Bruce Eckel,Chuck Alliso著,刘宗田,袁兆山,潘秋菱等译; 第1版,2011年 2. 《C++程序设计教程》机械工业出版社,美H.M.Deitel P.J.deitel 薛万鹏等译,2000年 3.《C++程序设计语言》,机械工业出版社,美Bjarne Stroustrup 著,裘宗燕译,2005年 4.《C++面向对象程序设计习题解析与上机指导》清华大学出版社,陈维兴主编,第2版,2009年 实验教材及参考书: 同上 课程性质:学科选修课 学分:4分 课时:72学时,其中理论课54学时,上机实验18学时 先修课程:计算机导论、C语言程序设计 课程结构:多媒体教学,课堂讨论、课内实验、课后作业 评价方案:(考核依据、评分的办法、权重的分布) ?平时成绩:10% 课堂表现(课堂提问、考勤、作业等) ?实验成绩:20%(实验报告、实验考试)

?期中成绩:20%(闭卷考试) .期末成绩:50%(闭卷考试) 参考书目: 名称编著者出版社出版年月《C++编程思想》刘宗田,袁兆山,潘 机械工业出版社2011年 秋菱等译 机械工业出版社2000年 《C++程序设计教程》H.M.Deitel, P.J.deitel 著,薛万鹏等译 《C++程序设计语言》Bjarne Stroustrup 机械工业出版社2005年 著,裘宗燕译 陈维兴主编清华大学出版社2009年 《C++面向对象程序设计 习题解析与上机指导》 推荐刊物: 1、《计算机学报》 2.《软件学报》 3.《程序员杂志》 4.《码农周刊》 5.《快乐码农》 相关网站: 1. 中国计算机学会https://www.wendangku.net/doc/5310697826.html,/sites/ccf/ 2. 计算机爱好者协会https://www.wendangku.net/doc/5310697826.html,/forum.php 3.C语言中文网https://www.wendangku.net/doc/5310697826.html,/cpp 5.中国悠悠期刊网https://www.wendangku.net/doc/5310697826.html,/ 6. 中国知网https://www.wendangku.net/doc/5310697826.html,/ 文献 1.谭浩强.C程序设计.第4版.北京:清华大学出版社,2010

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

学号:姓名: 第三章面向对象程序设计作业 一、判断题 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++面向对象程序设计实验报告

C++面向对象程序设计实验报告 学院:信息科学与技术学院 班级:卓越电子1201 姓名:刘强 学号:120910115 实验二 C++面向过程程序设计 实验目的 掌握函数声明、定义和使用的方法 掌握函数递归调用的方法 实验内容 1、编写一个函数,求数列运算中从n个不同的数中取r个数的所有选择的个数,要求如下:主程序中设计一个循环,不断从输入接收n和r的值,计算结果并输出,当用户输入0 0时,程序结束; 能检查输入数据的合法性,要求n>=1并且n>=r; 能得到正确结果。 输入:5 3输出:10 输入:10 20;输出:Input Invalid !; 输入:-1 4;输出:Input Invalid!; 步骤: 利用一个函数fn(int n)计算n!, 利用另一个函数Cnr(int n, int r)计算Cnr,在该函数中调用fn(), 程序代码: #include int fn(int n) { int s=1; for(int i=1;i<=n;i++) { s=s*i; } cout<<"n!="<

int Cnr(int n,int r) { cout<<"Please input two numbers:"<>n>>r; if(n==0&&r==0) { cout<<"Programme shutdown."<=1&&n>=r) { int a; int b; int c; int d; a=fn(n); b=fn(r); c=fn(n-r); d=a/(b*c); cout<

《C++面向对象程序设计》教案

第3章类和对象3.2 构造函数与析构函数 例:点类 Point class Point { private: int x,y; public: Point() {}; Point(int xx, int yy) { x=xx; y=yy; } Point(Point &p) { x=p.x; y=p.y; } int GetX() const { return x; } int GetY() const { return y; } void SetXY(int xx, int yy) { x=xx; y=yy; } void Show(); }; void Point::Show() { cout<<"X: "<

void SetSex(int s){ sex = s; } char *GetName() const { return name; } int GetAge() const { return age; } char GetSex() const { return sex; } void Show(); }; #include "person.h" #include using namespace std; Person::Person(char *n, int a, char s) { name = new char[strlen(n)+1]; strcpy(name,n); age = a; sex = s; } Person::Person(Person &p) { name = new char[strlen(https://www.wendangku.net/doc/5310697826.html,)+1]; strcpy(name,https://www.wendangku.net/doc/5310697826.html,); age = p.age; sex = p.sex; } void Person::SetName(char *n) { delete[] name; name = new char[strlen(n)+1]; strcpy(name,n); } void Person::Show() { cout<<"Name: "<

面向对象程序设计课后答案(完整版)

第二章2-4 #include using namespace std; Add(int a,int b); int main() { int x,y,sum; cout<<"please input x and y:"; cin>>x>>y; sum = add(x,y); cout < using namespace std; int main() {

int *p,*init; int countp=0; int countn=0; p = new int[20]; init = p; for(int i=0;i<20;i++) { cin>>*p; p++; } p = p-20; for( i=0;i<20;i++) { if(*p>0) countp++; if(*p<0) countn++; cout<<*p<<" "; p++; } cout<<"正数有:"< //#include using namespace std; void checkagescore(string name,int age) { if (name == "exit") throw name; if(age<0||age>50) throw age;

面向对象程序设计实验报告完整版

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 综合实验报告 面向对象程序设计 专业名称: 物联网工程 ___班级: _____ 级2班__ ___________姓名: 你哥哥 学号: 02051928 信息科学与工程学院 二零一三年七月

第一题: (1) 1.1题目概述 (1) 1.2设计思路 (2) 1.3设计说明与调试分析 (2) 1.4编码实现 (2) 1.5程序运行结果 (5) 1.6设计心得 (5) 第二题: (6) 2.1题目概述 (6) 2.2设计思路 (7) 2.3设计说明与调试分析 (7) 2.4编码实现 (7) 2.5程序运行结果 (11) 2.6设计心得 (11)

第一题: 1.1题目概述 用抽象类设计计算二维平面图形图形面积的程序, 在基类TDshape中设计纯虚函数area()和printName(), area()用于计算几何图形的面积, printName()用于打印输出几何图形的类名, 如Triangle类的对象就打印输出”Triangle”。每个具体形状的类则从抽象类TDshape派生, 各自需要定义其它独有的数据成员和成员函数, 而且定义area()和printName()的具体实现代码, 如图所示。 要求编写以TDshape为接口的函数, 借以访问具体类如

Triangle和Rectangle类的成员函数area(), printName ()。1.2设计思路 由简到繁, 逐步实现。 1.3设计说明与调试分析 编写基类TDshape->编写虚函数->编写继承类Triangle ->实例化TDshape和Triangle ->调用基类虚函数实现调用继承类相应函数->同样的方式处理继承类Rectangle. 1.4编码实现 #include using namespace std; class TDshape{ public: virtual void area()=0; virtual void printName()=0; }; class Triangle:public TDshape{ private: double width,height;

面向对象程序设计C#课程教案

《程序设计与算法(C#)二》课程教案 一、课程说明 1、课程代码: 040483 2、总学时数: 64 ,其中理论环节学时数: 32 ,实验实践环节学时数: 36 3、学分: 6分 4、适用专业:计算机应用技术 5、本课程的性质、地位和作用 本课程是计算机应用技术的一门重要的编程类专业课。C#语言是针对网络技术应 用而开发的语言,课程的主要教学内容以应用为主,以语法介绍为辅,主要包括C# 语言基本语法、面向对象编程方法,C#开发Windows应用程序,C#开发Web应用程序等。本课程的先修课是计算机应用基础或C语言,后续课程是基于C#的Web应用程 序设计。本课程是软件工程、信息系统开发、开发工具等课程的前驱课程。 《程序设计与算法(C#)》采用CAI课件,在多媒体教室讲授。使用多媒体技术 可以提高授课效率,可以现场运行、修改例子程序,实现直观教学,提高授课效果。 本课程以从实际应用出发,集应用与原理于一体,两部分内容互相联系,又各 有侧重,力求做到理论联系实际,用理论来指导实际应用。 二、教学基本要求 1、本课程的目的、任务 课程的教学目的是培养学生使用NET平台开发桌面及网络应用程序的能力。教学 任务是让学生掌握C#语言的基本知识与技术,理解并树立面向对象的程序设计思想,培养运用Visual C#https://www.wendangku.net/doc/5310697826.html,开发工具进行编程的能力。 2、本课程的教学要求 课程的要求是培养学生面向对象编程的思想和能力及素质,为以后学习其它面向 对象的编程语言打下坚实的基础。本课程是一个实践性非常强的课程,要求学生要注 重实践,在掌握C#语言的基本语法后,重点应放在提高编程能力的训练上。

面向对象程序设计大作业(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的基本原理是用问题领域的模型来模拟大千世界,从而设计出尽可能直接、自然地表示问题求解方法的软件, 这样的软件由对象组成, 而对象则是完整反映客观世界事物具有不可分割的静态属性(”数据结构” )与动态行为(”方法” )的。而且它们是既有联系又

面向对象程序设计笔记

undeclared identifier “未声明的标识符” (1) 十进制整数:在一个整型常量后面加一个字母 l 或 L,则认为是 long int 型常量? (2) 八进制整数?在常数的开头加一个数字 0,就表示这是以八进制数形 式表示的常数? (3)十六进制整数?在常数的开头加一个数字0和一个英文字母X(或x), 就表示这是以十六进制数形式表示的常数? 2. 浮点数的表示方法 如果在实数的数字之后加字母 F 或f,表示此数为单精度浮点数,如1234F,-43f,占 4 个字节?如果加字母 L 或 l,表示此数为长双精度数(long double), 在Visual C++ 6.0 中占 8 个字节. (2) 指数形式(即浮点形式):用字母 e 表示其后的数是以 10 为底的幂,如 e12 表示 1012? 1.普通的字符常量:用单撇号括起来的一个字符就是字符型常量如′a′,′ #′,′%′,′D′都是合法的字符常量,在内存中占一个字节?“cout<<′\n′; ”将输出一个换行,其作用与“cout<

面向对象程序设计教案

第2章 C++ 编程基础 程序设计工作主要包括数据结构(即数据类型)和算法(操作步骤)的设计。程序中最基本的元素是数据类型,确定了数据类型,才能确定变量空间的大小和其上的操作;算法是由一系列控制结构组成。 每种语言都是用一组字符来构造有意义的语句,C++语言的字符集由下述字符构成: ? 英文字母:A ~Z ,a ~z ? 数字字符:0~9 ? 特殊字符: 空格 ! # % ^ & * _(下划线) + = : - ~ < > / \ ‘ “ ; . () {} [] 2.1 数据类型与表达式 一个程序要运行,就要先描述算法。描述一个算法应先说明算法要用的数据,数据以变量或常量的形式来描述,每个变量或常量都有数据类型。C++中的数据类型分为基本类型和非基本类型,见图2-1。基本类型是C++编译系统内置的,非基本类型也称是用户定义数据类型,即用户自己定义的数据类型, 字符型 整型 整数integer 短整形 长整形 基本类型 逻辑型 bool 单精度型float 实数 floating 双精度型 double 数据类型 长双精度型 long double 枚举型enum 数组型 非空数据类型 [ ] 指针型 非空数据类型 * 非基本类型 空类型 void 结构体类型 struct 共用体类型 union 类 class

图2-1 C++数据类型 数据类型的定义确定了其内存所占空间大小,也确定了其表示范围。表1-1列出了基本数据类型的取值范围。需要说明的是,在不同的系统中,每个变量类型所占的字节数目可能有所不同,这里列出的是在VC++编译环境中的情况。 表2-1 常用基本数据类型描述 2.1.1 常量 所谓常量是指在程序运行的整个过程中其值始终不可改变的量,常量有以下几种:1.整型常量 整型常量即以数码形式出现的整数,包括正整数、负整数和零。整型常量的表示形式有十进制、八进制和十六进制。 十进制整型常量的一般形式为:[±]若干个0~9的数字 八进制整型常量的一般形式为:[±]0若干个0~7的数字 十六进制整型常量一般形式为:[±]0x若干个0~9的数字及A~F的字母 整型常量可以用后缀字母L(或l)表示长整型,后缀字母U(或u)表示无符号型,也可同时用后缀L和U(大小写无关)。 2.实型常量 实型常量又称浮点小数,在C++语言中,实型常量只使用十进制表示,有两种表示形式:

相关文档
相关文档 最新文档