筆試例項:用函式實現將n個數按輸入順序的逆序排列

才智咖 人氣:8.75K

解: main()

筆試例項:用函式實現將n個數按輸入順序的逆序排列

{ int i,n;

char *p,num[20];

printf(“input n:”);

scanf(“%d”,&n);

printf(“Please input these number:n”);

for(i=0,i scanf(“%d”,&num[i]);

p=&num[0];

sort(p,n);

printf(“Now, the sequence is:n”);

for(i=0;i printf(“%d ”,num[i]);

}

sort(char p,int m)

{int i;

char temp,*p1,*p2;

for(i=0;i {p1=p+i;

p2=p1+(m-1-i);

temp=*p1;

*p1=*p2;

*p2=temp;

}

}

拓展:巨集替換髮生的時機

為了能夠真正理解#define的作用,讓我們來了解一下對C語言源程式的處理過程。當我們在一個整合的開發環境如Turbo C中將編寫好的'源程式進行編譯時,實際經過了預處理、編譯、彙編和連線幾個過程。其中前處理器產生編譯器的輸出,它實現以下的功能:

(1)檔案包含

可以把源程式中的#include 擴充套件為檔案正文,即把包含的.h檔案找到並展開到#include 所在處。

(2)條件編譯

前處理器根據#if和#ifdef等編譯命令及其後的條件,將源程式中的某部分包含進來或排除在外,通常把排除在外的語句轉換成空行。

(3)巨集展開

前處理器將源程式檔案中出現的對巨集的引用展開成相應的巨集 定義,即本文所說的#define的功能,由前處理器來完成。

經過前處理器處理的源程式與之前的源程式有所有不同,在這個階段所進行的工作只是純粹的替換與展開,沒有任何計算功能,所以在學習#define命令時只要能真正理解這一點,這樣才不會對此命令引起誤解並誤用。