二维数组(矩阵matrix)基础

文章目录

  • 前言
  • 一、二维数组的初始化
    • 1.初始化方式
    • 2.二维数组初始化特性
  • 二、矩阵转置


前言

本文章是指针学习的先导知识,对于理解指针与数组间的关系有重要作用


提示:以下是本篇文章正文内容,下面案例可供参考

一、二维数组的初始化

1.初始化方式

1)由于二维数组在内存中是线性存放的,因此可以将所有的数据写在一个花括号内:

int a[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};

2)为了更直观地表示元素的分布,可以用大括号将每一行的元素括起来:

int a[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
//或者
int a[3][4] = {
{1,2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};

示例代码:
示例代码
运行结果:
在这里插入图片描述
二维数组内容可视化:
在这里插入图片描述

2.二维数组初始化特性

1)二维数组也可以仅对部分元素赋初值:

int a[3][4] = {{1}, {5}, {9}};

2)如果希望整个二维数组初始化为同一个数,那么直接在大括号里写一个数即可:

//将数组元素全部初始化为0
int a[3][4] = {0};

3)指定初始化的元素,只对数组中的某些指定元素进行初始化赋值,而未被赋值的元素自动初始化为0:

int a[3][4] = {[0][0] = 1, [1][1] = 2, [2][2] = 3};

4)第1维的元素个数可以不写,其他维度必须写上

int a[][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11,12}};

二、矩阵转置

代码:

#include <stdio.h>

int main() {
    int c[3][4] = {
        {1, 2, 3, 4},
        {5, 6, 7, 8},
        {9, 10, 11, 12}
    };
    printf("\n*******************************\n转置前:\n");
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 4; j++) {
            printf(" b[%d][%d] = %d ", i, j, c[i][j]);
        }
        printf("\n");
    }
    //输出转置:将i和j的值进行交换后,再将c[i][j]变为c[j][i]
    printf("\n*******************************\n转置后:\n");
     printf("\n*******************************\n");
     for(int i=0;i<4;i++){
         for(int j=0;j<3;j++){
             printf(" b[%d][%d] = %d ",i,j,c[j][i]);
         }
         printf("\n");
     }
    return 0;
}

此处效果相当于将矩阵逆时针旋转90°

运行结果:

*******************************
转置前:
 b[0][0] = 1  b[0][1] = 2  b[0][2] = 3  b[0][3] = 4
 b[1][0] = 5  b[1][1] = 6  b[1][2] = 7  b[1][3] = 8
 b[2][0] = 9  b[2][1] = 10  b[2][2] = 11  b[2][3] = 12

*******************************
转置后:

*******************************
 b[0][0] = 1  b[0][1] = 5  b[0][2] = 9
 b[1][0] = 2  b[1][1] = 6  b[1][2] = 10
 b[2][0] = 3  b[2][1] = 7  b[2][2] = 11
 b[3][0] = 4  b[3][1] = 8  b[3][2] = 12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值