c++对象编程求教!

c++对象编程求教!,第1张

一、单项选择题

1用来构成C++程序文件的基本单位是( C )。

A字符 B语句 C函数 D表达式

2、在下列符号常量定义中,错误的定义是( C )。

Aconst double DD=314; Bconst int M=20;

Cconst char ch; Dconst bool mark=ture;

3下面给字符数组赋初值时,正确的语句是( A )。

Achar s1[]="abcdef";

Bchar s2[4]="abcd";

Cchar s3[2][3]={"abc","xyz"};

Dchar s4[4][]={'a','x','s','t'};

4假定一条定义语句为“int a[10],x, pa=a;”若要把数组a中下标为3的元素值赋给x,则不正确的语句为( D)。

Ax=pa[3]; Bx=(a+3);

Cx=a[3]; Dx= pa+3;

5在一个完整类的定义中,应包含有( D )成员的定义。

A数据 B函数 C数据和函数 D数据或函数

6假定AA为一个类,a()为该类共有的函数成员,X为该类的一个对象,则访问X对象中函数成员a()的格式为( B )。

Axa Bxa() Cx->a Dx->a()

7假定AA是一个类,abc()是该类的一个成员函数,则参数表中隐含的第一个参数的标识符为( C )。

Aabc Bint Cthis Dbool

8对于一个类的构造函数,其函数名与类名( A )。

A完全相同 B基本相同 C不相同 D无关系

9假定AB为一个类,则执行“AB s=new AB(a,5);”语句时得到的一个动态对象为( B )。

As Bs->a Csa Ds

10若派生类公有继承基类,则基类的公有和保护成员在派生类中将( D )成员。

A全部变成公有 B全部变成保护

C全部变成私有 D仍然相应保持为公有和保护

二、填空题

1C++语言是在_C____语言的基础上发展起来的。

2假定x=5,y=6,则执行表达式 y =x++后,y的值为____30___。

3在if语句中,每个else关键字与它同层次并且最接近的___if___关键字相配套。

4一维字符组a[20]能够储存的字符串的长度至多为___20____。

5假定p所指对象的值为25,p+1所指对象的值为42,则执行p++运算后,p所指对象的值为___42____。

6若采用p->abc(y)表达式调用一个成员函数,在成员函数中使用的__this_____就代表了类外的p指针。

7一个类中定义的数据成员或函数成员,可以使用____种保护属性中的一种。

8假定用户只为类AB定义了一个构造函数“AB(int aa, int BB=0){a=aa; b=bb;}”,则定义该类的对象时,其初始化实参表中至少带有___1__个实参。

9在重载一个单目运算符时,参数表中没有参数,说明该运算符函数只能是类的__成员函数________。

10重载一个运算符时,该运算符的优先级、__结合律________以及运算对象的个数都不允许改变。

三、程序填充题(在横线上填写上合适的内容)

1对数组a中的元素按相反次序重新排列。

void PV(int a[],int n)

{

int i;

for(i=0,i<n/2;_i++_________){

int x=a[i];

a[i]=__a[n-i-1]__;

a[n-i-1]=x;

}

}

2把从键盘上输入的一个大于等于3的整数分解为质因子的乘积。如输入24时得到的输出结果为“2 2 2 3”,输入50时得到“2 5 5”,输入37时得到的结果为37。

#include<iostreamh>

void main()

{

int x;

cout<<"请输入一个整数,若小于三则重输:";

do cin>>x;while(____x<3__________);

int i=2;

do{

while(x%i==0){cout<<i<<'';x/=i;}

_____i++________;

}while(i<x);

if(x! =1) cout<<x;

}

3假定有定义为“struct NODE{int data; NODE next;};”,下面算法遍历输出以参数L为表头指针的单链表中每个结点的值。

void f6(NODE L)

{

if(_____L==NULL_____) return;

NODE P=L;

while(p){

cout<<p->data<<'';

p=_p->next__;

}

cout<<endl;

}

4类A的定义

class A {

char a;

public:

A(){a=0;}

A(char aa){ //定义带参构造函数

a=__new__char[strlen(aa)+1]; //进行动态存储分配

strcpy(a,aa); //用aa所指字符串初始化a所指向德动态存储空间

}

___~A()_________________{delete []a;} //定义析构函数

};

四理解问答题(分别写出前两题的运行结果和后两题的函数功能)

1#include<iomaniph>

const int M=20;

void main()

{

int c2,c3;

c2=c3=0;

for(int i=1;i<=M;i++){

if(i%2==0)c2++;

if(i%3==0)c3++;

}

cout<<c2<<''<<c3<<endl;

}

运行结果:

过程:

0 0

1 0

1 1

2 1

2 1

3 2

3 2

4 2

4 3

5 3

5 3

6 4

6 4

7 4

7 5

8 5

8 5

9 6

9 6

10 6

结果:

10 6

2#include<iostreamh>

class A{

int a,b;

public:

A(){a=b=0;}

A(int aa,int bb){a=aa;b=bb;}

int Sum(){return a+b;}

};

void main(){

A x(12,46);

cout<<x Sum()<<endl;

}

运行结果:

58

3void fun5(char a,const char b)

{

while(b)a++=b++;

a='\0';

}

函数功能:

将b的值赋给a

4bool fun8(int a[],int n,int key)

{

for(int i=0;i<n;i++)

if(a[i]==key)return true;

return false;

}

函数功能:

查找数组a中有没有key,如有返回true,否则返回false

五编程题

1按照下面函数原型语句编写一个递归函数求出并返回数组a中n个元素的平方和。

int f(int a[],int n)

{

if(n>0)

return a[n]+f(a,n-1)

else

return 0;

}

2根据下面类中拷贝构造函数的原型写出它的类的类外定义。

class Array{

int a; //指向动态分配的整型数组空间

Int n; //记录数组长度

public:

Array(int aa[],int nn); //构造函数,利用aa数组长度nn初始化n,

//利用aa数组初始化a所指向的数组空间

Arrsy(const Array&aa) //拷贝构造函数

};

//在下面写出拷贝构造函数的类外定义

Array::Array(Array& aa) {

n=aan;

a=new int[n];

for(int i=0; i<n; i++) a[i]=aaa[i];

}

求采纳为满意回答。

d

c

b

b

22

50 , 0 ,49

函数原型 函数体

从左到右 ,从右到左

循环 ,选择,顺序

指针

#define EOF -1

1,0,1

'\0'

按引用传递,按值传递

最好先加上原型声明,然后再定义,或者是使用该函数。

原型声明并不是可有可无的,很多时候它关系到代码的生成,函数定义会根据原型声明进行参数类型检查,决定参数压栈方式,使用函数的地方会根据原型声明来确定如何提取栈中的参数。

如果你省略原型声明,编译器就会根据一些规则,自己来猜,猜错了你就倒霉了。尤其是在传统C与标准C混用的时候,会让你得到错误的结论,而你怎么检查源程序都查不出原因来。

你是新手,以上这些话你可能不完全明白,按照C语言的标准,你最好是把原型声明写上,它并不是个可有可无的东西。先写原型声明,再写函数定义或调用,这是一个好习惯。

首先说一下, 这道题目的答案是:C 

接下来我们了解下 scanf () 函数

函数原型 :

int scanf(const char  restrict format,);

1、函数 scanf() 是从标准输入流stdin (标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。

2、函数的第一个参数是格式字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置。每一个指针要求非空,并且与字符串中的格式符一一顺次对应。

返回值 :

scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束”则返回EOF。

如:scanf("%d %d",&a,&b);

1、函数返回值为int型。如果a和b都被成功读入,那么scanf的返回值就是2;

2、如果只有a被成功读入,返回值为1;

3、如果a和b都未被成功读入,返回值为0;

4、如果遇到错误或遇到end of file,返回值为EOF。end of file为Ctrl+z 或者Ctrl+d。

由上面的知识点可以,输入位置的变量应该是要写成指针类型的(表示取地址)。

int 类型取址是用的是&n,  而char c[5]是数组类型,其地址本身就是 c(同时也是数组名)。

如果以上对你有帮助,请采纳一下, 谢谢。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12175099.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存