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

C语言如何在9×9的0-1矩阵中放置最多10个随机的1?

你当前的代码对每个位置独立生成随机0/1,无法控制1的总数量,通常运行后1的数量会在40个左右,远高于要求的最多10个。

实现思路
  • 先初始化一个全为0的9×9二维数组
  • 随机生成行列坐标,最多往数组中10个不重复的位置放置1
  • 遍历数组打印最终矩阵
完整可运行代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    // 初始化全0的9*9矩阵
    int matrix[9][9] = {0};
    int count = 0;
    // 设置随机种子,保证每次运行结果不同
    srand(time(NULL));
    // 如果需要1的数量是0~10随机,可加下行代码,把循环条件里的10换成target
    // int target = rand() % 11;

    // 放置10个1,若要最多10个随机数量替换10为上面的target即可
    while (count < 10) {
        // 随机生成0~8范围的行号和列号
        int row = rand() % 9;
        int col = rand() % 9;
        // 仅当前位置为0时放置1,避免重复计数
        if (matrix[row][col] == 0) {
            matrix[row][col] = 1;
            count++;
        }
    }

    // 打印矩阵
    for (int i = 0; i < 9; ++i) {
        for (int j = 0; j < 9; ++j) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }

    return 0;
}
关键说明
  • 初始化数组时写int matrix[9][9] = {0}即可让所有元素默认初始化为0,不需要额外循环赋值
  • 放置1前先判断对应位置是否为0,避免同一个位置被多次计数,保证1的数量符合要求
  • srand(time(NULL))仅需在程序开头调用一次即可,不要放在循环内,否则会导致随机结果重复

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:57:01