當前位置:首頁 » 編程語言 » c語言怎麼交換二維字
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言怎麼交換二維字

發布時間: 2022-08-25 16:13:48

㈠ 我想知道c語言中二維數組怎麼交換。

以下程序使用指針實現,而且不只針對a[2][2]這樣的數組,可以針對a[3][2],或者a[4][2]...a[n][2]或者a[n][m]這樣任意數組的交換。
void main()
{
int a[2][2]={1,2,3,4};
int (*p)[2]=a;
int b;
int n=2; //行數
int m=2; //列數
for(int j=n-1,k=0;j>0;j--,k++)
for(int i=0;i<m;i++)
{b=*(p[j]+i);
*(p[j]+i)=*(p[k]+i);
*(p[k]+i)=b;

}
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cout<<p[i][j]<<endl;

system("pause");
}

㈡ C語言 如何用指針的方法 交換一個二維字元數組中的兩個元素

char str[20]={0};
char (*p)[20]=&a[0];
str=a[0]; //將a[0]處的值保存下來,以免交換時a[0]處的值丟失.
*p[0]=a[1];
*p[1]=str;
不知行不行 ,你自己去試一下.

㈢ C語言 如何將一個二維數組的值全部替換成另一個二維數組

要想把一個二維數組值全部替換成另一個二維數組的值,前提條件為二者的規模是相同的。即行數和列數分別相同。

假定均為M行N列,類型為int,即

inta[M][N],b[M][N];

要將a中所有值替換成b的值,有以下兩種方法。

1 逐一元素賦值。

使用雙重循環,對數組元素遍歷並賦值。

代碼如下:

inti,j;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
a[i][j]=b[i][j];//逐元素賦值。

2 整體復制內存。

由於二者結構相同,可以使用C庫函數memcpy來實現更高效的數據復制。

void*memcpy(void*dest,constvoid*src,size_tn);

從源src所指的內存地址的起始位置開始拷貝n個位元組到目標dest所指的內存地址的起始位置中。

調用該函數需要引用string.h頭文件。

代碼如下:

memcpy(b,a,sizeof(a));

只需要這樣一句就可以完成復制操作了。

㈣ C語言如何將二維數組中兩個元素交換位置

可以讓數組進行轉置來實現,參考如下:
public class TestTransposition {
int col;
int row;
/**轉換方法 將一個數組進行轉置
* 原理很簡單
*
* @param input
* @return
*/
public int[][] trans(int[][] input) {
int[][] output = null;
row = input.length;
if (row $amp;>amp;$nbsp;0) {
col = input[0].length;
}
output = new int[col][row];
for (int i = 0; i $amp; for (int j = 0; j $amp; output[j][i] = input[i][j];
}
}
return output;
}
public static void main(String[] args){
//若是需要得到轉置數組,應該調用上面的轉置方法
// int[][] in={{1,2,3},{3,4,5}};
// int[][] out=new TestTransposition().trans(in);
// for (int i = 0; i $amp; // for (int j = 0; j $amp; // System.out.print(out[i][j]);
// }
// System.out.println("");
// }
//若只是想輸出得到效果 這應該是可以的
int[][] in={{1,2,3},{3,4,5}};
for(int i=0;i<in[0].length;i++){
for(int j=0;j<in.length;j++){
System.out.print(in[j][i]);
}
System.out.println("");
}
}
/*a[2][3]---->a[3][2]
* a[0][0]---->a[0][0]
* a[0][1]---->a[1][0]
* a[0][2]----->a[2][0]
* a[1][0]---->a[0][1]
* a[1][1]---->a[1][1]
* a[1][2]----->a[2][1]
*/
//故此 初步想法應是通過反向循環,即先循環列,在循環行來實現。

}

㈤ c語言中如何實現兩個字元的交換

有多種方法:
1
最常用的,中間變數法。
使用第三個中間變數交換a,b的值。
char
a='-',
b='+',c;
c
=
a;
a
=
b;
b
=
c;
實現a,b值的交換。
2
利用加減法交換。
交換a,b值可以用
a+=b;
b=a-b;
a=a-b;
3
利用異或交換:
交換a,b值的代碼為:
a^=b;
b=a^b;
a=a^b;

㈥ C語言如何將二位字元串數組中的兩個元素交換位置

#include<stdio.h>
#include<string.h>
voidmain(){chars[2][80]={"aaa","bbbb"},charbuf[80];
strcpy(buf,s[0]);strcpy(s[0],s[1]);strcpy(s[1],buf);//類似於整數變數交換值
printf("%s %s ",s[0],s[1]);
}

㈦ 在c語言二維數組中怎樣交換兩個數組元素中的字元串,請寫代碼.

int strcpy(char *s1,const char *s2);
開辟一個緩沖區,比如
char buff[100];//假設你的字元串不超過這么多

而你的而為數組為
char **argv;
其中argv[0] = "this is the first string";
argv[1] = "this is the seconde string";

你只須調用如下
strcpy(buff,argv[0]);
strcpy(argv[0],argv[1]);
strcpy(argv[1],buff);

一下是完整代碼,並測試過
#include <stdio.h>
#include <string.h>

char argv[2][100]={ "This is the first string","This is the second string"};
// 存儲字元串的二維數組,每個字元串最長為99個位元組
char buff[100];
//緩沖區
int main()
{
printf("轉換前:\n");
printf("argv[0] = %s\n",argv[0]);
printf("argv[1] = %s\n",argv[1]);

strcpy(buff,argv[0]);
strcpy(argv[0],argv[1]);
strcpy(argv[1],buff);

printf("轉換後:\n");
printf("argv[0] = %s\n",argv[0]);
printf("argv[1] = %s\n",argv[1]);

return 0;
}