问题描述
- C语言怎么实现matlab定义的空矩阵
-
简单的说怎么实现上面图片显示的功能?主要困扰我的就是怎么实现空矩阵,,,把矩阵赋值为NULL,显示的是0;如果只是开辟内存空间不赋值,显示的又是随机数。怎么解决啊?
#include
#include
#include
#includevoid 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