在几何的世界里,一维为线,二维为面;而在Soldity固定二维数组的定义中,二维它表示为一个列表。我们可以像列表一样,用行和列来确定其中的元素。
实验目的
1. 明白Solidity的固定二维数组如何定义以及简单的操作。
2. 知道如何对固定二维数组进行数字相加。
实验要求
1. 查看示例1的代码,思考Solidity的固定数组的定义与其他语言(java)的固定数组定义有什么不同?按照注释补充完整代码。
2. 查看示例2,请你按要求补充好代码。完成好后,你可以尝试别的操作,比如求单科的总分及平均分。
以下是本次实验所使用到的测试代码,请使用remix编辑器完成该实验
// 示例1
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract TwoArray{
// 1、假如有小明,小红和小华三位同学,分别有文科成绩与理科成绩。为了记录他们的成绩,固定二维数组应该怎样定义?是uint[2][3],还是uint[3][2]?
uint[?][?] grade = [[83,89],[90,83],[96,79]];
//2、请补充代码,使得函数getLength返回二维数组grade的总长度
function getLength() public view returns(uint){
//**1**
}
// 3、 请补充代码,使得函数getElement返回二维数组grade元素的长度
function getElementLegth() public view returns(uint){
//**2**
}
// 4、如果grade是按顺序定义的,哪请你补充代码,返回小华的文科成绩。
function getXiaohuaGrade() public view returns(uint){
//**3**
}
// 5、老师突然发现小红的理科成绩83登记错了,请你补充代码,将其改为86
function changeContent() public {
//**4**
}
function getGrade(uint a, uint b) public view returns(uint){
return grade[a][b];
}
}
// 示例2
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Sum{
uint[2][3] grade = [[83,89],[90,86],[96,79]];
//老师想知道他们成绩的总和,请你补充下面的sum函数,使得其返回数组grade全部元素的和。
function sum() public view returns(uint){
//**1**
}
下面是本次实验所配套的视频教程:
