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

问题描述

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("%dt", M2[i][j]);
    }
    printf("n");
}

}

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

解决方案

解决方案二:

你可以定义一个int* 的数组来实现目的
比如:
typedef int* item;
item **M;

输出的时候判断一下
如果m2[i][j]==NULL
则输出空格而不是值
否则输出*(m2[i][j])

时间: 2024-10-27 18:19:49

c语言-C语言怎么实现matlab定义的空矩阵的相关文章

c语言-C语言循环链表的头节点是定义成变量好,还是定义成结构体好?

问题描述 C语言循环链表的头节点是定义成变量好,还是定义成结构体好? C语言循环链表的头节点是定义成变量好,还是定义成结构体好? 解决方案 这不过是两个不同的方式而已,并没有什么本质上的不同. 解决方案二: 定义成什么,要看你节点中要保存的数据是什么.一般来说,是需要一个结构体的.因为除了一个有效数据外,你还需要链表的指针. 解决方案三: 都可以,不过建议定义为结构体,应为可以和后面的节点做同样的操作. 解决方案四: 个人推荐使用结构体,作为头结点,其存储的信息较多.单向链表为例,他有可能要存储

c语言-C语言字符串数组定义问题

问题描述 C语言字符串数组定义问题 #include int main() { char *ptr[10]; 为什么这样运行时会出错? gets(ptr[0]); } #include int main() { char ptr[10][20]; 而这样运行时则没有问题? gets(ptr[0]); } char *p[10] 与 char p[10][20] 之间有什么不同? 还是说在这里是gets()函数用错了? 万分感谢! 解决方案 哥们,你的第一个定义的是数组指针,第二定义的是一个二维数

win7如何更改语言 电脑语言改成英文的方法

今年evad3rs团队发布的iOS 7完美越狱工具有些特殊,中国版iOS7完美越狱工具中,捆绑有太极助手插件,此插件类似流氓插件,容易导致iOS越狱设备出现白苹果现象(国外版无此插件).目前比较好的解决办法是:在使用电脑中越狱的时候,将电脑语言改为英文,可绕过该插件.但很多电脑小白用户还不知道如何更改电脑语言,因此本文将为大家详细介绍下电脑语言更改教程. 如何更改电脑语言 电脑语言改为英文方法 以下笔者以Windows 7系统截图演示,教大家如何更改电脑语言.其他XP或者Win8系统设置方法与此

c语言-C语言递归的内存释放问题

问题描述 C语言递归的内存释放问题 我用C语言实现alpha-beta极小极大算法来做一个棋类游戏的AI,博弈树是用递归的方式构造的,然后发现AI每下一步程序的内存都在增大,原来是因为递归没有释放内存. 耗内存的指针是棋盘 char ** chessboard; 于是我在递归函数的每一个return之前都把 chessboard 给释放了,发现内存还是一直在涨,求解.. 解决方案 把递归函数实现贴出来. 解决方案二: 估计释放的不全.二级指针要分两级释放. 解决方案三: 二级指针的释放是要分两步

安卓app多语言多语言切换

问题描述 安卓app多语言多语言切换 请问大神们可以帮助我吗?在我的程序里面我想实现多语言切换,调用系统的语言设置, 改变我自己的app语言,但是不改变系统的显示语言,这样怎么实现? 解决方案 http://blog.csdn.net/forrey/article/details/44547813 去这里看看说不定对你有帮助! 解决方案二: http://my.oschina.net/jack1900/blog/290694http://blog.csdn.net/cento123/articl

c语言-C语言实现文件合并的问题

问题描述 C语言实现文件合并的问题 之前已经编写了一个程序,可以实现.txt的文件内容追加写,可是对两个视频操作的时候就行不通了.但是又不知道问题出现在哪里,视频能合并,文件大小是两个文件的和,可是新和成的文件内容只显示一个文件的内容.这个要怎么解决. 解决方案 视频文件不是简单两个文件叠加.视频文件包含复杂的结构,文件头部分指定了这个视频的格式,有多少帧,存储的偏移地址是什么你简单合并两个文件,播放器只知道根据第一个文件的文件头找数据,附加在后面的第二个文件是读不到的.你需要重新编码得到一个完

c语言-C语言的文件问题????????

问题描述 C语言的文件问题???????? 我如果想往C的文件里写入数据,我要事先手动建立一个.txt文件吗?还是有其他方法自动创建? 解决方案 O(NlgK)问题优先队列实现文件C语言C语言中头文件相互包含问题c语言中,文件路径读取问题 解决方案二: 不用手动建立文件的,c语言里有很多文件操作函数,可以自动建立文件,并可以写入你想写入的数据 解决方案三: 我也想提这样的问题.不过既然是C的文件,我觉得应该是创建.C文件吧,.TXT是文本格式的,估计是不行的. 解决方案四: c语言中可以通过代码

合并-Matlab如何将数据矩阵分成若干段

问题描述 Matlab如何将数据矩阵分成若干段 我现在有一个206*2896的波形数据,现在需要将每一行分成18段,再将18段中每段的最大值求出,最后把结果合并到一个矩阵当中,如何编写这个循环? 解决方案 http://zhidao.baidu.com/link?url=GoL2ht8RyJ1FHaujQh6r70sB46cRSgcm4mi-FxSj6MhCrduBmujdiF3gGDb121JGKnbCJKM0OAOtFJ4qWziM8-zqj_k4PSoL1Qh81SGwEeW 解决方案二:

c语言-C语言中分号的使用,不了解定义属不属于语句(初学者)

问题描述 C语言中分号的使用,不了解定义属不属于语句(初学者) 各位前辈,小生初学C语言,目前自学中,但是在看程序的过程中卡在分号的地方 #include<stdio.h>int main(){int max(int x int y);int abc;scanf(""%d%d""&a&b);c=max(ab);printf(""max=%dn""c);return 0;}int max(int x