数组中内容(数字,字符,字符串)交换,不引用第三变量

来源:互联网 发布:淘宝女式大衣 编辑:程序博客网 时间:2024/06/05 12:46
//数组中数字交换
#include<stdio.h>
#include<stdlib.h>
#define n 5
void put(int arr[],int i);
void change(int arr1[],int arr2[]);
void out(int arr[]);
int main()
{
 int arr1[n],arr2[n];
 int i=0;
 //输入
 printf("输入数组1的%d个数:\n",n);
 put(arr1,i);
 printf("输入数组2的%d个数:\n",n);
    put (arr2,i);
 change(arr1,arr2,i);
 printf("交换后结果:\n");
 //输出
 printf("\n数组1:");
 out (arr1);
 printf("\n数组2:");
 out (arr2);
 
 system("pause");
 return 0;
}
void change(int arr1[],int arr2[],int i)
{
 //使用第三变量
 int temp=0;
    for(i=0;i<n;i++)
 {
  temp=arr1[i];
  arr1[i]=arr2[i];
  arr2[i]=temp;
 }

 /*
 //使用异或运算
 for(i=0;i<n;i++)
 {
 arr1[i]=arr1[i]^arr2[i];
 arr2[i]=arr1[i]^arr2[i];
 arr1[i]=arr1[i]^arr2[i];
 }
 */

}
void out(int arr[])
{
 int i=0;
 for(i=0;i<n;i++)
 {
    printf(" %d ",arr[i]);
 }
}
void put (int arr[],int i)
{
    for(i=0;i<n;i++)
 scanf("%d",&arr[i]);
}

//引深
//数组中字符和字符串交换
#include<stdio.h>
#include<stdlib.h>
#define N 5
void put(char arr[],int i);
void change(char arr1[],char arr2[],int i);
void out (char arr[],int i);
int main()
{
 char arr1[N],arr2[N];
 int i=0;
 char arr3[N]={"abc"};
 char arr4[N]={"def"};
 printf("交换前,字符串1:%s\n字符串2:%s\n",arr3,arr4);
 for(i=0;i<N;i++)//字符串交换
 {
 arr3[i]=arr3[i]^arr4[i];
 arr4[i]=arr3[i]^arr4[i];
    arr3[i]=arr3[i]^arr4[i];
 }
 printf("交换后,字符串3:%s\n字符串4:%s\n",arr3,arr4);
 printf("\n**************************\n");
 //输入
 printf("输入数组1的%d个字符:\n",N);
 put(arr1,i);
 
 printf("输入数组2的%d个字符:\n",N);
  put (arr2,i);
 change(arr1,arr2,i);
 printf("交换后字符结果:\n");
 //输出
 printf("\n数组1:");
 out (arr1,i);
 printf("\n数组2:");
 out (arr2,i);
 
 system("pause");
 return 0;
}
void put (char arr[],int i)
{
 //printf("输入数组1中的%d个变量\n",N);
 for(i=0;i<5;i++)
 {
  scanf("%c",&arr[i]);//连续从缓冲区读取所有字符
  //不加getcher()函数读取一个字符,字符应连续输入,不可用空格和回车(因为其也算字符)
  getchar();
 }
}
void change(char arr1[],char arr2[],int i)
{
  for(i=0;i<N;i++)//字符串交换
 {
 arr1[i]=arr1[i]^arr2[i];
 arr2[i]=arr1[i]^arr2[i];
    arr1[i]=arr1[i]^arr2[i];
 }
}
void out (char arr[],int i)
{
 for(i=0;i<N;i++)
 {
    printf(" %c ",arr[i]);
 }
}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 被极端的人纠缠怎么办 对固执偏激的人怎么办 车子右前轮偏磨怎么办? 轮胎边缘磨黑了怎么办 36周胎儿绕颈一周怎么办 孕中期胎儿偏小怎么办 怀孕34周偏小2周怎么办 胎盘低怎么办6个月了 怀孕四个月胎盘低怎么办 怀孕五个月胎盘低怎么办 怀孕3个月胎盘低怎么办 怀孕三个月了胎盘低怎么办 新房交房开发商拿不出证件怎么办? 新干式变压器未送电进水怎么办 三相380转单相220怎么办 外国人一直找你出去怎么办 美团众包跑腿单物品太重怎么办 美团退款成功后 物品怎么办 win10电脑没有网络图标怎么办 电脑开机桌面什么都没有怎么办 xp桌面什么都没有了怎么办 手机下滑通知栏不见了怎么办 跑800米赶上月经怎么办 强迫症吃药没效怎么办 复读生档案丢了怎么办 大学退学重新高考学籍怎么办 玻尿酸鼻子宽了怎么办 被昆山市圆通快递公司骗怎么办 借壳上市后壳公司怎么办 盐城国有民办学校倒闭教师怎么办 联想复印机显示更换墨粉盒怎么办 襄垣县共公自行车卡怎么办 转南京江宁户口怎么办儿童医保 剑与家园鬼服怎么办 花生苗出现虫洞怎么办 被蝎子草扎到手怎么办 被蝎子草蛰了怎么办 螫麻子草扎了怎么办 苹果app没删除干净怎么办 字写的太潦草看不懂怎么办 肝内胆管结石疼怎么办