计算机科学:实现技术

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

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

例子问题

例子问题1:实现技术

考虑下面的代码:

Int [] val = {6,1,41,5,1};

int[][] newVals = new int[vals.length][];

For (int I = 0;I < val .length;我+ +){

newVals[i] = new int[val [i]];

For (int j = 0;J < val [i]; J ++) {

newVals[i][j] = vals[i] * (j+1);

上面的代码做什么?

可能的答案:

它创建了一个2D矩阵瓦尔斯数组为每一行。

它把值加起来瓦尔斯,把结果放进去newVals

它执行一个矩阵乘法瓦尔斯而且newVals,将最终结果存储在newVals

的成员的倍数,该代码创建一个2D数组瓦尔斯,使用每个值来确定要计算的倍数数。

代码创建一个2D数组,其中包含的成员从1到5的所有倍数瓦尔斯。

正确答案:

的成员的倍数,该代码创建一个2D数组瓦尔斯,使用每个值来确定要计算的倍数数。

解释

让我们看看这个程序的主循环:

For (int I = 0;I < val .length;我+ +){

newVals[i] = new int[val [i]];

For (int j = 0;J < val [i]; J ++) {

newVals[i][j] = vals[i] * (j+1);

第一个循环显然贯穿瓦尔斯数组表示该数组中的项数。之后,它在newVals二维数组是与输入数组中的值一样长的第二个维度瓦尔斯.因此,对于41,它创建了第3行newVals这是41列宽。

然后,我们进入第二个循环。这个函数从0迭代到存储在当前位置中的值瓦尔斯.它将值的倍数放置在给定的2D数组位置。想到的J + 1.对于41的情况,这将从1到41(对于所有的值也是如此)。因此,您创建了一个具有初始值的所有倍数的2D数组瓦尔斯数组中。

问题222:计算机科学

考虑下面的c++伪代码:

车辆类别{

Const int wheels = 4;

浮动milesPerGallon;

字符串;

字符串模型;

汽车跑车=新车;

班级之间有什么区别,和对象跑车?

可能的答案:

它们是一样的。

实例化从跑车

跑车实例化从的车。

它们都是从其他东西实例化的。

他们没有亲戚关系。

正确答案:

跑车实例化从的车。

解释

在面向对象范式中编程时,可以将类视为蓝图,而将对象视为根据蓝图构建的房子。

是一个抽象规范,不引用任何特定实例。这只是一个协议,所有希望成为汽车的物体都应该遵守。的跑车对象是汽车蓝图的实现。这是一个具体的实例。用编程术语来说,“跑车实例化从."

例子问题1:实现技术

Java显式类型转换

考虑下面的JAVA代码:

public static void main(String[] args)

Double number1 = 99.05;

intNumber2 = (int) number1;

system . out。Println ("number1 = " + number1);

system . out。Println ("number2 = " + number2);

控制台的输出是什么?

可能的答案:

数字1 = 99.05

数字2 = 99.00

数字1 = 99

数字2 = 99

数字1 = 99.05

数字2 = 99

数字1 = 99.05

数字2 = 99.05

正确答案:

数字1 = 99.05

数字2 = 99

解释

类型强制转换处理的是将一个变量的值赋给另一个不同类型的变量。在这种情况下,我们有两个变量,一个是双精度数,另一个是整数。Number1是一个值为99.05的双精度数。然而,当number2被赋值为number1时,会发生一些显式的类型强制转换。当一个整数被赋值为double时,它会从小数点后几位下降。这意味着number2的值是99。

例子问题1:信息隐藏

班级人{

int高度;

浮子重量;

公众:

int获得();

空白setHeight (int);

浮动getWeight ();

空白setWeight(浮动);

};

的访问级别是什么高度而且重量?

可能的答案:

虚拟

私人

受保护的

公共

朋友

正确答案:

私人

解释

在给出访问说明符之前,所有类成员都是隐式私有的。在使用访问说明符之后定义的所有成员将具有该访问级别,直到显式调用另一个访问说明符。由于没有使用访问说明符,重量而且高度自动私有。

请注意,虚拟不是access关键字。

例子问题1:信息隐藏

考虑下面的代码:

公共静态类Clock {

私有int秒;

公共时钟(int s) {

秒= s;

setTime(int s) {

秒= s;

setSeconds(int s) {

int hoursMinutes =秒-秒% 60;

秒= hoursMinutes + s;

setMinutes(int min) {

Int hours = seconds / 3600;

int currentSeconds = seconds % 60;

秒=小时+分钟* 60 + currentSeconds;

下面哪一个表示返回时钟分钟值的方法?

可能的答案:

公共int getMinutes() {

返回秒* 60;

公共int getMinutes() {

Int hours = seconds / 3600;

返回(秒-小时* 3600);

公共int getMinutes() {

Int hours = seconds / 3600;

返回(秒-小时* 3600)/ 60;

公共int getMinutes() {

返回秒数/ 60;

公共int getMinutes() {

返回分钟;

正确答案:

公共int getMinutes() {

Int hours = seconds / 3600;

返回(秒-小时* 3600)/ 60;

解释

这个时钟类被定义为它的字段中只有秒,所以您必须为任何访问器和突变器转换这个值。因此,您需要对这种转换进行仔细的(尽管简单)计算。要计算给定秒数中的分钟数,首先需要从总计数中删除小时。首先,使用整数除法计算小时数(这将去掉小数部分)。这是:

Int hours = seconds / 3600;

接下来,您需要计算出小时值中有多少秒。这很有用,因为整数除法去掉了小数部分。因此,你会减去:

工时* 3600

从总秒数。

这将为您提供应用于时间的分钟和秒的秒。因此,您最终需要除以60来分离分钟。

例子问题1:实现技术

考虑以下代码

公共类时钟{

私有int秒;

公共时钟(int s) {

秒= s;

setTime(int s) {

秒= s;

setSeconds(int s) {

int hoursMinutes =秒-秒% 60;

秒= hoursMinutes + s;

setMinutes(int min) {

Int hours = seconds / 3600;

int currentSeconds = seconds % 60;

秒=小时+分钟* 60 + currentSeconds;

下面哪一个定义了atoString方法,该方法将以以下形式以24小时格式输出时间:

1:51:03

(请注意,您需要填充分钟和秒。你可以把午夜12点称为“0”。)

可能的答案:

toString() {

Int hours = seconds / 3600;

Int分钟=(秒-小时* 3600);

String minString = ""+mins;

如果(分钟< 10){

minString = "0" + minString;

Int secs =秒% 60;

String secString = "" + secs;

If (secs < 10) {

secString = "0" + secString;

返回hours +":"+ minString+":"+secString;

toString() {

Int hours = seconds / 3600;

Int分钟=秒-(小时* 3600)/ 60;

String minString = ""+mins;

如果(分钟< 10){

minString = "0" + minString;

Int secs =秒* 60;

String secString = "" + secs;

If (secs < 10) {

secString = "0" + secString;

返回hours +":"+ minString+":"+secString;

toString() {

Int小时=秒/ 60;

Int分钟=秒-(小时* 3600)/ 60;

String minString = ""+mins;

如果(分钟< 10){

minString = "0" + minString;

Int secs =秒* 60;

String secString = "" + secs;

If (secs < 10) {

secString = "0" + secString;

返回hours +":"+ minString+":"+secString;

toString() {

Int hours = seconds / 3600;

Int分钟=(秒-小时* 3600)/ 60;

String minString = ""+mins;

如果(分钟< 10){

minString += "0";

Int secs =秒% 60;

String secString = "" + secs;

If (secs < 10) {

secString += "0";

返回hours +":"+ minString+":"+secString;

toString() {

Int hours = seconds / 3600;

Int分钟=(秒-小时* 3600)/ 60;

String minString = ""+mins;

如果(分钟< 10){

minString = "0" + minString;

Int secs =秒% 60;

String secString = "" + secs;

If (secs < 10) {

secString = "0" + secString;

返回hours +":"+ minString+":"+secString;

正确答案:

toString() {

Int hours = seconds / 3600;

Int分钟=(秒-小时* 3600)/ 60;

String minString = ""+mins;

如果(分钟< 10){

minString = "0" + minString;

Int secs =秒% 60;

String secString = "" + secs;

If (secs < 10) {

secString = "0" + secString;

返回hours +":"+ minString+":"+secString;

解释

在这段代码中有几点需要注意。首先,您需要根据存储在类中的秒计算每个组成部分。秒的“显示值”相对简单。这就是除以60的余数。考虑:

这实际上是1分1秒。

这实际上是2分35秒。

所以,你知道显示的秒数是:

秒% 60

您必须使用整数除法计算小时数(这将删除小数的小数部分)。这是:

Int hours = seconds / 3600;

接下来,您需要计算出小时值中有多少秒。这很有用,因为整数除法去掉了小数部分。因此,你会减去:

工时* 3600

从总秒数。

这将为您提供应用于时间的分钟和秒的秒。因此,您最终需要除以60来分离分钟。

然后,必须填充这些值。这是通过使用+ =,它会将“0”字符添加到字符串的末尾。相反,它是由表单完成的:

secString = "0" + secString;

例子问题1:实现技术

给定一个名为“intVec”的整型向量,编写一个“rangedfor”循环,有时也称为“for each”循环,将vector中所有元素的f值翻倍。(c++)

可能的答案:

for(int& i: intVec(){

I * 2;

for(int& i: intVec(){

I * = 2;

for(int i: intVec(){

I * = 2;

For (int I = 0;i < intVec.size();+ + i) {

intVec[i] *= 2;

For (int I = 0;i < intVec.size();+ + i) {

[i] * 2;

正确答案:

for(int& i: intVec(){

I * = 2;

解释

c++ 11引入了“for each”循环,允许用户在不编写传统循环的情况下对容器中的项进行循环。让我们来看看所有的选项。

for(int i: intVec(){

I * = 2;

虽然这看起来像正确答案,但它不是。for循环第一部分中的int i是“按值”传入的,这意味着将生成intVec的副本,副本中的整数将翻倍。原始intVec向量中的整数将不受影响。为了解决这个问题,需要将int i通过引用传递到for循环中,这是通过在“int”后面添加“&”符号来完成的。

正确的循环是:

for(int& i: intVec(){

I * = 2;

让我们来看看其他的选择:

for(int& i: intVec(){

I = 2;

这个将不起作用,因为它将intVec中的所有项设置为2,而不是将它们加倍。

所有其他for循环都不是“for each”循环,因此即使它们完成了相同的输出,它们也是不正确的。

大学导师的学习工具