当前位置:首页 » 编程语言 » c语言如何将数组转换为列表
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言如何将数组转换为列表

发布时间: 2023-06-12 03:19:35

1. c语言二维数组。行列转换

#include "stdio.h"
#include "malloc.h"

void main()
{
int **a;
int row,col;
int i,j;

printf("Please input row:\n");
scanf("%d",&row);
fflush(stdin);
printf("Please input col:\n");
scanf("%d",&col);
fflush(stdin);
printf("Please input data:\n");

a=(int**)malloc(row*sizeof(int));
for(i=0;i<row;i++)
a[i]=(int*)malloc(col*sizeof(int));
for(i=0;i<row;i++)
for(j=0;j<col;j++)
{
scanf("%d",&a[i][j]);
fflush(stdin);
}

printf("Result:\n");

for(i=0;i<col;i++)
{
for(j=0;j<row;j++)
printf("%d ",a[j][i]);
printf("\n");
}
}

2. 初学编程,大家帮忙看下这道c语言题怎么做万分感谢

先给你第一题的,网络知道的这个编辑器真的不适合粘贴代码

#include<stdio.h>

#include<string.h>

#define MAX_ARRAY_SIZE 1024

#define MAX_MAP_SIZE 10


/* 输入数组,连续输入,如:aedabcdaeas */

int inputArray(char *buff) {

int len = 0;

/* 使用fgets来防止缓冲区溢出 */

if (NULL == fgets(buff, MAX_ARRAY_SIZE, stdin)) {

return 0;

}

len = strlen(buff);

/* fgets 返回的数据可能是换行符结尾的,也可能不是,对换行符结尾的进行处理 */

if (buff[len - 1] == ' ') {

buff[len - 1] = '';

len -= 1;

}

return len;

}

int processArray(int len, char *chars, char *map) {

/* 保存反向映射便于查找 */

int tmap[128];

int maplen = 0;

int i = 0;

char *p = chars;

memset(tmap, -1, sizeof(int) * 128);

for (i = 0; i < len; i++) {


if (*p > 'z' || *p < 'a') {

return -*p;

}

if (tmap[*p] == -1) {

if (maplen >= MAX_MAP_SIZE) {

return -1;

}

tmap[*p] = maplen;

map[maplen] = *p;

maplen += 1;

}

*p = '0' + tmap[*p];

p++;

}

return maplen;

}

int main() {

/* 用于输入的字符数组 */

char buff[MAX_ARRAY_SIZE];

/* 用于保存转换规则的数组 */

char map[MAX_MAP_SIZE];

/* 保存字符数组长度 */

int len = 0;

int maplen = 0;

int i = 0;


len = inputArray(buff);


if (len <= 0) {

puts("Cancelled");

} else if (len < 10) {

puts("Not enough 10 chars");

} else {


maplen = processArray(len, buff, map);

if (maplen >= 0) {

puts("转换结果:");

for (i = 0; i < len; i++) {

printf("%c ", buff[i]);

}

puts("");

puts("映射规则:");

for (i = 0; i < maplen; i++) {

printf("%c -> %d ", map[i], i);

}

puts("");

} else if (maplen == -1) {

puts("Different Chars count is OverLimit of 10");

} else if (maplen <= -2) {

printf("Unexpected char %c ", -maplen);

}

}

return 0;

}

执行结果:

3. C语言一个二维数组如何转换成一个新的一维数组

当然可以了。

例如:


#include<stdio.h>voidmain(){inti,j,k=0,a[2][2]={1,2,3,4},b[4];for(i=0;i<2;i++)for(j=0;j<2;j++){b[k]=a[i][j];k++;}for(k=0;k<4;k++)printf("%d",b[k]);}

运行结果:

就是将一个2×2的二维数组的值按顺序赋给一个一维数组。

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

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

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

5. C语言中如何编程:将两行三列的二维数组转换为三行两列的二维数组

利用矩阵转置就行
#include <stdio.h>
#define MAX 20
int m,n;
void transpose(double a[][MAX],double b[][MAX])
{
int i,j;
for(i=0;i<MAX;i++)
for(j=0;j<MAX;j++)
b[i][j]=a[j][i];
}

void main()
{
int i,j;
double a[MAX][MAX],b[MAX][MAX];
puts("输入矩阵的行,列:");
scanf("%d %d",&m,&n);
puts("输入矩阵元素:");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%lf",&a[i][j]);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(a[i][j]-int(a[i][j])!=0)
printf("%lf ",a[i][j]);
else
printf("%d ",int(a[i][j]));
}
puts("");
}
transpose(a,b);

puts("转置后的矩阵为:");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(b[i][j]-int(b[i][j])!=0)
printf("%lf ",b[i][j]);
else
printf("%d ",int(b[i][j]));
}
puts("");
}
}

6. c语言中如何将一个一维字符数组数组转化为二维字符数组

如下程序给你一点思路吧!有不明白的地方可以追问!
#include<stdio.h>
int main(void)
{
char i,j,str1[12]="hello world",str2[2][6]={0};
printf("以下操作演示将一维字符数组str1[12]转化为二维字符数组str[2][6]!\n");
for(i=0;i<6;i++) str2[0][i]=str1[i];
for(i=6;i<12;i++) str2[1][i-6]=str1[i];
printf("打印str1的内容!\n");
puts(str1);
printf("打印str2的内容!\n");
for(i=0;i<2;i++)
for(j=0;j<6;j++)
printf("%c",str2[i][j]);
return 0;
}