You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何记录向二维数组添加元素的顺序?附C语言实现代码

记录二维数组元素添加顺序的实现方案

需求说明

我们需要实现一个能记录元素添加顺序的二维数组:初始状态为全零矩阵,每次向矩阵中添加元素时,要同时记录该元素是第几个被添加的。

实现思路

  • 定义一个Point结构体,用来同时存储元素的数值和它的添加顺序索引:
    • index:整型,记录该元素是第几个被添加的(从1开始递增)
    • value:浮点型,存储元素的实际数值
  • 初始化一个100x100的Point类型二维矩阵,初始状态下所有元素的index为0、value为0.0,对应"全零矩阵"的初始要求
  • 编写adds函数负责元素添加:每次调用时,给目标位置的Point对象赋值value,同时用一个静态计数器给index赋值并自增,保证顺序的唯一性

完整实现代码

#include <stdio.h>

// 定义存储元素值和添加顺序的结构体
typedef struct { 
    int index;      // 记录元素的添加顺序(从1开始)
    double value;   // 存储元素的实际数值
} Point;

// 向二维矩阵中添加元素并记录顺序
void adds(int line, int column, double value, Point matrix[100][100]){
    static int c = 1;  // 静态计数器,保持递增的顺序值,初始为1
    matrix[line][column].value = value;
    matrix[line][column].index = c;
    c++;
}

// 测试用例示例
int main() {
    // 初始化100x100的Point矩阵,默认index=0,value=0.0
    Point matrix[100][100] = {0};

    // 添加几个测试元素
    adds(0, 0, 1.5, matrix);
    adds(2, 3, 3.2, matrix);
    adds(0, 0, 5.0, matrix);  // 覆盖原有位置,更新value和最新的index

    // 打印测试位置的信息
    printf("位置(0,0): value=%.1f, 是第%d个添加的元素\n", matrix[0][0].value, matrix[0][0].index);
    printf("位置(2,3): value=%.1f, 是第%d个添加的元素\n", matrix[2][3].value, matrix[2][3].index);
    printf("位置(1,1): value=%.1f, 是第%d个添加的元素\n", matrix[1][1].value, matrix[1][1].index);

    return 0;
}

代码解释

  • Point结构体:把元素的数值和添加顺序绑定在一起,解决了普通二维数组无法记录添加顺序的问题
  • static int c = 1:静态变量只会初始化一次,每次调用adds函数时都会自增,保证每个新添加的元素都有唯一递增的index
  • 矩阵边界注意:当前实现的是100x100的矩阵,使用时要确保line和column的取值范围在0~99之间,避免数组越界问题
  • 覆盖逻辑:如果向已经有元素的位置添加新值,会更新该位置的value,同时赋予最新的index,相当于记录最后一次修改该位置的顺序

内容的提问来源于stack exchange,提问作者MuchoG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:13:09