例子问题
例子问题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”循环,因此即使它们完成了相同的输出,它们也是不正确的。