C语言一维数组转二维数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言一维数组转二维数组相关的知识,希望对你有一定的参考价值。

假设,一维数组有25个元素 分别是 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35把它转成二维数组 排成 5X5的矩阵且从小到大排列 如: 11 12 13 14 1516 17 18 19 2021 22 23 24 2526 27 28 29 3031 32 33 34 35 写出这段程序 用Tubor C写 把一维数组a[25] 转换成 b[5][5] 最好有有说明 详细点

1、我们先是定义一个二级指针和行列变量【int **array,row,column;】。

2、然后我们编写输入行列的语句。

3、为其开辟一个一个一维装着一维数组的数组。

4、接下来我们使用【array[i]=(int *)malloc(sizeof(int)*column);】为数组再次产生一个新的装着数组的数组。

5、然后我们就可以为其赋值并输出。

6、运行程序后我们就可以看到这样的效果了。

参考技术A

1、一维数组的声明包括如下结构:类型变量名[N],其中N是你要定义的一维数组长度。

下面我们就通过一个例子声明一个int类型的数组,并且进行数组的赋值以及输出。

2、在cpp文件main()函数中输入以下语句。

inta[10];//声明一维整形数组,数组长度为10。

for (int i =0;i<10;i++)

a[i]=i;

cout<<i<<endl;

return0;

然后ctrl+F5运行,我们可以看到如下结果:在i行输出的是a[i]。

3、二维数组的声明结构:类型变量名[M][N],其中M代表行数,N代表列数,下面我们也通过一个例子声明一个整形(int)的二维数组,并且进行相应的赋值与输出。

4、在main()函数中输入以下代码。

inta[4][5];//二维数组声明。

inti,j;

for ( i =0;i<4;i++)

for (j=0;j<5;j++)

a[i][j]=(i+1)+(j+1);

cout<<a[i][j]<<"  ";

cout<<endl;

return0;

然后ctrl+F5运行,结果输出的内容是二维数组的每个元素,二维数组就是矩阵,数组的每个元素是相应的行号和列号的和。

参考技术B int a[25]=11,12.....;//大括号里面是25个数,偷懒不抄了
int b[5][5];//二维数组
for(int i=0;i<5;i++)

for(int j=0;j<5;j++)

b[i][j]=a[i*5+j];//注意理解下a[i*5+j]

参考技术C #include <stdio.h>
// 实现从小到大的排序
void sort(int arr[], int n)

int i, j, temp;
for( i = 0; i < n; i++)

for(j = 0; j < i; j++)

if(arr[i] < arr[j])

temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;



// 将一维数组转化为二维数组
void convert(int array[], int result[][5])

int i, j, temp, point = 0;
for( i = 0; i < 5; i++)
for(j = 0; j < 5; j++)
result[i][j] = array[ point++];

void print(int result[][5])

int i, j, temp;
for( i = 0; i < 5; i++)

for(j = 0; j < 5; j++)
printf("%d\t", result[i][j]);
printf("\n");


int main()

int array[25] = 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35;
int result[5][5];
sort(array, 25);
convert(array, result);
print(result);
return 0;

希望你看明白,不懂再问啊。
参考技术D

代码如下:

void fun(char *a)

int b[3][3]=0;

int i=0;

int j=0;

while(*a)

if(*a == '\\n')

i++;

j=0;

b[i][j++]=*a-'0';

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

c语言怎么把二维数组的字符串给到一维数组?

#include <stdio.h>
int main()
char a[15]="你好";
char b[3][15]="323","223","123";
a=b[2];//这里怎么办
printf("%s",a);

按元素赋值:
遍历一维数组,并将每个元素赋值到二维数组的对应元素上。
或者遍历二维数组,将每个元素赋值为一维数组对应值上。
优点为操作灵活,可以按照需要任意赋值。
2 当一维数组和二维数组类型相同,而且赋值顺序与一维数组中的存储顺序完全相同时,可以用memcpy的方式,直接一次性赋值。
如一维数组为a,二维数组为b,基础类型为TYPE,需赋值元素个数为n,可以调用
memcpy(b,a,sizeof(TYPE)*n);
该方法有点为操作简单,执行效率高。
不过所需满足的前提条件多。在满足上述所有条件时,用memcpy的方式更为简单。

个就是apply的一个巧妙的用处,可以将一个数组默认的转换为一个参数列表([param1,param2,param3] 转换为 param1,param2,param3) 这个如果让我们用程序来实现将数组的每一个项,来装换为参数的列表。

参考技术A 字符串不能用赋值号(=)赋值。
有两种方法,一是用库函数strcpy(),二是一个一个字符赋值。第一种方法,前面已经有答友写了程序。下面说第二种方法。
不用库函数,可以这样写:
#include <stdio.h>
int main()
char a[15]="你好";
char b[3][15]="323","223","123";
int i;
for(i=0;a[i]=b[2][i];i++);
printf("%s\n",a);

也很简单。
有什么问题请留言。
参考技术B

使用内存复制函数

memcpy(a, b[2], strlen(b[2]) * sizeof(char) + 1);

格式:

memcpy ( 目标地址 , 源地址 ,内存字节长度);

其中

strlen(b[2]):计算b[2]行地址开始的字符串长度(不含结束符)

sizeof(char):跨编译器跨环境的写法,返回char类型的字节宽度。

两者相乘得到字符串占用内存长度(字节),最后补一个结束符的长度。


参考技术C

这个需要调用字符串复制函数strcpy,像这样:

#include <stdio.h>

#include <string.h>

int main()

char a[15]="你好";

char b[3][15]="323","223","123";

strcpy(a,b[2]);

printf("%s",a);

return 0;

截图:

以上是关于C语言一维数组转二维数组的主要内容,如果未能解决你的问题,请参考以下文章

JS 数值操作 一维数组转二维数组快捷操作

c语言怎么把二维数组的字符串给到一维数组?

在opencv中,如何将二维数组转化为一副图像进行显示?

C语言中怎么把一维数组赋给另外一个一维数组

Python,例如有两个一维数组,怎么变成二维数组?

opencv由二维数组转换图像问题