1. 程式人生 > >三個數從大到小排序——函式法

三個數從大到小排序——函式法

先看下面一段程式碼

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

#include<stdlib.h>

int main()
{
    int num = 10;
    int* p = #
    *p = 20;        //解引用
    printf("num = %d\n", num);
    system("pause");
    return 0;
}

上面程式輸出值 num= 20;

再看下一段程式碼,它是不可以實現想要的結果;

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
void swap(int x, int y)
{
	int tmp = x;
	x = y;
	y = tmp;
}
int main()
{
	int a = 3;
	int b = 6;
	int c = 1;
	if (a < b)
	{
		swap(a, b);
	}
	if (a < c)
	{
		swap(a, c);
	}
	if (b < c)
	{
		swap(b, c);
	}
	printf("%d %d %d\n", a, b, c);
	system("pause");
	return 0;
}

原因:

(1)實參——形式引數,只是值傳遞

(2)形參是實參的臨時拷貝

(3)對形參的改變不會改變實參【如上面的函式,它僅僅實現了形參的順序改變】

(4)由上述第一段程式碼解引用可知,通過指標傳地址實現

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
void swap(int *px, int *py)
{
	int tmp = *px;
	*px = *py;
	*py = tmp;
}
int main()
{
	int a = 3;
	int b = 6;
	int c = 1;
	if (a < b)
	{
		swap(&a,&b);
	}
	if (a < c)
	{
		swap(&a,&c);
	}
	if (b < c)
	{
		swap(&b,&c);
	}
	printf("%d %d %d\n", a, b, c);
	system("pause");
	return 0;
}

相關推薦

個數大到小排序——函式

先看下面一段程式碼#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> int main() { int num = 10; int* p =

4比較個數大小輸出最大的值並從小到大排序輸出

public static void main(String[] args) {       System.out.println("請輸入三個數");      Scanner scanner=new Scanner(System.in);      int a=scan

用C語言 將個數大到小排序

#include <stdio.h> int main() { double a = 0.0, b = 0.0, c = 0.0; double t = 0.0; printf("輸

輸入個數比較大小

nbsp lap style pri 比較大小 one closed put code 1 num1 = input("Num1:") 2 num2 = input("Num2:") 3 num3 = input("Num3:") 4 5 if num1&g

種常見的排序

合並算法 合並 參考 amp 實現 insert 算法 clas 屬於 原理請參考《算法導論》 插入式排序算法實現: void insertion_sort(int *A, int length) { int i, key; for (int j = 1;

Java數據結構和算):常用排序與經典題型

bre 操作 五步 增量排序 計算 -- clu 冒泡 i+1 常用的八種排序算法 1.直接插入排序 我們經常會到這樣一類排序問題:把新的數據插入到已經排好的數據列中。將第一個數和第二個數排序,然後構成一個有序序列將第三個數插入進去,構成一個新的有序序列。對第四

個數

將三個數按從小到大輸出 #define _CRT_SECURE_NO_WARNINGS //巨集定義 #include <stdio.h> #include <windows.h> int main() { int a ,b,c,t; //定義四個整型變數,t為臨時變

習題 :任意輸入十個數大小排序;構造簡單數學運算模組(形參和實參)

任意輸入十個數字,按從大到小的順序排列   設定減法運算模組: 設定 乘除法混合運算 模組 int num = 3*chufa(num1, num2,num3); 這裡有這句指令,將該結果擴大三倍,40->120 *通過上面兩個程式引出形參和實參的概念: 通俗的來講,

個數大到小列印

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main() { int a, b, c; printf("輸入3個數:\n"); scanf("%d%d%d", &am

c語言將個數大到小輸出。

思路:定義三個變數,再定一個臨時變數,採用if判斷語句,按順序判斷兩兩數值的大小,按順序輸出結果即可。 #define _CRT_SECURE_NO_WARNING #include<stdio.h> #include<stdlib.h> int main(){

個數比較大小(非陣列)

public static void sort(int a,int b,int c)     {          if (a > b) {                 if (c >

C++:比較個數大小,找出最大數

#include<stdio.h> void main() { int a,b,c,t; printf("請輸入三個整數並以回車結束:\n"); scanf("%d%d%d",&a,&b,

個數大到小輸出

從大到小 font clas 一個 創建 nbsp tdi 每次 abc 方法一:可以假設a為最大值在比較b與c之間的大小, 在假設b為最大值比較a與c之間的大小,同理假設c得出排序。 1 #include<stdio.h> 2 int main() 3

Java鍵盤錄入個數比較大小

/* 錄入三個資料,獲取三個數中的最大值 */ import java.util.Scanner; class ScannerTest1{ public static void ma

個數比較大小——C語言經典題目

這道題是每一位初學C的小夥伴們的必經之路,其經典性簡直如同Hello World! 下面寫一下幾種不同的解法。 使用if語句 #include<stdio.h> int main() { int a, b, c, max;//逗號,(大/中

Java 輸入個數大小

1:運用三目運算子比較三個數的大小public static void main(String[] args) {Scanner sc = new Scanner(System.in);//Scanner鍵盤錄入,獲取使用者輸入的資訊System.out.println("輸

指標實現—個數交換的排序

#include <stdio.h> int main() { void exchange(int *q1,int *q2,int *q3); int a,b,c,*p1,*p2,*p3; scanf("%d %d %d",&a

c++中比較個數大小

/*列出兩個數。比較兩個數的大小 */ #include<iostream> #include<stdlib.h> using namespace std; int main() { int x,y; cout<<"Enter x

利用指標把個數大到小輸出(容易出現的問題)

一個程式設計師的誕生! 下面的第一個程式是正確的做法 第二個是錯誤的做法 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h>

VB作業之比較個數大小

下面是我編寫的程式程式碼: Private Sub Command1_Click() Dim A As Integer Dim B As Integer Dim C As Integer Dim max As Integer A = Val(T