例子问题
例子问题1:实现技术
考虑以下代码:
Int [] vals = {6,1,41,5,1};
int[][] newVals = new int[vals.length][];
For (int I = 0;我< vals.length;我+ +){
newVals[i] = new int[vals[i]];
For (int j = 0;J < vals[i];j++) {
newVals[i][j] = vals[i] * (j+1);
}
}
上面的代码做什么?
它创建了一个二维矩阵瓦尔斯数组用于每一行。
它把这些值加起来瓦尔斯,把结果放在newVals.
它执行矩阵乘法运算瓦尔斯而且newVals,将最终结果存储在newVals.
的成员的倍数,该代码创建了一个2D数组瓦尔斯,使用其中的每个值来确定要计算的倍数的数量。
的成员的所有倍数从1到5,该代码创建了一个2D数组瓦尔斯。
的成员的倍数,该代码创建了一个2D数组瓦尔斯,使用其中的每个值来确定要计算的倍数的数量。
让我们看看这个程序的主循环:
For (int I = 0;我< vals.length;我+ +){
newVals[i] = new int[vals[i]];
For (int j = 0;J < vals[i];j++) {
newVals[i][j] = vals[i] * (j+1);
}
}
第一个循环显然贯穿瓦尔斯数组表示该数组中的项数。之后,它在newVals二维数组是与输入数组中的值一样长的第二个维度瓦尔斯.因此,对于41,它在中创建第三行newVals这是41列宽。
然后,我们进入第二个循环。这个迭代从0到存储在中的当前位置的值瓦尔斯.它将值的倍数放在给定的2D数组位置中。想到的j + 1.对于41的情况,这将从1到41(对于所有值也是如此)。因此,您创建了一个具有初始值的所有倍数的2D数组瓦尔斯数组中。
例子问题1:实现技术
考虑以下c++伪代码:
类车{
Const int wheels = 4;
浮动milesPerGallon;
字符串;
字符串模型;
}
Car sportscar =新车;
这两个班有什么区别车
,和对象跑车
?
跑车
实例化的的车。
他们没有亲戚关系。
它们都是从其他东西实例化的。
它们是一样的。
车
实例化的跑车
.
跑车
实例化的的车。
在面向对象范式内编程时,请将类视为蓝图,而将对象视为基于该蓝图构建的房子。
类车
是一个抽象的规范,不引用任何一个特定的实例。这只是一个协议,所有想成为汽车的物体都应该遵守。的跑车对象是汽车蓝图的实现。这是一个特定的实例。在编程术语中,”跑车
实例化的车
."
例子问题1:实现技术
Java显式类型转换
考虑以下JAVA代码:
public static void main(字符串[]参数)
{
双倍数字1 = 99.05;
intNumber2 = (int) number1;
system . out。Println ("number1 = " + number1);
system . out。Println ("number2 = " + number2);
}
控制台的输出是什么?
number1 = 99.05
科学= 99.00
number1 = 99
科学= 99
number1 = 99.05
科学= 99
number1 = 99.05
科学= 99.05
number1 = 99.05
科学= 99
类型强制转换处理的是将一个变量的值赋给另一个不同类型的变量。在这个例子中,我们有两个变量一个是double,另一个是整数。Number1是值为99.05的双精度值。但是,当number2被赋值为number1时,将进行一些显式的类型转换。当一个整数被赋值为double类型时,它的小数点位置就会下降。这意味着number2的值为99。
例子问题1:实现技术
类人{
int高度;
浮子重量;
公众:
int获得();
空白setHeight (int);
浮动getWeight ();
空白setWeight(浮动);
};
的访问级别是什么高度
而且重量
?
受保护的
朋友
私人
公共
虚拟
私人
在给出访问说明符之前,所有类成员都是隐式私有的。使用访问说明符之后定义的所有成员都将具有该访问级别,直到显式调用另一个访问说明符为止。由于没有使用访问说明符,重量
而且高度
自动私有的。
请注意,虚拟
不是访问关键字。
例子问题1:信息隐藏
考虑以下代码:
公共静态类时钟{
私人int秒;
公共时钟(int s) {
秒= s;
}
公共无效setTime(int s) {
秒= s;
}
公共无效setSeconds(int s) {
int hoursMinutes = seconds - seconds % 60;
seconds = hoursMinutes + s;
}
公共无效setMinutes(int min) {
Int hours = seconds / 3600;
int currentSeconds = seconds % 60;
seconds = hours + min * 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 = seconds - seconds % 60;
seconds = hoursMinutes + s;
}
公共无效setMinutes(int min) {
Int hours = seconds / 3600;
int currentSeconds = seconds % 60;
seconds = hours + min * 60 + currentSeconds;
}
}
下面哪个选项定义了atoString方法,该方法将以以下形式以24小时格式输出时间:
1:51:03
(注意你需要填充分钟和秒。你可以称12午夜为“0”。)
公共字符串toString() {
Int hours = seconds / 3600;
Int min =(秒-小时* 3600);
字符串minString = ""+分钟;
If (min < 10) {
minString = "0" + minString;
}
Int secs = seconds % 60;
String secString = "" + secs;
If (secs < 10) {
secString = "0" + secString;
}
return hours +":"+ minString+":"+secString;
}
公共字符串toString() {
Int hours = seconds / 3600;
Int min =秒-(小时* 3600)/ 60;
字符串minString = ""+分钟;
If (min < 10) {
minString = "0" + minString;
}
Int secs = seconds * 60;
String secString = "" + secs;
If (secs < 10) {
secString = "0" + secString;
}
return hours +":"+ minString+":"+secString;
}
公共字符串toString() {
Int hours =秒/ 60;
Int min =秒-(小时* 3600)/ 60;
字符串minString = ""+分钟;
If (min < 10) {
minString = "0" + minString;
}
Int secs = seconds * 60;
String secString = "" + secs;
If (secs < 10) {
secString = "0" + secString;
}
return hours +":"+ minString+":"+secString;
}
公共字符串toString() {
Int hours = seconds / 3600;
Int min =(秒-小时* 3600)/ 60;
字符串minString = ""+分钟;
If (min < 10) {
minString + = " 0 ";
}
Int secs = seconds % 60;
String secString = "" + secs;
If (secs < 10) {
secString + = " 0 ";
}
return hours +":"+ minString+":"+secString;
}
公共字符串toString() {
Int hours = seconds / 3600;
Int min =(秒-小时* 3600)/ 60;
字符串minString = ""+分钟;
If (min < 10) {
minString = "0" + minString;
}
Int secs = seconds % 60;
String secString = "" + secs;
If (secs < 10) {
secString = "0" + secString;
}
return hours +":"+ minString+":"+secString;
}
公共字符串toString() {
Int hours = seconds / 3600;
Int min =(秒-小时* 3600)/ 60;
字符串minString = ""+分钟;
If (min < 10) {
minString = "0" + minString;
}
Int secs = seconds % 60;
String secString = "" + secs;
If (secs < 10) {
secString = "0" + secString;
}
return hours +":"+ minString+":"+secString;
}
在这段代码中有几点需要注意。首先,您需要根据存储在类中的时间计算每个组成部分。秒的“显示值”相对容易。这只是除以60的余数。考虑:
这实际上是1分零1秒。
这实际上是2分35秒。
所以,你知道显示秒是:
% 60秒
您必须使用整数除法(这将去掉小数部分)来计算小时数。这是:
Int hours = seconds / 3600;
接下来,您需要计算出小时的值中有多少秒。这很有帮助,因为整数除法去掉了小数点部分。因此,你将减去:
小时* 3600
从总秒数来看。
这将给出应用于时间的分和秒的秒。因此,您最终需要除以60来分离分钟。
然后,您必须填充值。这是不通过使用+ =
,它将在字符串的末尾添加“0”字符。相反,它是通过表单完成的:
secString = "0" + secString;
例子问题1:实现技术
给定一个int类型的vector "intVec",编写一个"远程for"循环,有时也称为"for each"循环,使vector中所有元素的f值翻倍。(c++)
for(int& i: intVec(){
我* 2;
}
for(int& i: intVec(){
I * = 2;
}
for(int i: intVec(){
I * = 2;
}
For (int I = 0;我< intVec.size ();+ + i) {
intVec[我]* = 2;
}
For (int I = 0;我< intVec.size ();+ + i) {
intVec[我]* 2;
}
for(int& i: intVec(){
I * = 2;
}
c++ 11中引入了“for each”循环,它允许用户在不编写传统循环的情况下循环遍历包含项的容器。让我们看看所有的选项。
for(int i: intVec(){
I * = 2;
}
虽然这看起来像是正确答案,但其实不是。for循环第一部分中的int i被“by value”传入,这意味着将生成intVec的副本,副本内的整数将翻倍。原始intVec向量中的整数将不受影响。为了解决这个问题,int i需要被“通过引用”传递到for循环中,这是通过在“int”后面添加一个“&”符号来实现的。
正确的循环是:
for(int& i: intVec(){
I * = 2;
}
让我们来看看其他的选择:
for(int& i: intVec(){
我= 2;
}
这个将不起作用,因为它将intVec中的所有项设置为2,而不是将它们加倍。
所有其他的for循环都不是“for each”循环,所以即使它们完成了相同的输出,它们也是不正确的。