sokaoti.com
川大《面向对象程序设计2261》19春在线作业11答案

请将以下程序中的函数声明语句补充完整

#include <stdio.h>

int【12】 ;

main( )

{int x,y,(*p)();

p=max;

printf(“&d\n”,&x,&y);

}

Int max(int a,int b)

{return (a>b/a:b);}


正确答案:

12max(int a,int b)


程序中有如下语句

for(int i = 0; i<5; i++)cout<<*(p + i)<<",";

能够依次输出 int 型一维数组 DATA 的前 5 个元素。由此可知,变量 p 的定义及初始 化语句是【 7 】 。


正确答案:


下列合法的声明语句是( )。

A.int_abc=50;

B.double int=3+5e2.5

C.long do=1L;

D.float 3_asd=3e-3;


正确答案:A
解析:C语言规定,标识符是由字母、数字或下画线组成,并且它的第一个字符必须是字母或者下画线。另外C语言规定了一些专用的标识符,它们有着固定的含义,不能更改。int就是表达变量类型的标识符,它不能再用做变量名和函数名。d。是C语言的一个关键字,也不能再用做变量名和函数名。


执行下列程序中的输出语句后,a的值是( )。 main() { int a; printf("%d\n",(a=2*3,a*5,a+7)); }

A.17

B.37

C.6

D.13


正确答案:C
解析: 本题考查逗号表达式。本题的返回值是a+7,a=2*3=6,a+7=13(注意:本题问的是a的值,而不是程序的输出值)。


下列语句分别是不同程序中的第一个输入/输出语句,若去掉其中的“<<left”,则输出效果将发生变化的是

A.eout<<left<<setfill('*')<<357;

B.cout<<left<<setw(5)<<357;

C.eout<<left<<setw(5)<<"ABCDE";

D.eout<<left<<"ABCDE";


正确答案:B


面向对象程序设计226118春在线作业1-0001试卷总分:100 得分:0一、 单选题 (共 30 道试题,共 60 分)1.以下不能正确进行字符串赋初值的语句是()A.charstr5=good!;B.charstr=good!;C.char*str=good!;D.charstr5=g,o,o,d;正确答案:A2.如果定义了一个类myclass,则为myclass类对象以成员函数形式重载后+运算符的声明应该为()A.myclassoperator+();B.myclass&operator+();C.myclassoperator+(int);D.myclass&operator+(int);正确答案:C3.下列语句分别是不同程序中的第一个输入输出语句,若去掉其中的“left”,输出效果将发生变化的是()A.coutleftsetfill(*)357;B.coutleftsetw(5)357;C.coutleftsetw(5)ABCDE;D.coutleft1;I-=2)cout*;A.24B.25C.26D.50正确答案:A19.在定义inta342;后,第10个元素是()A.a212B.a101C.a201D.a221正确答案:B20.已知Value是一个类,Value是Value的一个对象。下列以非成员函数形式重载的运算符函数原形中,正确的是()A.Valueoperator+(Valuev,inti);B.Valueoperator+(Valuev=value,inti);C.Valueoperator+(Valuevinti=0);D.Valueoperator+(Valuev=value,inti=0);正确答案:B21.链表的基本单元是()A.节点B.头指针C.尾指针D.数据域正确答案:A22.下列排序算法中,平均效率最低的排序算法是()A.插入法B.冒泡法C.选择法D.快速排序法正确答案:B23.C+源文件的缺省扩展名为()A.cppB.exeC.objD.lik正确答案:A24.有如下类定义: class Point private; static int how_many; ; _ how_many=0; 要初始化 Point 类的静态成员 how_many,下划线处应填入的内容是A.ingB.staticintC.intPoint:D.staticintPoint:正确答案:D25.有如下 4 个语句: coutAsetfill(*)leftsetw(7)Bendl; coutsetfill(*)leftsetw(7)ABendl; coutAserfill(*)rightsetw(7)Bendl; coutsetfill(*)rightsetw(7)ABendl; 其中能显示 A*B 的是A.和B.和C.和D.和正确答案:A26.数组名作为实参传递给形参时,数组名被处理为该数组的()A.长度B.元素个数C.首地址D.各元素的值正确答案:C27.函数的形参是()A.全局变量B.局部变量C.静态变量D.部变量正确答案:B28.二进制数00001001跟01000011异或的结果为()A.01001011B.00000001C.01001010D.01001100正确答案:C29.下面的选项中正确的赋值语句是(chara5,*p=a;)()A.p=“abcd”;B.a=“abcd”;C.*p=“abcd”;D*a=“abcd”;正确答案:A30.队列的最大特征是()A.先进先出B.后进先出C.自动排序D.大数优先正确答案:A二、 多选题 (共 5 道试题,共 20 分)1.C中变量要求()A.有明确的类型B.先声明后使用C.名字中不能使用下划线D.严格区分大小写正确答案:ABD2.设有定义语句: int x6=2,4,6,8,5,7,*p=x,i; 要求依次输出x数组6个元素中的值,下列选项中能完成次操作的语句有_( )、A.for(i=0;i6;i+)printf(“%2d”,*(p+);B.for(i=0;i6;i+)printf(“%2d”,*(p+i);C.for(i=0;i6;i+)printf(“%2d”,*p+);D.for(i=0;i6;i+)printf(“%2d”,(*p)+);正确答案:ABC3.for语句的格式为fo

执行下列语句段后程序的输出结果是______。

int x[]={1,2,3,4,5};

int q=x;

cout<<*(++q)<<end1;


正确答案:2
2


使用VC6打开考生文件夹下的工程test41_3。此工程包含一个test41_3.cpp,其中定义了类Rectangle,但该类的定义并不完整。请按要求完成下列操作,将程序补充完整。

(1)定义类Rectangle的私有数据成员left,top和fight,bottom,它们都是int型的数据。请在注释“//**1**”之后添加适当的语句。

(2)添加类Rectangle的带四个int型参数1、t、r、b的构造函数的声明,并使这四个参数的默认值均为0,请在注释“//**2**”之后添加适当的语句。

(3)添加类Rectangle的成员函数SetTop()参数为int型的t,作用为把t的值赋给类的数据成员top,添加类Rectangle的成员函数SetBottom()参数为int型的t,作用为把t的值赋给类的数据成员bottom,请在注释“//**3**”之后添加适当的语句。

(4)完成派生类Rectangle的成员函数Show()的定义,使其以格式“right-bottom point is(right,bottom)”输出,请在注释“//**4**”之后添加适当的语句。

源程序文件test41_3.cpp清单如下:

include <iostream.h>

class Rectangle

{

// ** 1 **

int right, bottom;

public:

// ** 2 **

~ Rectangle(){};

void Assign(int 1, int t, int r, int b);

void SetLeft(int t){left = t;}

void SetRight(int t){right = t;}

// ** 3 **

void SetBottom(int t){bottom = t;}

void Show();

};

Rectangle::Rectangle(int 1, int t, int r, int b)

{

left = 1; top = t;

right = r; bottom = b;

}

void Rectangle::Assign(int 1, int t, int r, int b)

{

left = 1; top = t;

right = r; bottom = b;

}

void Rectangle::Show()

{

cout<<"left-top point is ("<<left<<","<<top<<")"<<'\n';

// ** 4 **

}

void main()

{

Rectangle rect;

rect.Show();

rect.Assign(100,200,300,400);

rect.Show();

}


正确答案:(1) int left top; (2) Rectangle(int 1=0 int t=0 int r=0 int b=0); (3) void SetTop(int t){top=t;} (4) cout"right-bottom point is ("right""bottom")"'\n';
(1) int left, top; (2) Rectangle(int 1=0, int t=0, int r=0, int b=0); (3) void SetTop(int t){top=t;} (4) cout"right-bottom point is ("right","bottom")"'\n'; 解析:主要考查考生对于类的定义和定义一般成员函数的掌握,其中(2)中为了使构造函数可以不带参数,使用了对于参数给定默认值的方法,这点需要考生注意,(4)中连续的字符流的输出可以连续使用“”符号实现。


在下列叙述中,正确的一条是( )

A.语句int *pt中的*pt是指针变量名

B.语句"int *p=a;"等价于"int *p;p=&a[0];”

C.运算符*和&都是取变量地址的运算符

D.已知指针变量p指向变量a,则&a和*p值相同,都是变量a的值


正确答案:D


程序中有如下语句for(int i=0;i<5;i++)cout<<*(p+i<<“,”;能够依次输出int型一维数组a的前5个元素。由此可知,变量P的定义及初始化语句是( )。

A.int*p=a;

B.int p=a;

C.*p=a;

D.p=a;


正确答案:A
解析: 从循环语句中可以看出,是在0到4的循环中输出数组a中的前5个元素,输出的值为*(p+i),即为指针p向后移动指向的元素。所以初始化要将指针p指向数组a,即int*p=a;。


执行下列语句:includeusing namespace std;int main(){int x=3;if(x=5)cout<

执行下列语句: #include<iostream> using namespace std; int main() { int x=3; if(x=5) cout<<x++<<end1; else cout<<x<<end1; return 0; } 程序的输出是( )。

A.3

B.4

C.5

D.6


正确答案:C
解析:if(条件)语句1 else语句2,语句的执行过程是:首先判断条件是否为真(不为0),为真则0执行语句1,否则执行语句2。题目中的条件是x=5,意思是把5赋予变量x,它将x置5且返回一个真值。

更多 “川大《面向对象程序设计2261》19春在线作业11答案” 相关考题
考题 执行下面程序中的输出语句后,a的值是()。includemain(){int a; printf("%d\n",(a=3*5,a执行下面程序中的输出语句后,a的值是( )。 #include <stdio.h> main() { int a; printf("%d\n",(a=3*5,a*4));A.15B.20C.10D.60正确答案:A解析:本题考查对逗号运算符的理解。逗号运算符的求解过程是从左至右,依次求解各个表达式的值,所以在该题中,先使a的值等于15,再计算a*4,此时整个表达式的值为60,但a的值并未改变,仍为15。

考题 单选题下列语句分别是不同程序中的第一个输入输出语句,若去掉其中的“< A cout<<left<<setfill(‘*')<<357;B cout<<left<<setw(5)<<357;C cout<<left<<setw(5)<<“ABCDE”;D cout<<left<<“ABCDE”;正确答案:B解析:setfill()作用是设置填充字符;left是使输出数据在指定宽度内左对齐;setw()作用是设置输入输出宽度,且只对当前一次有效。B项,如果去掉其中的“<<left”,则输出结果为“ 357”,输出将发生变化。

考题 下列二维数组初始化语句中,正确且与语句int a[][3]={1,2,3,4,5}等价的是( )。A)int a[2][]={{1,2,3},{4,5));B)int a[][3]={1,2,3,4,5,0};C)int a[][3]={{1,0},{2,0},{3,0)};D)int a[2]={{1,2,3),{4,5,6)};正确答案:B

考题 下列语句分别是不同程序中的第一个输入输出语句。若去掉其中的“<<left”,输出效果将发生变化的是A.cout<<left<<setfill('*')<<357;B.cout<<left<<setw(5)<<357;C.cout<<left<<setw(5)<<"ABCDE";D.cout<<left<<"ABCDE";正确答案:B

考题 下列语句中,不能正确定义长度为4的数组a的语句是()A、 int[] a=new int[]{1,2,3,4};B、 int[] a= {1,2,3,4};C、 int[] a=new int[4]{1,2,3};D、 int[] a=new int[4]{1,2,3,4};正确答案:C

考题 执行下列程序语句后,输出结果为()。ineludeusing namespace std;int m=5;int main(){i执行下列程序语句后,输出结果为( )。 #inelude<iostream> using namespace std; int m=5; int main() { int m=3; m++; ::m++; cout<<m<<end1; return 0; }A.3B.4C.5D.6正确答案:B

考题 假定下列语句都是程序运行后首次执行的输出语句,其中输出结果与另外3条语句不同的语句是A.cout<<setfill(‘*’)<<123<<setw(9)<<321;B.cOUt<<setfill(‘*’)<<setw(6)<<left<<123<<setw(6)<<right<<321;C.COUt<<123<<setfill(‘*’)<<setw(6)<<321;D.cout<<setfill(‘*’)<<setw(9)<<left<<123<<321;正确答案:C解析:因为选项c)中间只设置了6个长度,因此会输出123***321,而其他选项会输出123******32l。

考题 有如下定义语句:int a[]={1,2,3,4,5};,则对语句int * p=a;正确的描述是( )。A.语句int * p=a;定义不正确B.语句int * p=a;初始化变量p,使其指向数组对象a的第一个元素C.语句int * p=a;是把a[0]的值赋给变量pD.语句int * p=a;是把a[1]的值赋给变量p正确答案:B

考题 下列的数组定义语句,不正确的是()。A、int a[]=new int[5]{1,2,3,4,5}B、int[,]a=new inta[3][4]C、int[][]a=new int[3][];D、int[]a={1,2,3,4};正确答案:D

考题 以下的数组定义语句中,不正确的是()A、 int[] a=new int[5]{1,2,3,4,5};B、 int[,] a=new int[3][4];C、 int[][] a=new int[3][];D、 int[] a={1,2,3,4,5};正确答案:B