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

C语言如何实现3个3×3整型数组的随机赋值、相加与打印?

C语言3×3数组对应位置求和实现方案

原代码存在的问题

  • 数组访问越界:C语言中3×3数组的合法下标范围是0~2,原代码初始化c数组时使用的a[3][3]、b[3][3]属于越界访问,会读取到未知的内存值
  • 初始化逻辑错误:C语言不支持在数组定义阶段通过{a[i][j]+b[i][j]}这种写法批量计算所有二维数组元素的值,且初始化c数组时a、b数组还未填充随机值,根本拿不到正确的运算数据
  • 打印逻辑错误:printf函数没有写%d整型格式占位符,传入的数组参数无法被正常输出
  • 缺失必要头文件:代码中用到的输入输出、随机数生成、时间函数都需要引入对应头文件,否则无法通过编译
  • 逻辑顺序错误:求和操作必须放在a、b数组完成随机数赋值之后执行,原代码完全缺失c数组的逐元素求和逻辑

正确实现代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main () {
    int i, j;
    int a[3][3];
    int b[3][3];
    int c[3][3];

    // 初始化随机数种子,整个程序仅需调用1次,不要放在循环内
    srand(time(NULL));
    printf("数组元素打印结果:\n");
    printf("a数组元素\tb数组元素\tc数组元素(a+b)\n");
    for (i = 0; i < 3; i++) {
        for(j = 0; j < 3; j++) {
            // 给a、b数组填充1~10范围的随机整数
            a[i][j] = rand() % 10 + 1;
            b[i][j] = rand() % 10 + 1;
            // 按规则计算c数组对应位置的和
            c[i][j] = a[i][j] + b[i][j];
            // 带格式占位符打印三个数组对应位置的元素
            printf("%d\t\t%d\t\t%d\n", a[i][j], b[i][j], c[i][j]);
        }
    }
    return 0;
}

关键说明

  • 随机数种子srand(time(NULL))必须放在所有rand()调用之前,且不能放在循环内部,否则会因为时间戳更新精度问题生成大量重复随机数
  • 二维数组遍历必须严格控制下标在合法范围内,禁止访问超出数组长度的下标,避免出现内存访问错误
  • 使用printf打印变量时必须匹配对应类型的格式占位符,整型对应%d,否则无法得到预期输出

内容的提问来源于stack exchange,提问作者sayın

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:57:21