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

C语言实现:随机数填充矩阵并沿水平轴镜像上下对称

用C语言实现矩阵上半部分水平镜像到下半部分

首先明确水平轴镜像的逻辑:对于矩阵的第i行,它在水平轴另一侧的镜像行是m - 1 - i。我们只需要处理上半部分的行(即i < m/2的行),将每行的所有元素复制到对应的镜像行即可。

实现步骤

  1. 为矩阵的上半部分(包括奇数行数的中间行)填充随机数
  2. 遍历上半部分的每一行,将其元素复制到对应的下半部分镜像行

完整代码示例

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

const int m = 3, n = 4;

void InputMatrix(int x[m][n])
{
    int i, j;
    for (i = 0; i < m; i++)
        for (j = 0; j < n; j++)
        {
            printf("Enter [%d][%d]:", i, j);
            scanf("%d", &x[i][j]);
        }
}

void PrintMatrix(int x[m][n])
{
    int i, j;
    printf("\n");
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
            printf("%d\t", x[i][j]);
        printf("\n");
    }
}

// 仅填充矩阵上半部分(含中间行)的随机数
void FillUpperMatrix(int x[m][n])
{
    int i, j;
    // 整数除法特性:奇数行数时包含中间行,偶数行数时到上半部分最后一行
    for (i = 0; i <= (m-1)/2; i++)
        for (j = 0; j < n; j++)
        {
            x[i][j] = rand() % 100 - 50;
        }
}

// 将上半部分沿水平轴镜像到下半部分
void MirrorHorizontal(int x[m][n])
{
    int i, j;
    // 遍历上半部分行(不包含中间行,避免重复处理)
    for (i = 0; i < m/2; i++)
    {
        int mirror_row = m - 1 - i;
        for (j = 0; j < n; j++)
        {
            x[mirror_row][j] = x[i][j];
        }
    }
}

int main()
{
    // 初始化随机数种子,确保每次运行生成不同随机数
    srand((unsigned int)time(NULL));
    
    int matrix[m][n];
    
    // 填充上半部分随机数
    FillUpperMatrix(matrix);
    printf("填充上半部分后的矩阵:");
    PrintMatrix(matrix);
    
    // 执行水平镜像
    MirrorHorizontal(matrix);
    printf("水平镜像后的矩阵:");
    PrintMatrix(matrix);
    
    return 0;
}

代码说明

  • FillUpperMatrix:仅填充矩阵上半部分,避免不必要的随机数生成
  • MirrorHorizontal:通过计算镜像行索引m-1-i,将上半部分行的元素直接复制到对应下半部分行
  • srand((unsigned int)time(NULL)):必须添加该代码初始化随机数种子,否则每次运行生成的随机数序列固定

测试示例(m=3,n=4)

填充上半部分后的矩阵:

-12	45	-3	22	
30	18	-5	9	
0	0	0	0	

水平镜像后的矩阵:

-12	45	-3	22	
30	18	-5	9	
-12	45	-3	22	

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 08:05:24