1. 程式人生 > >使用函式實現兩個數的交換

使用函式實現兩個數的交換

#include<stdio.h>
int swap(int *num1,int *num2)               //異或方法交換
{
    *num1=*num1^*num2;                              
    *num2=*num1^*num2;                              
    *num1=*num1^*num2;                                                                          
    return 0;
}
int main()
{
    int
num1,num2; printf("please enter the num1>"); scanf("%d",&num1); printf("please enter the num2>"); scanf("%d",&num2); swap(&num1,&num2); printf("After change num1=%d\n",num1); printf("After change num2=%d\n",num2); return 0; }

異或舉例:
num1:010(2) num2:011(3)
tmp=num1^num2=001=1
num2=tmp^num2=010=2
num1=tmp^num2=011=3

相關推薦

使用函式實現個數交換

#include <stdio.h> void swap(int *a,int *b) { int tmp; tmp=*a; *a=*b; *b=tmp; } int main()

C語言:使用函式實現個數交換

此題的解決思路為:建立一個Swap函式,引數為a和b,函式內部建立一個臨時變數tmp,用於交換兩個數。 但需要注意的是:函式傳參的過程中需要注意,形參是實參的一份臨時拷貝,形參的改變不會影響實參,所以此時函式傳參的時候需要傳遞實參的地址(&a),即傳址呼叫,在接收部

使用函式實現個數交換

#include<stdio.h> int swap(int *num1,int *num2) //異或方法交換 { *num1=*num1^*num2;

C 使用函式實現個數交換

1.程式程式碼 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <Windows.h> int change_num(int *n1, int *n2)

C語言使用memcpy函式實現個數間任意位置的複製操作

  c和c++使用的記憶體拷貝函式,memcpy函式的功能是從源src所指的記憶體地址的起始位置開始拷貝n個位元組到目標dest所指的記憶體地址的起始位置中。   用法:void *memcpy(void *dest, const void *src, size_t n); 舉例:   char tes

指標函式完成個數交換

#include<stdio.h> void swap(int *x,int *y) { int t; t=*x; *x=*y; *y=t; } main() { int a,b; int *p1,*p2;

【C語言】編寫一個函式實現個數交換 詳細解答

今天在用函式寫兩數交換的時候發現有點小挫折,然後經過多次查詢驗證才發現是因為地址不對的緣故,我在此放出兩種交換的方法,先發錯誤的如下:#include <stdio.h> void swap(int a,int b) { int temp=a; a

如何在不介入第三個變量的情況下實現個數交換

16px bsp file 相同 rate cli 交換 ron eclips 如何在不介入第三個變量的情況下實現兩個數的交換: 1 package myeclipseFiles2; 2 3 public class Operator { 4 5 pu

寫一個巨集可以將一個數字的奇數位和偶數位交換。使用巨集實現個數中求較大值。

1. #include <stdio.h> #define SWAP(x) (((x&(0x55555555)) << 1) | ((x&(0xAAAAAAAA)) >> 1)) //0x55555555是十六進位制的1

C語言/C++實現交換函式

 首先我們可以先引入一箇中間變數temp進行數值交換。 在C語言中:  下面的這個函式能不能達到函式交換的目的? void Swap(int x, int y) { int temp = 0; temp = x; x = y; y = temp; } in

C語言實現個數交換

常常用C寫排序演算法時,經常寫兩個數的交換。想來,也把自己知到的這些方式記錄一下: (1)巨集定義方法: #define SWAP(a, b) {a = a + b; b = a - b; a = a - b;} 使用示例: int a[2] = {5, 1}; SW

c++實現個數交換

在c++中,有以下四種方法可以實現兩個數的交換: 1、指標傳遞 void swap1(int *p,int *q) { int temp=*p; *p=*q; *q=temp; } 2、巨集定義 #define swap2(x,

C用交換函式實現個數排序

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> void swap(int *m,int

c語言:多種方法實現個數交換

交換兩個數的內容是c語言中常見的問題,所以在此總結一下我所學到的幾種方法。 首先,舉一個例子,假設a=10,b=20. 第一種方法,藉助一個臨時變數來進行儲存,這是最容易也是最直觀的方法。 程式碼如下: int a, b, t; a = 10;

多種方法實現個數交換

很多程式經常使用的最普通,比較常見的,也是比較簡單的一個演算法 1、普通方法,藉助一個額外記憶體變數實現交換: #include <iostream> using namespace std; int main(int argc, const char * argv[]) { i

異或實現個數交換

通常的交換兩個變數a,b的過程為 int temp; temp=a a=b; b=temp; 需藉助上面的第3個臨時變數temp. 採用下面的方法,對於給定兩個整數a,b,下面的異或運算可以實現a,b的交換,而無需藉助第3個臨時變數:     a = a ^ b;    

C語言指標實現個數的互換

#include <stdio.h> void change1(int a, int b)//形參與實參不是同一個變數{ int t; t = a; a = b; b = t; } void change2(int * a, int * b)//只是把兩個變數的地址儲存的位置換了,但是變數的值

C語言指針實現個數的互換

c語言指針 存儲 col clu stdio.h 實現 置換 形參與實參 兩個 #include <stdio.h> void change1(int a, int b)//形參與實參不是同一個變量{ int t; t = a; a = b; b = t; }

es6實現個數的調換

實現兩個數的調換方式有很多種,今天看程式碼時發現一種非常簡單的方式,用es6解構方式即可,如下: 以前很多種方法: 比如:1)介入第三方temp               2)不介入第三方 let

c語言用位運算實現個數平均數

c語言用位運算實現兩個數平均數 對於十進位制而言,向右移動一位就是除以10, 對於二進位制而言,向右移動一位就是除以2, 對於八進位制而言,向右移動一位就是除以8, 對於十六進位制而言,向右移動一位就是除以16 因為計算機是通過二進位制來計算的,知道這個規律之後我們可以編寫程式碼 int