您的位置:首页 > 编程语言 > C语言/C++

【C语言】交换两个数组内容(数组等大)

2015-09-26 19:15 330 查看
1.加法,异或实现

#include<stdio.h>

int main()
{
int a[10],b[10];
int i=0;
printf("请输入数组a:\n");
for(i=0;i<sizeof(a)/sizeof(a[0]);i++)
scanf("%d",&a[i]);
printf("请输入数组b: \n");
for(i=0;i<sizeof(a)/sizeof(a[0]);i++)
scanf("%d",&b[i]);
for(i=0;i<sizeof(a)/sizeof(a[0]);i++)
{
a[i]=a[i] + b[i];
b[i]=a[i] - b[i];
a[i]=a[i] - b[i];
}
printf("now,a[10]= ");
for(i=0;i<sizeof(a)/sizeof(a[0]);i++)
printf("%d  ",a[i]);
printf("\nnow,b[10]= ");
for(i=0;i<sizeof(a)/sizeof(a[0]);i++)
printf("%d  ",b[i]);
printf("\n");
return 0;
}

实现还可以使用异或“ ^ ”:
a[i]=a[i] ^ b[i];
b[i]=a[i] ^ b[i];
a[i]=a[i] ^ b[i];

2.使用strcpy函数实现:

#include<stdio.h>

int main()
{ char str1[20];
char str2[20];
char str3[20];
puts("请输入str1的字符:\n");
gets(str1);
puts("请输入str2的字符:\n");
gets(str2);
strcpy(str3,str1);
strcpy(str1,str2);
strcpy(str2,str3);
puts("互换后的str1数组为:\n");
puts(str1);
printf("\n");
puts("互换后的str2数组为:\n");
puts(str2);
printf("\n");
return 0;
}

3. 引入第三个数组进行数组各元素的交换

#include<stdio.h>

int main()
{ int i,j,k;
int A[10];
int B[10];
int C[10];
printf("请输入A数组的内容:\n");
for(i=0;i<10;i++)
{scanf("%d",&A[i]);}
printf("请输入B数组的内容:\n");
for(j=0;j<10;j++)
{ scanf("%d",&B[j]);}

for(k=0;k<10;k++)        //   引入变量,进行交换
{
C[k]=A[k];
}
for(i=0;i<10;i++)
{
A[i]=B[i];
}
for(j=0;j<10;j++)
{
B[j]=C[j];
}
printf("互换后的A数组为:\n");
for(i=0;i<10;i++)
{printf("%d ",A[i]);}
printf("\n");
printf("互换后的B数组为:\n");
for(j=0;j<10;j++)
{ printf("%d ",B[j]);}
printf("\n");
return 0;
}

4.调用指针函数进行元素的交换

#include<stdio.h>

int main()
{ int i,j,k;
int A[10];
int B[10];
int C[10];
printf("请输入A数组的内容:\n");
for(i=0;i<10;i++)
{scanf("%d",&A[i]);}
printf("请输入B数组的内容:\n");
for(j=0;j<10;j++)
{ scanf("%d",&B[j]);}
for(k=0;k<10;k++)
{ swap(&A[k],&B[k]);
}
printf("互换后的A数组为:\n");
for(i=0;i<10;i++)
{printf("%d ",A[i]);}
printf("\n");
printf("互换后的B数组为:\n");
for(j=0;j<10;j++)
{ printf("%d ",B[j]);}
printf("\n");
return 0;
}

int  swap(int *a,int* b)
{  int t;
t=*a;
*a=*b;
*b=t;
}


本文出自 “Vs吕小布” 博客,请务必保留此出处http://survive.blog.51cto.com/10728490/1698449
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: