在几何的世界里,一维为线,二维为面;而在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**
}

下面是本次实验所配套的视频教程: