导航:首页 > 创造发明 > c创造二维数组静态

c创造二维数组静态

发布时间:2021-11-06 23:53:27

⑴ 用c语言创建一个二维数组a[m][n],要求m,n从键盘输入

#include <stdio.h>
#include <malloc.h>
#include <time.h>
#include <stdlib.h>
int main()
{
int m,n;
int** a;
int i,j;
printf("输入m和n,空格分隔:");
scanf("%d%d",&m,&n);
a=(int**)malloc(sizeof(int*)*m);
for(i=0;i<m;i++)
{
a[i]=(int*)malloc(sizeof(int)*n);
}
srand(time(0));
printf("随机填充数组如下:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
a[i][j]=rand()%100;
printf("%-4d",a[i][j]);
}
printf("\n");
}
for(i=0;i<m;i++)
free(a[i]);
free(a);
return 0;
}

⑵ C语言如何动态分配二维数组

动态分配二维数组:

void main(int argc, char * argv[])

{

int NC=100, NR=200;

int i,j;

char **a; // a[NR][NC] -- *a[NR] -- a[j][i]

a = (char **) malloc(sizeof(char *) * NR);

for (j=0;j<NR;j++){

a[j] = (char *) malloc(sizeof(char) * NC);

}

// 释放空间: free(a);

编译错误是因为p[j]=(char *)malloc,而不是题目的(char *)malloc(n*sizeof(char))。

(2)c创造二维数组静态扩展阅读:

二维数组的动态分配

二维数组A[m][n],这是一个m行,n列的二维数组。设a[p][q]为A的第一个元素,即二维数组的行下标从p到m+p,列下标从q到n+q,按“行优先顺序”存储时则元素a[i][j]的地址计算为:

LOC(a[i][j]) = LOC(a[p][q]) + ((i − p) * n + (j − q)) * t

按“列优先顺序”存储时,地址计算为:

LOC(a[i][j]) = LOC(a[p][q]) + ((j − q) * m + (i − p)) * t

存放该数组至少需要的单元数为(m-p+1) * (n-q+1) * t 个字节。

⑶ C++静态成员二维数组的初始化问题

别这么初始化,一般是用 memset(arr,0,sizeof(arr)); 初始化数组的。
你的提问应该改成:char c::arr[255][16] = {{0}}; 你试一下吧。

⑷ c语言中定义一个二维数组

简单点说 就不给代码了 累。。。
思路就是用for循环 两层循环就ok了
for(int i=0;i<多少多少;i++)
{
for(int j=0;j<多少多少;j++)

输入那个语句忘了。。。汗。。。

⑸ c语言如何动态创建二维数组

既然是动态创建,那么,所创建的二维数组的行、列数应该具有“普适”性,即,应由“用户”确定二维数组的规模。这是有难度的。因为,二维数组要牵扯行指针,且需要固定每行的列元素个数,用这种思路就没有办法达到“普适”。
为此,必须清醒地知道,所谓二维数组,其元素在内存中依然是以一维的方式存放的。说实话,二维数组本质上是不存在的。
既然如此,那么,“构造”一个所谓的二维数组,只要能提供足够实用的函数(工具)操作这个二维数组就可以了。
综上,接受由用户决定的二维数组行、列值,申请一个一维数组的空间,按照二维数组方式进行定位和操作就可以了。
为简便起见,我用如下定义,你可以更改里面的类型,以适应自己的需要:
typedef int USER_TYPE;

// 定义一个控制二维数组(矩阵)的“控制头”,由三个成员组成

typedef struct MATRIX
{
USER_TYPE *data; // 真正用来存储二维数组元素的空间

int Row; // 二维数组行数

int Col; // 二维数组列数

}MATRIX;

MATRIX *initMatrix(int row, int col); // 初始化二维数组

USER_TYPE getElementAt(MATRIX matrix, int i, int j); // 取得指定下标的元素

void setElementAt(MATRIX matrix, int i, int j, USER_TYPE val); // 给指定下标的元素赋值
void destroyMatrix(MATRIX *matrix); // 销毁二维数组

void destroyMatrix(MATRIX *matrix)
{
free(matrix->data);
free(matrix);

}

void setElementAt(MATRIX matrix, int i, int j, USER_TYPE val)
{
matrix.data[i*matrix + j] = val;

}

USER_TYPE getElementAt(MATRIX matrix, int i, int j)
{
return matrix.data[i*matrix.Col + j];

}

MATRIX *initMatrix(int row, int col)
{
MATRIX *mp;

mp = (MATRIX *)malloc(sizeof(MATRX));
mp->data = (USER_TYPE *)malloc(sizeof(USER_TYPE) * row * col);
mp->Row = row;
mp->Col = col;

return mp;

}
把上面的函数当成工具,完成二维数组初始化、赋值、取值等一系列操作,如果需要比较,还需要编写比较的函数。

⑹ c语言怎么创建二维数组

int a[m][n];//就表示一个m行n列的整型二维数组
在c语言中数组的下标是从0开始的所以,数组a的元素个数可以表示为:a[0][0]-a[m-1][n-1]

例如:

#include<stdio.h>
intmain()
{
inta[3][2],i,j;//定义一个3行2列的整型二维数组a

for(i=0;i<3;i++)//依次给二维数组赋值
for(j=0;j<2;j++)
scanf("%d",&a[i][j]);
printf(" ");
for(i=0;i<3;i++){//输出二维数组
for(j=0;j<2;j++)
printf("%d",a[i][j]);
printf(" ");
}
return0;
}
/*
运行结果:
12
34
45

12
34
45
*/

⑺ C语言静态二维数组怎么建(如图)

float a[10][11] ;
int i , j ;

for( i = 0 ; i < 10 ; i++) //外层循环控制行
for ( j = 0 ; j <11 ; j++) //内层循环控制列
scanf("%f",&a[i][j]);

⑻ 求解释C语言二维数组及静态变量

for(i=0;i<8;i++)
x+=a[i][j];


你在累加元素值的时候,j的值始终是4,而二维数组索引为4的列的元素的值你没动过,都是初值0

⑼ C语言 如何动态创建二维数组

这样的方法可行,不过要是题目要求输入m和n,然后再定义二维数组a[m][n],那就行不通了。
你可以这样做:(以int型为例)
int **a;
int m,n,i;

scanf("%d%d",&m,&n);

a=(int**)malloc(m*sizeof(int*)); /*malloc函数在stdlib.h里面,用的时候加入这个头文件*/
for(i=0;i<m;i++)
a[i]=(int*)malloc(n*sizeof(int));

/*这样以后你就可以把a当作二维数组a[m][n]来用了。。

⑽ c语言菜鸟求救!!! 在循环中创建新二维数组。。。好用的多给分!!

void *gridtoarray(int R, int C, int L)
{
return calloc( L, R * C * sizeof( char ) );
}

阅读全文

与c创造二维数组静态相关的资料

热点内容
车位使用权范本 浏览:414
云南统计师证书查询 浏览:679
泉峰马鞍山 浏览:985
军创造句 浏览:105
再见吾爱成果 浏览:620
2014年矛盾纠纷排查调处工作计划 浏览:402
佛山市盈智知识产权代理有限公司 浏览:120
黄山五福纠纷 浏览:484
熊胆粉野宝说明书有效期 浏览:867
张磊侵权事件进展 浏览:587
民法有关于物权的规定吗 浏览:337
公共卫生服务其他岗位人员职责 浏览:509
旅顺工商局举报电话 浏览:741
房子年限怎么算 浏览:965
营业执照最有效期4几年 浏览:402
创造与魔法湛蓝星空发 浏览:100
创造与魔法剑齿虎具体位置 浏览:229
质权合同工商局版本 浏览:461
商铺转让合同怎么写 浏览:198
智威创造代理 浏览:89