计算机二级

有如下程序:include using namespace std;class AA {int n;public:AA(int k):n(k) {}有如下程序:#include <iostream>using namespace std;class AA { int n;public: AA(int k):n(k) {} int get(){return n;} int get()const { return n+1; }};int main(){ AAa(5); const AA b(6); cout<

题目
有如下程序:include using namespace std;class AA {int n;public:AA(int k):n(k) {}

有如下程序:#include <iostream>using namespace std;class AA { int n;public: AA(int k):n(k) {} int get(){return n;} int get()const { return n+1; }};int main(){ AAa(5); const AA b(6); cout<<a. get()<<b. get(); return ();}执行后的输出结果是( )。

A.55

B.57

C.75

D.77

参考答案和解析
正确答案:B
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有如下程序:include using namespace std;class AA{ int n;public: AA(int k):n (k)

有如下程序: #include <iostream> using namespace std; class AA{ int n; public: AA(int k):n (k) { } int get(){return n; } int get()const{return n+1;} } int main() { AA a(5); const AA b(6); cout<<a.get()<<b.get(); return 0; } 执行后的输出结果是( )。

A.55

B.57

C.75

D.77


正确答案:B

第2题:

有如下程序:includeusing namespaee std;class AA{public:AA( ){cout<<'1';}};class

有如下程序: #include<iostreanl> using namespaee std; class AA{ public: AA( ){cout<<'1';} }; class BB:public AA{ int k; public: BB( ):k(0){eout<<'2';} BB(int n):k(n){cout<<'3';} }; int main( ){ BB,b(4),c; return 0; } 程序的输出结果是

A.1312

B.132

C.32

D.1412


正确答案:A
解析:创建派生类对象时,先调用基类构造函数,然后调用派生类构造函数,b(4)先调用基类构造函数,然后调用BB的带参数构造函数,打印1和3;c调用基类AA的构造函数,然后调用BB的构造函数,打印1和2。故答案为A。

第3题:

以下程序的输出结果是#include <conio.h>#include <stdio.h>#define M 100void fun(int m, int *a, int *n){ int i,j=0; for(i=1;i<=m;i++) if(i%7==0||i%11==0) a[j++]=i; *n=j;}main(){ int aa[M],n,k; clrscr(); fun(100,aa,&n); for(k=0;k<n;k++) if((k+1)%20==0)printf("\n"); else printf("%d",aa[k]); printf("\n"); }


正确答案:77
在本题中,程序首先定义一个宏M,然后定义一个fun函数,函数带有三个形参,分别是一个整型形参m和两个整型指针形参a、n。在函数体中,首先定义两整型变量i和j,并给j赋初值为0,然后执行循环,循环体中首先是一个条件判断语句,如果结果为真,则说明变量i能同时被7和11整除,并将变量i保存到数组中,循环结束后,将数组中元素的个数通过指针变量n进行返回。通过分析可以知道,fun函数的作用是求取1到m中能同时被7和11整除的整数,并将结果保存到数组a中。
在主函数中,首先定义了两个整型变量和一个整型数组aa,然后调用clrscr()函数对文本模式窗口进行清除操作。接着调用fun函数,根据上面我们对fun函数的分析,要计算1~100之间能同时被7和11整除的整数,很显然,这样的数只有77一个,那么此时数组aa中只有一个元素为77,而n的值是1。
接着执行for循环,从程序中不难看出循环的作用是将数组aa中的元素按一定的规则输出,其规则为每行最多只能输出20个值。结合上面的分析,数组aa中只有一个元素为77,因此,本题程序的最终输出结果为77。

第4题:

有如下程序:includeusing namespace std;class AA{ int n;public: AA(int k):n (k){}

有如下程序: #include<iostream> using namespace std; class AA{ int n; public: AA(int k):n (k){} int get(){return n;) int get()const{return n+1;} }; int main() { AA a(5); const AA b(6); cout<<a.get()<<b.get(); return 0; } 执行后的输出结果是

A.55

B.57

C.75

D.77


正确答案:B
解析:本题考核常成员函数和函数的重载。所谓函数重载,是指同一个函数名可以对应着多个函数的实现,类AA中定义了两个get()函数,一个为普通成员函数,另一个为常成员函数。一般对象a既可以调用普通成员函数get,也可以调用常成员函数get,但是由于常成员函数不能更新对象的数据成员,所以题中通过对象a调用的函数为普通成员函数get(),返回值为5。常对象b只能调用常成员函数,所以题中通过对象b调用的函数为常成员函数get(),返回值为7。

第5题:

请编写函数void countValue(int *a,int *n),它的功能是:求出1到1000之内能被7或11整除但不能同时被7和11整除的所有整数并存放在数组a中,并通过n返回这些数的个数。

注意:部分源程序已给出。

请勿改动主函数main()和写函数writeDAT()的内容。

试题程序:

include<conio.h>

include<stdio.h>

void countValue(int *a, int *n)

{

}

main ( )

{

int aa[1000],n, k;

clrscr();

countValue (aa, &n);

for(k=0;k<n; k++)

if((k+1) %10 ==0)

{

printf("%5d",aa[k]);

printf("\n");

}

else printf("%5d",aa[k]);

writeDAT();

}

writeDAT ( )

{

int aa[1000],n, k;

FILE *fp;

fp=fopen("out79.dat","w");

countValue(aa,&n);

for(k=0; k<n; k++)

if((k+1)%10==0)

{

fprintf(fp,"%5d",aa[k]);

fprintf(fp,"\n");

}

else fprintf (fp,"%5d",aa[k]);

fclose(fp);

}


正确答案:void countValue(int *a int *n) { int i; *n=0; for(i=1;i=1000;i++) if(i%7==0 && i%11) /*将能被7整除但不能被11整除的数存入数组a中*/ { *a=i; *n-*n+1; /*统计个数*/ a++; } else if (i%7 && i%11==0) /*将能被11整除但不能被7整除的数存入数组a中*/ { *a=i; *n=*n+1; /*统计个数*/ a++; } }
void countValue(int *a, int *n) { int i; *n=0; for(i=1;i=1000;i++) if(i%7==0 && i%11) /*将能被7整除但不能被11整除的数存入数组a中*/ { *a=i; *n-*n+1; /*统计个数*/ a++; } else if (i%7 && i%11==0) /*将能被11整除但不能被7整除的数存入数组a中*/ { *a=i; *n=*n+1; /*统计个数*/ a++; } } 解析:本题考查的知识点如下:
(1)指针的使用。
(2)“%”运算符。
(3)判断结构中多个条件的布尔运算。
本题中,函数countValue()以指针为参数,这里就要涉及到指针的使用。a是指向数组的指针,初始时,指向数组的第一个元素。地址每加1时,依次指向后面的元素。一个数a若能被b整除,则a除以b取余得数为0。能被7或11整除,但不能被7和11同时整除,则有两种情况,能被7整除但不能被11整除,能被11整除但不能被7整除。这里就要用到多个条件的布尔运算。

第6题:

有如下程序:includeusing name。pace std;class AA{int n:public:AA(int k):n(k){}in

有如下程序: #include<iostream> using name。pace std; class AA{ int n: public: AA(int k):n(k){} in get( ){return n;} int get( )const{return n+1;} }; int main( ){ AA a(5); const AA b(6); cout<<a.get( )<<b.get( ); return 0: 执行后的输出结果是

A.55

B.57

C.75

D.77


正确答案:B
解析:如果一个对象被定义为常对象,则它只能调用该类的常成员函数而不能调用其他的成员函数。

第7题:

请编写函数fun(),它的功能是:求出1到1000之内能被5或13整除、但不能同时被5和13整除的所有整数并将它们放在 9所指的数组中,通过n返回这些数的个数。

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

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

试题程序:

include <conio.h>

include <stdio.h>

void fun(int *a,int *n)

{

}

main( )

{

int aa[1000],n,k;

clrscr();

fun(aa,an);

for(k=0;k<n;k++)

if((k+1)%10==0)

{

printf("%5d",aa[k]);

printf("\n"); /*—行写10个数*/

}

else

printf("%5d",aa[k]);

}


正确答案:void fun(int*aint *n) { int i.j=0; for(i=1;i=1000;i++) /*求1到1000之内能被5或13整除、但不能同时被5和13整除的所有整数并放入数组a中*/ if((i%5==0||i%13==0)&&i%65!=0) a[j++]=i; *n=j; /*传回满足条件的数的个数*/ }
void fun(int*a,int *n) { int i.j=0; for(i=1;i=1000;i++) /*求1到1000之内能被5或13整除、但不能同时被5和13整除的所有整数,并放入数组a中*/ if((i%5==0||i%13==0)&&i%65!=0) a[j++]=i; *n=j; /*传回满足条件的数的个数*/ } 解析:注意本题题目是找出能被5或13整除但不能同时被5和13整除的所有整数。能同时被5和13整除的整数一定能被65整除,且不能被65整除的数不一定就是能被5或13整除的数。所以可得出程序中的if()。按运算优先级可知 (i%5==0||i%13==0),注意,两边必须要有小括号。

第8题:

该程序运行的结果是( )。

#include

#include

#define M 100

void fun(int m, int *a, int *n)

{ int i,j=0;

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

if(i%7==0||i==0)

a[j++]=i;

*n=j;}

main()

{ int aa[M],n,k;

clrscr();

fun(10,aa,&n);

for(k=0;k

if((k+1) ==0)printf("\n");

else printf("M",aa[k]);

printf("\n");}


正确答案:
7

第9题:

编写函数fun(),它的功能是:求出1~1000之内能被7或11整除,但不能同时被7和11整除的所有整数,并将它们放在a所指的数组中,通过n返回这些数的个数。

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

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

[试题源程序]

include <conio.h>

include <stdio.h>

void fun(int *a, int *n)

{

}

main()

{

int aa[1000], n, k;

clrscr();

fun(aa,&n);

for(k=0; k<n; k++)

if(k+1)%10==0)

{

printf("%5d", aa[k]);

printf("\n");

}

else

printf("%5d", aa[i]);

}


正确答案:void fun(int *a int *n) { int i j=0; for(i=1; i=1000; i++) if((i%7=0 ||i%11==0)&&i%77!=0) a[j++]=i; *n=j; }
void fun(int *a, int *n) { int i, j=0; for(i=1; i=1000; i++) if((i%7=0 ||i%11==0)&&i%77!=0) a[j++]=i; *n=j; } 解析:本题的关键是if条件语句及参数传递。本题的设计思路是:(1)利用循环遍历1到1000之内的整数;(2)利用if语句判断,把查找到的整数保存到形参数组a中;(3)把数组a中数组元素的个数赋值到形参指针n所指的内存。注意程序中if语句的判断条件,本题是找出能被7或11整除但不能同时被7和11整除的所有整数。能同时被7和11整除的数一定能被77整除,且不能被7整除的数不一定就是能被7或11整除的数。所以,可得出程序中的if语句。