AP计算机科学A: Int

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

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

例子问题

问题2:标准数据结构

考虑下面的代码:

Int I = 55, j = 3;

system . out。Println ((i / j + 3) / 5);

上面代码的输出是什么?

可能的答案:

代码中有一个错误。

正确答案:

解释

小心!这是整数除法。因此,对于每一个除法,你将失去你的小数点。因此:

I / j等于,但它变成了

然后,你将拥有。再一次,你丢掉小数点,得到结果是。

问题2:Int

下列哪一项能保证除法不丢失小数部分?

可能的答案:

没有一个答案是正确的。

Double d = (Double)(55/3);

双d = 1.0 * 55 / 3;

双d = 55 / 3;

Double d = (Double)((int)55 / (int) 3);

正确答案:

双d = 1.0 * 55 / 3;

解释

记住这一点,只要一个一个乘法/除法集合的元素是一个浮点值,整个都是一个浮点值。因此,正确答案是:

双d = 1.0 * 55 / 3;

你需要计算右边的值:

1.0 * 55将变成55.0。这将在除法中以双精度数结束,并将该值存储在d中。

请注意,以下操作不起作用:

Double d = (Double)(55 / 3);

这段代码将首先做整数除法55 / 3。这将解析为18。只有这样才会出现双强制转换。这将给你18.0,而不是18.33333…

问题3:Int

考虑下面的代码:

Int I = 100;

Double d = 4.55, d2 = 3.75;

Int j = (Int)(d * 100 + d2);

的值是多少j在代码执行的最后?

可能的答案:

458

399

459

403

411

正确答案:

458

解释

不要想太多。首先对表达式求值:

D * 100 + d2

这和:

现在,这个值被强制转换为整数:

(int) (458.75)

请记住,当从双精度值类型转换为整数时,要完全去掉小数点。不能四舍五入或四舍五入。你只要把它截断。因此,答案是458。

问题1:基本数据类型

考虑下面的代码:

Int I = 3;

For (int j = 5;J > 0;j () {

I += I;

}

它的价值是什么在这个循环的迭代结束时?

可能的答案:

729

24

96

48

243

正确答案:

96

解释

所讨论的循环执行forj取值为5 ~ 1。因此,您将执行5次。对于每个循环,你将得到:

I = 3 + 3 = 6

I = 6 + 6 = 12

I = 12 + 12 = 24

I = 24 + 24 = 48

I = 48 + 48 = 96

最后一个值就是您的答案!

问题1:标准数据结构

考虑下面的代码:

Int I = 5, p = 27;

For (int 1 = 23;L < p;l + +) {

I *= (l - 22);

}

它的价值是什么在上面代码的末尾?

可能的答案:

75

0

5

120

150

正确答案:

120

解释

您总是可以手动跟踪代码中的循环。你知道它会从L = 23L = 26。回想一下,* =可以改写为:

I = I * (l - 22)

现在,让我们考虑第一个循环。对于这个,我们应该:

I = 5 * (23 - 22) = 5 * 1

现在,我们来计算一下对于从23到26的每个循环:

23: 5

24: 5 * (24 - 22) = 5 * 2 = 10

25: 10 * (25 - 22) = 10 * 3 = 30

26: 30 * (26 - 22) = 30 * 4 = 120

问题1:基本数据类型

考虑下面的代码:

Int val = 205;

For (int I = 0;I < 5;我+ +){

Val /= 2;

}

在执行结束时,变量的值是多少瓦尔在上面的代码中?

可能的答案:

6

6.40625

12

25

5.90225

正确答案:

6

解释

回想一下,运算符/ =可以改写为:

Val = Val / 2;

现在,回想一下整数除法去掉了小数部分总是。因此,这个程序将循环5次,做除法瓦尔每次2。这会给你:

问题1:标准数据结构

以下哪个变量赋值不是有效的赋值语句?

A. 15 = x - 15;

B. num = x * y;

C. x = y + 15

D. x + y = 15

可能的答案:

b, c

,维

d、c

一个

d

正确答案:

,维

解释

A. 15 = x - 15;

不能给整数赋值,因为它们不是变量,也不存储信息。

D. x + y = 15

该语句不将值赋给单个整数,因此,它不是有效的变量赋值。

问题8:Int

参考下面的代码行:

双d = -4.73;

下面哪个选项可以将d舍入到最接近的整数?

可能的答案:

int rounddednumber = (int) (d+ 0.5)

int roundedNumber = Math.abs(d);

int rounddednumber = (int) (d - 0.5)

int roundedNumber = (int) Math.abs(d);

int roundedNumber = Math.abs((int) (d))

正确答案:

int rounddednumber = (int) (d - 0.5)

解释

答案是(int) (d - 0.5),因为您希望将roundNumber设置为-5,并且将double类型的负数转换为int会将数字四舍五入到更大的整数。

abs(d)返回d的绝对值,不会类型转换为int。此选项将抛出不兼容类型编译器错误。

如果将(int)强制转换加到Math.abs(d)中,则会将数字取底,或者将d四舍五入到4。

语句int roundedNumber = (int) (d+.5)将把。5加到-4.67上,得到(int) -4.17。这将导致roundedNumber被设置为-4,因为将负双精度型转换为int实际上会执行一个封顶操作(例如(int) -4.99仍然是-4)。

最后,int roundedNumber = Math.abs((int) (d))将d强制转换为-4,并接受-4的绝对值,结果为4。

问题11:标准数据结构

假设你得到以下代码行:

整数a = new Integer(10);

Integer b = new Integer(4);

下面哪几行不会产生错误?

I. if (a.intValue() == b.intValue())

II if ((a.toString()).equals(b.toString()))

III if ((a.intValue()).equals(b.intValue()))

可能的答案:

I和II

3

I, ii, iii

2

正确答案:

I和II

解释

答案是I和II。

可以使用==操作符比较基本类型(这里我们比较的是int),因此语句I不会抛出错误。语句二也不会抛出错误,因为.equals方法允许你将两个字符串相互比较。但是,不能在int上调用方法,因此语句III将导致错误。

大学导师提供的学习工具