计算机二级

类中包含了一个静态成员函数,则main函数中和P.fl(P);语句具有同样功能的语句为______。include<iostream.h>class M{public:M(int A){A=a;B+=a;}static void fl(M m);private:int A;static int B;};void M::f1(M m){cout<<"A="<<m.A<<endl;cout<<"B="<<m.B<<endl;}int M::B=10;void main( ){M P(5);P.f1(P);}

题目

类中包含了一个静态成员函数,则main函数中和P.fl(P);语句具有同样功能的语句为______。

include<iostream.h>

class M

{

public:

M(int A){A=a;B+=a;}

static void fl(M m);

private:

int A;

static int B;

};

void M::f1(M m)

{

cout<<"A="<<m.A<<endl;

cout<<"B="<<m.B<<endl;

}

int M::B=10;

void main( )

{

M P(5);

P.f1(P);

}

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

关于this指针,下列说法正确的是:

A.普通成员函数隐含了一个this指针

B.静态成员函数隐含了一个this指针

C.静态成员函数可以访问静态数据成员和静态函数成员

D.静态成员函数不能访问非静态成员函数和非静态数据成员

E.非静态成员函数可以任意地访问静态成员函数和静态数据成员。


在类的成员函数中this指针指向调用该函数的对象

第2题:

类中包含了一个静态成员函数,则main函数中和P.f1(P);语句具有同样功能的语句为______。

include<iostream.h>

class M

{public:

M(int A){A=a;B+=a;}

static void f1(M m);

private:

int A;

static int B;};

void M::f1(M m)

{

cout<<“A=“<<m.A((end1;

cout<<“B=”<<m.B<<en


正确答案:M::f1(P);。
M::f1(P);。 解析: 由于f1是类M的静态成员函数,即说明类M的任何对象都共享一份f1,因此,不仅可以从对象那里访问f1,还可以用域操作符::通过类名来访问。

第3题:

已知一个类A,其中Fun()函数是类A的一个成员函数,A*p,a;p=&a;,则下面语句正确的是( )。

A.语句p=&a;是把对象a赋值给指针变量p

B.语句A*p,a;p=&a;调用两次类A的构造函数

C.对语句*p.fun();的调用是正确的

D.语句 p->fun();和语句 a.fun();等价


正确答案:D
解析:A是把对象的地址值赋给指针;B只会调用一次类的构造函数;C正确的调用应是(*p).fun()。

第4题:

请补充main函数,该函数的功能是:从键盘输入若干字符放到一个字符数组中,当桉回车键时结束输入,最后输出这个字符数组中的所有字符。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。

试题程序:

include<stdio.h>

include<ctype.h>

main()

{

int i=0;

char a [81];

char *p=s;

clrscr ();

printf{" Input a string \n");

for (i=0; i<80; i++)

{

s [i] =getchar ( );

if (s [i]=='\n')

【 】;

}

s[i]=【 】

printf(" display the string \n");

while (*p)

putchar (【 】);

}


正确答案:break '/0' *P++
break '/0' *P++ 解析:第一空:当输入的字符是回车符时,使用break语句跳出for循环,结束输入。第二空:结束输入后,在字符串s最后要加上结束标记符,'\0' 。第三空:最初指针p指向字符串s的首字符,通过P慢逐一指向后面的每个字符,调用putchar()函数输出字符。

第5题:

请编写一个函数maxofarray(atype*p,int count),该函数从一个数组中找出其中的最大元素,并且数组中可以存放多种数据类型的元素。

注意:部分源程序己存在文件test42_2.cpp中。

请勿修改主函数main和其他函数中的任何内容,仅在函数maxofarray的花括号中填写若干语句。

文件test42_2.cpp清单如下:

include<iostream.h>

include<string.h>

include<conio.h>

template<class atype>

void maxofarray(atype* p,int count)

{

}

void main ()

{

int len=5;

char *p1;

cout<<"the char type array and it's length is 5:\n";

cout<<"the array element is a b c d e\n";

p1=new char[len];

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

p1[i]='a'+i;

maxofarray(p1,len);

}


正确答案:void maxofarray(atype*pint count) { for (int j=0;jcount-1;j++) { for (int k=0;kcount-1-j;k++) if(p[k]>p[k+1]) { atype temp; temp=p[k]; p[k]=p[k+1]; p[k+1]=temp; } } cout"\nthe max element of this array is: "p[count-1]endl; }
void maxofarray(atype*p,int count) { for (int j=0;jcount-1;j++) { for (int k=0;kcount-1-j;k++) if(p[k]>p[k+1]) { atype temp; temp=p[k]; p[k]=p[k+1]; p[k+1]=temp; } } cout"\nthe max element of this array is: "p[count-1]endl; } 解析:本题考查的是考生对模板函数和简单的排序方法的综合应用。为了对于任何数据类型都能进行比较,应该使用模板类进行函数的参数的定义,而函数内部则使用了冒泡排序法得到最大的元素,实际上只需要一次两两比较就可以得到正确的答案了,考生可以自己试试看。

第6题:

请补充main函数,该函数的功能是:打印届1~1000中满足:个位数字的立方等于其本身所有数。

本题的结果为;1 64 125 216 729

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数main的横线上填入所编写的若干表达式或语句。

试题程序:

include <stdio .h>

main ( )

{

int i,g;

clrscr ();

for (i=1; i<1000; i++)

{

g=【 】;

if(【 】)

printf ("%4d", i);

}

}


正确答案:i%10 g*g*g==i
i%10 g*g*g==i 解析:第一空:将一个整数对10求余,就得到这个数的个位数字,并存于变量g中。第二空:如果个位数字的立方等于这个数本身,则将这个数输出。

第7题:

请补充main函数,该函数的功能是:从键盘输入一个字符串并保存在字符str1中,把字符串str1中下标为偶数的字符保存在字符串str2中并输出。例如,当str1=“cdefghij”,则 str2=“cegi”。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

试题程序:

include<stdio.h>

include<conio.h>

define LEN 80

main()

{

char str1[LEN],str2 [LEN];

char *p1=str1,*p2=str2;

int i=0,j=0;

clrscr();

printf("Enter the string:\n");

scanf(【 】);

printf("***the origial string***\n");

while(*(p1+j))

{

printf("【 】",*(p1+j));

j++;

}

for(i=0;i<j;i+=2)

*p2++=*(str1+i);

*p2='\0';

printf("\nThe new string is:%s\n", 【 】 );

}


正确答案:"%s"str1 %c str2
"%s",str1 %c str2 解析:第一空:本题考查对标准输入函数scanf()的调用格式,当输入字符串时,格式控制字符串为“%s”,题目要求输入的字符串保存在str1中,所以地址表列应为字符串的首地址,即为str1。第二空:本题考查对标准输出函数printf()的调用格式,当输出为字符型变量时,格式控制字符串为“%c”。第三空:题目要求将str1中下标为偶数的字符保存在字符串str2中并输出,所以ptintf()函数的输出表列是str2。

第8题:

请补充main函数,改函数的功能是,把一个二维字符数组每行字符串最大的字符拷贝到字符数组s中。

例如,如果str[3]={"efjh","cfimls","owys"},则s;"hsy"。

注意:部分源程序给出如下.

请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。

试题程序:

inc lude<stdio, h>

main()

{

int i=0;

char *str [3] ={ "efjh", "efknls",

"owys" };

char **p;

char s [8];

clrscr 0;

【 】;

for (i=O; i<3; i++)

{

s [i] =*p [i];

while (*p [i] )

{

if (S [i] <*p [i] )

s [i] =*p[i];

【 】;

}

}

【 】;

printf(" new string \n");

puts (s);

}


正确答案:p=str p[i]++ s[i]='\0'
p=str p[i]++ s[i]='\0' 解析:第一空:sb是一个大小为3的指针数组,每个指针指向一个字符串,p是指向指针的指针,首先要使指针p指向数组sb的首地址。第二空:通过p[i]++使p[i]指向第i个字符串的下一个字符。第三空:将每行字符串的最大字符都拷贝到字符数组s中后,不要忘了在数组s最后加上字符串结束标记符‘\0’。

第9题:

请补充main函数,该函数的功能是:输出一个3×3的矩阵,要求必须使用行指针表示输出变量。

注意;部分源程序给出如下.

请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。

试题程序:

include<s tdio. h>

main()

{

static int array[3] [3]={{9,8,7}, {6,5,

4}, (3,2,1}};

iht (*p) [3],j,i;

p=【 】

clrscr ();

for (i=0; i<3; i++)

{

printf (" \n\n" );

for (j=0; j<3; j++)

printf("%4d",【 】);

}

}


正确答案:array *(*(p+i)+j)
array *(*(p+i)+j) 解析:第一空:p是一个指针,指向大小为3的一维数组。首先要使指针p指向数组array的首地址,而数组名array即表示数组slray的首地址,所以将array赋给p。第二空:*(*(p+i+j)表示数组的第i行第j列元素,即array[i][j]。