數組中內容(數字,字符,字符串)交換,不引用第三變量

//數組中數字交換
#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]);
 }
}
發佈了43 篇原創文章 · 獲贊 18 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章