计算机科学:程序设计

学习计算机科学的概念,示例问题和解释

大学导师应用商店 大学导师安卓商店

例子问题

←之前 1

问题21:面向对象程序设计

考虑下面的代码:

私有静态类哲人{

私人字符串名称;

私人字符串favoriteSubject;

公共哲学家(字符串n,字符串f) {

name = n;

favoriteSubject = f;

字符串getName() {

返回名称;

getfavoritsubjject () {

返回favoriteSubject;

公共无效说话(){

system . out。println(“Hello, World !我的名字是“+name +”。我最喜欢的主题是“+ favoritsubject”);

私有静态类Nominalist扩展了哲人{

布尔方济会的;

public Nominalist(字符串n,布尔frank) {

超级(n,“逻辑”);

方济会修士=弗兰克;

公共无效说话(){

super.speak ();

如果(方济会修士){

system . out。println(“我是方济会修士”);

其他}{

system . out。println(“我不是方济会修士”);

字符串(){

如果(方济会修士){

返回“也许是奥卡姆的威廉?....”;

其他}{

“也许是圣Pourçain的杜兰杜斯——可耻的,一个多明尼加的名义主义者!”

如果你想做一个toString ()方法对两哲学家而且唯名论的,使用与每个类的电流相同的输出说话()方法,组织代码的最佳方法是什么?

我有toString()调用类的说()方法。

2有说()方法调用新的toString()方法。

3创建一个新的子类并编写toString ()方法。

可能的答案:

3

2

我和第三

正确答案:

2

解释

toString ()方法必须返回字符串值。因此,让这个方法生成当前在中生成的输出是最有意义的说()。然后,你可以说()调用toString ()方法来输出相同的字符串数据。

例子问题1:使用功能分解

给定一个类Thing和代码:

事thingOne thingTwo;

下面的函数调用相当于什么?

thingTwo = thingOne;

可能的答案:

运算符= (thingTwo thingOne);

thingOne使用thingTwo的复制构造函数

ostream& Thing::operator=(const things & rhs);

thingTwo。运算符= (thingOne);

以上都不是

正确答案:

thingTwo。运算符= (thingOne);

解释

我们得到的是thing1和thing2已经被创建了,这是一个至关重要的信息。让我们看一下每一个选项

运算符= (thingTwo thingOne);

这行代码毫无意义,而且语法错误。

ostream& Thing::operator=(const things & rhs);

这行代码说要从"Thing"类中访问"operator="方法并将其放到ostream中,这与将thingOne赋值给thingTwo没有任何关系。

当我们遇到复制构造函数的选择时,我们必须记住,复制构造函数只在对象使用to创建另一个对象时使用,例如,我们有一个给定的类Foo:

Foo Foo;

Foo foobar = Foo;

在本例中,我们使用foo来创建foobar。

唯一可行的选择是:

thingTwo.operator = (thingOne);

这行代码意味着thingOne对象被赋值给thingTwo。

例子问题1:识别类层次结构

看看以下流行编程语言的历史:

PHP

Java

objective - c

Python

下列哪项是所有这些语言共有的最接近的祖先?

可能的答案:

Smalltalk

艾达

Ruby

C

口齿不清

正确答案:

C

解释

所有这些语言都是基于c的语言。

  • Ruby发明于1995年,与PHP同年,因此它不可能影响早期的语言,如Objective-C和Python。
  • Lisp至少影响了一种语言,Python,但没有影响其他任何语言。
  • Ada直接影响了Java,因为它影响了C语言,所以可以说它是这些其他语言的祖先;然而,正因为如此,艾达并不是最接近的祖先。
  • Smalltalk影响了Objective-C,但没有影响这个列表上的其他语言。

一个线索是答案“目标-”C它是C语言的一个严格的超集,添加了面向对象功能。

例子问题1:识别类层次结构

运行以下代码后,字符串kitchen的值是多少?

  1. 班回家
  2. 公众:
  3. 回家(字符串);
  4. 空白searchhome ();
  5. int buyhome ();
  6. 私人:
  7. 字符串厨房();
  8. };
  9. ::家庭(字符串)
  10. 厨房= c;
  11. int main ()
  12. str =“大”;
  13. 回家(str);
可能的答案:

c

“小”

“大”

str

无效

正确答案:

“大”

解释

类定义的第4行中的构造函数是棘手的地方。在构造函数的初始化过程中,我们注意到输入是一个字符串。

下到第10行,在定义构造函数的地方,我们看到一个输入为c(定义为字符串)的构造函数将把kitchen的值设置为c。

最后,查看我们的主代码,我们看到main中的构造函数值为'big',在str中定义。

所以厨房=‘大’。

问题31:面向对象程序设计

将一个函数声明为void和将它声明为int有什么区别?

可能的答案:

int函数需要在函数内部声明一个整型变量,而void函数则不需要。

void函数可以有任何返回类型,而int函数只能有一种返回类型。

void声明不期望函数的输出,而int函数声明期望函数的输出是一个整数值。

void函数没有输入,int函数至少有一个整数输入。

没有区别。

正确答案:

void声明不期望函数的输出,而int函数声明期望函数的输出是一个整数值。

解释

函数声明非常重要,因为必须定义函数的返回类型。void函数不需要返回类型,而int函数必须有一个整数值作为返回类型。

问题#301:计算机科学

下面的代码有什么问题?

空白printsometext ()

cout < <“印刷文本\ n”;
(int i = 0; < 3;我=我+ 1)

我cout < < < <“\ n”

返回2;

可能的答案:

循环格式不正确。

void函数不能返回输出。

字符\n不存在。

在函数声明之后需要分号。

Cout不能输出数字。

正确答案:

void函数不能返回输出。

解释

在创建函数时,选择返回类型是非常重要的。如果你想让你的函数返回一个整数,你可以在你的函数前面加上"int"来表示这个函数期望一个整数输出。在本例中,函数被声明为void,这意味着没有输出。然而,代码指示返回值为2,这与void关键字冲突。要解决这个问题,要么删除return语句,要么将void更改为int。

例子问题2:程序设计

选择循环

想象一下,我想为一家银行写一个代码,询问用户他/她是想取款、存钱还是取款。最好使用哪种类型的循环,以确保用户能够做尽可能多的事务,直到他们按quit结束程序?

可能的答案:

一个延伸的循环。

一个无限循环。

一个循环。

一个循环。

正确答案:

一个延伸的循环。

解释

在我们的问题中,程序必须至少运行一次,以便将所有选项呈现给用户。由于这个原因,最好的选择是do-while循环,因为该循环中的语句至少执行一次,而退出循环的条件是在循环结束时。在这种情况下,退出条件是如果用户按下quit(在选项至少显示一次之后)。

在这种情况下,while循环可能有效;然而,这并不一定是最明智的选择。这是因为在循环中执行任何操作之前要对条件进行测试。这意味着无论while循环中的内容是什么,都不一定要执行。

对于这个问题,for循环也不是一个好的选择,因为for循环执行的次数是固定的。在这种情况下,我们不知道用户想要做1个事务还是10个事务。因此,for循环不是最好的选择。

无限循环也不是我们想要的,因为它永远运行。在我们的例子中,我们希望代码停止提示用户,并在“quit”之后结束。

例子问题311:计算机科学

使用指针

研究下面的伪代码。

int * var1;

Int foo = 63;

var1 = foo;

var2 = * var1;

var1和var2的值是多少?

可能的答案:

Var1被赋值为63

Var2被赋值为63

Var1被分配给foo的内存地址值

Var2被分配给var1的内存地址值

Var1被赋值为63

Var2被分配给var1的内存地址值

Var1被分配给foo的内存地址值。

Var2被赋值为63

正确答案:

Var1被分配给foo的内存地址值。

Var2被赋值为63

解释

指针存储另一个变量的地址。指针是通过命名类型,然后是星号,然后是变量名来声明的。在我们的例子中,var1被声明为一个指向整数的指针:

int * var1;

在接下来的代码中,我们看到一个名为“foo”的整型变量被创建,并被赋值为63。

然后使用地址操作符(&)来获取变量的地址。现在让我们看看下一行代码:

var1 = foo;

这里使用&号来获取foo在内存中的地址。这意味着var1包含foo存储在内存中的地址值。

接下来在代码中,我们有以下语句:

var2 = * var1;

这里使用的是解引用操作符(*)。每当我们想要获取指针所指向的变量的值(而不是地址)时,就使用这个操作符。在本例中,var1存储foo的地址。然而,通过使用解引用操作符,我们可以得到其地址存储在var1中的变量的实际值。在本例中,对var1解引用,我们得到foo的实际值是63。因此,var2 = 63。

问题91:标准的数据结构

二维数组

给定以下初始化的数组:

int第四;

int[][] myArray = {{1,2,3},

{4、5、6},

{7,8,9}};

使用myArray,我如何存储在变量“第四”,数字4?

可能的答案:

第四= myArray [0] [1];

第四= myArray [1] [0];

第四= myArray [2] [1];

第四= myArray [1] [1];

正确答案:

第四= myArray [1] [0];

解释

在创建和初始化二维数组时,访问矩阵内项的方法是调用带有行和列的数组(即myArray[row][column])。请记住,数组从0开始,数字4将位于第1行第0列。因此,为了将这个数字保存到变量“fourth”中,我们将执行以下操作:

第四= myArray [1] [0];

*注意:myArray[1][0]和myArray[0][1]不一样。

myArray[1][0] =4,因为它是位于行=1和列= 0的项。

myArray[0][1] =12,因为它是位于行=0和列=1的项。

例子问题2:选择合适的数据结构

库的最佳数据结构是什么?数据以标题和标题的多个副本的形式存在。

可能的答案:

ArrayList

数组

散列映射

静态值

正确答案:

散列映射

解释

哈希映射-键是标题,值是副本的数量

哈希映射是(键、值)对的集合。

哈希映射具有O(1)访问权限,因此这将是存储数据的最快和最好的方法。

←之前 1
大学导师的学习工具