z19911121z 2015-10-28 03:13 采纳率: 50%
浏览 2894

C语言怎么实现matlab定义的空矩阵

图片说明
图片说明

简单的说怎么实现上面图片显示的功能?主要困扰我的就是怎么实现空矩阵,,,把矩阵赋值为NULL,显示的是0;如果只是开辟内存空间不赋值,显示的又是随机数。怎么解决啊?

#include
#include
#include
#include

void main()////
{
int M,M1,**M2;
int i, j,y;

M = (int **)malloc(sizeof(int *));
for (i = 0; i < 1;i++)
{
    for (j = 0; j < 3; j++)
    {
        *(M + i) = (double *)malloc(sizeof(double) * 3);
    }
}
for (i = 0; i < 3;i++)
{
    M[0][i] = 1;
}
scanf("%d", &y);

if (y>5)
{  //如何定义M1为空矩阵
    /*M1 = (int **)malloc(sizeof(int *));
    for (i = 0; i < 1; i++)
    {
        for (j = 0; j < 3; j++)
        {
            *(M1 + i) = (double *)malloc(sizeof(double) * 3);
        }
    }
    for (i = 0; i < 3; i++)
    {
        M1[0][i] = NULL;
    }*/
}
else
{
    M1= (int **)malloc(sizeof(int *));
    for (j = 0; j < 3; j++)
    {
        *M1 = (double *)malloc(sizeof(double) * 3);
    }

    for (i = 0; i < 3; i++)
    {
        M1[0][i] = 2;
    }

}
M2 = (int **)malloc(sizeof(int *) * 2);
for (i = 0; i < 2; i++)
{
    for (j = 0; j < 3; j++)
    {
        *(M2 + i) = (double *)malloc(sizeof(double) * 3);
    }
}
for (j = 0; j < 3; j++)
{
    M2[0][j] = M[0][j];
}

for (j = 0; j < 3; j++)
{
    M2[1][j] = M1[0][j];
}

//输出:
for (i = 0; i < 2; i++)
{
    for (j = 0; j < 3; j++)
    {
        printf("%d\t", M2[i][j]);
    }
    printf("\n");
}

}

图片说明

我需要的是输入6的话 显示的是1 1 1

  • 写回答

2条回答

  • anshiaixiaohei 2015-10-28 03:32
    关注

    图片说明图片说明图片说明

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器