交換兩個數的四種方法
一.建立臨時變數
1.普通的方法:
思路簡介:建立一個臨時變數,通過temp=a,a=b,b=temp來實現交換。
缺點:這只是一種假交換,由於這只是在函式內部臨時變數間的交換,所以當函式退出,函式棧幀被釋放,原本的值並沒有交換。
具體方法:
int swap(int _x,int _y)
{
int z=_x; //通過建立z這個臨時變數來交換_x,_y
_x=_y;
_y=z;
printf("%d %d",_x,_y);
return 0;
}
2.指標的方法:
思路簡介:取兩個數的地址,在swap方法中再用指標指向地址交換,這時候為數值交換(函式呼叫結束後原空間的值也得到了交換)。
具體方法:
int swap(int *_x,int *_y) //主函式中把兩個數的地址傳過來
{
int tmp = *_x; //定義中間變數 然後交換兩個數
*_x = *_y;
*_y = tmp;
printf("%d %d",*_x,*_y);
}
二.不建立臨時變數
1.加減交換:
思路簡介:取兩個數的和,然後通過減去另外一個數來得到這個數。
方法缺陷:兩個數的和可能會越界。(數值小的時候可以用)。同樣的這是一種假交換,函式呼叫結束後原本的值並沒有真正的交換。
具體方法:
int swap(int _a,int _b)
{
printf("%d %d",_a+_b-_a,_a+_b-_b);
return 0;
}
2.異或方法:
思路簡介:通過二進位制異或方法交換,如a=3二進位制為11,b=2的二進位制為10,按位異或(兩個值相同為0,否則為1)
a=a^b, 異或後a=11^10=01
b=a^b, 異或後b=01^10=11(此時b為開始a的值)
a=a^b 異或後a=01^11=10(此時a為開始b的值)
這樣子a與b就實現了交換
具體方法:
int Swap3(int *a, int *b)
{
*a = *a^*b;
*b = *a^*b;
*a = *a^*b;
printf("%d %d", *a, *b);
return 0;
}
相關推薦
交換兩個數的四種方法
一.建立臨時變數 1.普通的方法: 思路簡介:建立一個臨時變數,通過temp=a,a=b,b=temp來實現交換。 缺點:這只是一種假交換,由於這只是在函式內部臨時變數間的交換,所以當函式退出
交換兩個數的幾種方法
code alt pre temp emp 分享圖片 splay lin ons 第一種:利用第三方變量 1 int a = 10, b = 12; 2 int temp = 0; 3 temp = a; 4 a = b; 5 b = temp; 6 Console.W
兩個變數交換的四種方法(Java)
對於兩種變數的交換,我發現四種方法,下面我用Java來演示一下。 1.利用第三個變數交換數值,簡單的方法。 (程式碼演示一下) 1 class TestEV 2 //建立一個類 3 { 4 public static void main(String[]args) 5
交換兩個變數的值,不借助第三個變數的四種方法(學習)
缺點:是隻能用於數字型別,字串之類的就不可以了。a+b有可能溢位(超出int的範圍),溢位是相對的, +了溢位了,-回來不就好了,所以溢位不溢位沒關係,就是不安全。2) 指標地址操作 因為對地址的操作實際上進行的是整數運算,比如:兩個地址相減得到一個整數,表示兩個變數在記憶體中的儲存位置隔了
三種方法交換兩個數的值
第一種,也是最原始的方法,使用中間變數,將a與b的值進行交換#include<stdio.h>int main(){ int a = 10; int b = 20; int c = 0; printf("交換之前:%d %d", a, b); c = a; a =
數據庫兩表連接四種方法
null nbsp _id 連接查詢 from where ext 左右 true 一般我們連接兩張表時,都是select xxx,xx from x1,x2 where x1.a=x2.a。其實數據庫還有4中join操作。 例如:表1: student s_id na
C語言中用不同的方法交換兩個數的值
在開始學習C語言的過程中,我們一定都做過這樣一道題,交換兩個數的值。可能大部分人都會這道題,但今天我想試試用不同的方法做這道題。 1、建立臨時變數 #include<stdio.h> int main() { int a = 10
c#呼叫python的四種方法(嘗試了四種,只詳細講解本人成功的後兩種,其餘方法只列出,詳細用法請自行谷歌百度)
一、使用c#,nuget管理包上下載的ironPython安裝包 嘗試後發現,對引用了numpy等第三方庫的python程式碼,會報找不到模組xxx的錯誤,上網查證後發現此問題基本難以解決 二、使用c++程式呼叫python檔案,然後將其做成動態連結庫
辯證法中包括一個關係、兩大特徵、三大規律、四種方法、五對範疇
辯證關係: 一、辨證關係原理 (一)物質和意識的辨證關係原理 (1)辨證唯物論認為,物質決定意識,意識是物質的反映。這一原理要求我們想問題辦事情必須做到一切從實際出發,使主觀符合客觀。 (2)意識對物質具有反作用,正確的意識能促進客觀事物的發展,錯誤的意識則阻礙客觀事物的發
比較兩個數的大小,交換兩個數的 方法總結
面試寶典中看到的,記錄下來,與大家共勉 1、比較兩個數的大小 /*比較兩個數的大小,不要使用if判斷*/ #include <stdio.h> #include <math.h> int main() { int a, b; pri
JAVA儲存兩位小數點的四種方法
import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; public class format { double f = 111231.55
C語言編程 求兩個數的平均值方法(三種方法)
輸入 均值 二進制 介紹 運算 use pause can include 第一種方法是最常見的average=(a + b) / 2這種方式,求兩個數的平均值 第二種方法是當 a<b 時averag=a+(b-a)/2 這裏著重介紹的是第三種方法 average=(
探討JS合並兩個數組的方法
table 調用 情況 num body lpad java 遍歷 ber 我們在項目過程中,有時候會遇到需要將兩個數組合並成為一個的情況。 比如: 1 2 var a = [1,2,3]; var b = [4,5,
增加表空間大小的四種方法
已存在數據 max 方法 手工 pro strong 增加表空間 增加 四種 增加表空間大小的四種方法Meathod1:給表空間增加數據文件ALTER TABLESPACE app_data ADD DATAFILE ‘D:\ORACLE\PRODUCT\10.2.0\OR
Python格式化輸出的四種方法
python#!/usr/bin/env python#coding:utf-8name = raw_input("name:")sex = raw_input("sex:")age = int(raw_input("age:"))info0 = ‘‘‘-------- inio fo0 -------nam
Button點擊事件的四種方法
ase extend extends make androi tid ont edi .get 1、匿名內部類 Button btn_1 = (Button) findViewById(R.id.btn_1); //1.匿名內部類 btn_
【mysql】查看版本的四種方法
span clas latin min days use ble dha pre 1:在終端下:mysql -V。 以下是代碼片段: [[email protected]/* */ ~]$ mysql -V mysql Ver 14.7 Distrib 4.
列表整體加1四種方法
append map 整體 num enume for in rate int pen 1、 list = [0,1,2,3,4,5,6,7,8,9] num = map(lambda x:x+1,list)print num 2、list1=[]for i in lis
遍歷Map的四種方法
html pos val 方法 div body put next shm public static void main(String[] args) { Map<String, String> map = new HashMap<String,
JS 數組去重的四種方法
new return obj 元素 數組去重 != lis 相同 break 1、通過遍歷原數組和新數組是否重復。new一個新數組存放已經遍歷過的、唯一的元素。 function uniqueArr(list){ var newArr= [list[0]]; for