C語言實現兩個數的交換
常常用C寫排序演算法時,經常寫兩個數的交換。想來,也把自己知到的這些方式記錄一下:
(1)巨集定義方法:
#define SWAP(a, b) {a = a + b; b = a - b; a = a - b;}
使用示例:
int a[2] = {5, 1};
SWAP(a[0], a[1]);
(2)指標:
void swap(int *x, int *y)
{
int tmp = *x;
*x = *y;
*y = tmp;
}
使用示例:
int a[2] = {5, 1};
swap(&a[0], &a[1]);
相關推薦
C語言實現兩個數的交換
常常用C寫排序演算法時,經常寫兩個數的交換。想來,也把自己知到的這些方式記錄一下: (1)巨集定義方法: #define SWAP(a, b) {a = a + b; b = a - b; a = a - b;} 使用示例: int a[2] = {5, 1}; SW
C語言實現兩個數的最大公約數
(1)窮舉法 c=兩個數中小的一個,給兩個數分別取餘c,判斷餘數是否為0 為0,c就是最大公約數 不為0,依次給c–判斷啥時候兩個數的餘數都為0,即為最大公約數 #include<stdio.h> int main() { int a =
c語言實現兩數交換
藉助第三變數來交換 1、 int a = 10; int b = 20; int temp = a; a = b; b = temp; 2、(指標實現) void swap(int*x, int*y)
用c語言實現兩個陣列中的內容進行交換。(陣列一樣大)
方法一:建立新的陣列。 #include<stdio.h> #include<stdlib.h> int main() { int arr1[5] = { 1, 2, 3, 4, 5, }; int arr2[5] = { 0, 6, 7, 8, 9, }
用c語言編寫兩個數的交換,三種方法
下面是從函式角度,還有簡單的交換 法去實現兩個數的交換。其中函式用到指標,通過前兩種方法可以深刻的體會到指標變得的含義。 #include <stdio.h> void swap(int *a,int *b) { int temp; temp=*a;
用C語言實現兩變數內容交換的N種方法
一:建立變數實現交換 1.#include <stdio.h> int main() { int a = 10; int b = 20; int c; printf("before change:a=%d b=%d\n",a,b); c
C語言實現 兩個int(32位)整數m和n的二進位制表達中,有多少個位(bit)不同?
輸入例子: 1999 2299 輸出例子:7 int main() { int a = 0; int b = 0; int num = 0; int count = 0; printf("請輸入兩個整數:"); scanf("%d%d",&a,&b); n
用C語言實現兩個連結串列查集
#include<stdio.h> #include<stdlib.h> typedef struct node{ int data; struct node *next; }LinkList; //建立連結串列 LinkLis
C語言實現兩數相加2018-09-23
/*給定兩個非空連結串列來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回一個新的連結串列。 你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。 示例: 輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)輸出:7 -> 0
C語言求兩個數的最大公約數和最小公倍數
輾轉相除法, 又名歐幾里德演算法(Euclidean algorithm),是求最大公約數的一種方法。它的具體做法是:用較小數除較大數,再用出現的餘數(第一餘數)去除除數,再用出現的餘數(第二餘數)去除第一餘數,如此反覆,直到最後餘數是0為止。如果是求兩個數的最
用c語言實現 一個數二進位制位從左到右的翻轉
編寫函式 unsigned int reverse_bit(unsigned int value); 這個函式的返回值 value的二進位制位模式從左到右翻轉後的值。 如在32位機器上25這個值包含下列各位: 000000000000000000000000000110
C語言——求兩個數的最大公約數和最小公倍數
求兩個數的最大公約數的常用方法:※“輾轉相除法”,又名歐幾里得演算法。基本方法如下:設兩數為a和b(a>b),用a除以b,得a÷b=q......r,若r=0 ,則最大公約數為b;若r≠0 ,則再用b÷r,得b÷r=q......r',若r'=0,則最大公約數為r',若
C語言實現兩個矩陣相乘
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #define ROW 3 #define COL 3 #define MID 4 int main() {
C語言實現3個數的最小公倍數和最大公約數
根據求兩個數的最小公倍數和最大公約數的方法求3個數的最大公約數和最小公倍數。 主要的思想就是利用a%b==0&a%c==0這樣的來判斷是否滿足,再利用迴圈計數即可。 #include&l
c語言實現10個數由小到大排序(選擇排序法)
選擇排序:第i趟排序中找出i+1個元素後一個最小的元素,與i位置元素進行交換,直到i=n-2;每一趟排序就是從序列中未排好序的元素中選擇一個最小的元素,將該元素與這些未排好順序的元素的第一個元素進行交換。 #include<stdio.h> vo
C語言 實現兩張圖片的拼接
在Linux中用gcc編譯 這個程式碼的邏輯其實蠻簡單的,就是用read()函式將對應的要拼接的部分,讀入到一塊兒快取中(定義一個數組就行),最後用write()函式將切出來的對應的部分輸出到要拼接的圖片檔案就大功告成。 值得注意的有兩點:1、圖片在必須用.
C語言實現兩臺電腦通過串列埠通訊
用C語言實現在傳送端控制檯輸入字串並在接收端接收顯示的功能。 /*********************server.c****************/#include<stdio.h>#include<sys/types.h>#include
用C語言實現:交換兩個數陣列的內容。
1.計算1/1-1/2+1/3…+1/99-1/100的值 2.交換兩個相等大小陣列的內容 3.1-100中的整數,帶9的整數出現的個數? 交換兩個陣列的內容(陣列大小子相同) 程式列印1-100出現9的個數 #include<stdio.h> #in
C語言實現交換兩個數
C語言中要實現交換兩個變數的值可以有很多種方法,下面是我收集的方法: 方法一:使用臨時變數 void exchange(int *a, int *b) { int temp = 0; temp = *a; *b = *a; *a = temp;
C語言:使用函式實現兩個數的交換。
此題的解決思路為:建立一個Swap函式,引數為a和b,函式內部建立一個臨時變數tmp,用於交換兩個數。 但需要注意的是:函式傳參的過程中需要注意,形參是實參的一份臨時拷貝,形參的改變不會影響實參,所以此時函式傳參的時候需要傳遞實參的地址(&a),即傳址呼叫,在接收部