㈠ 我想知道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;
}