當前位置:首頁 » 編程語言 » 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;
}