当前位置:首页 » 编程语言 » 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;
}