解: main()
{ 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命令時只要能真正理解這一點,這樣才不會對此命令引起誤解並誤用。