第一篇:編程小結(jié)1
編程
人與人交流使用人類語言,人與計算機交流使用計算機語言。隨著計算機技術(shù)的發(fā)展,計算機語言也逐步得到完善。C語言是當(dāng)今世界應(yīng)用最為廣泛的程序設(shè)計語言。認(rèn)識C語言有助于更好地學(xué)習(xí)、掌握和運用C語言。
計算機語言隨著計算機技術(shù)的發(fā)展而不斷地更新完善,人們最初使用的計算機語言是二進制代碼也就是機器語言,后來使用助記符語言即匯編語言,現(xiàn)在使用最廣泛的計算機語言是高級語言。
機器語言是計算機最早使用的語言。機器語言是直接用代碼指令表達的,由0和1組成的一串二進制代碼,這些二進制代碼是面向CPU指令系統(tǒng)的,可以由計算機直接識別,不需要任何解釋,執(zhí)行速率很高。由于機器語言是面向硬件的,計算機使用的CPU類型不同,所以每一種類型的CPU都有一種對應(yīng)的機器語言,因此,一臺計算機上面的指令換到另一臺機器上后就無法使用,由此可見,機器語言的移植性和通用性很差。機器語言是由二進制代碼編寫的,數(shù)據(jù)位數(shù)比較難記憶,在進行編寫和輸入時難度較大,并且是純數(shù)據(jù),可讀性差,不便于程序員之間進行交流與合作,所以使機器語言無法獲得迅速推廣。
計算機執(zhí)行用機器語言編寫的程序的速度很快,但是難于記憶、辨認(rèn),編出的程序效率低、質(zhì)量差,所以人們對機器語言作了一種改進:用一些簡潔的英文字母、符號來代替特定的二進制指令串。例如,將十進制數(shù)1000送寄存器AX寫成:
MOV AX,1000
對于8088微處理器來說,機器語言編寫的代碼為:
***000000011
高級語言是目前絕大多數(shù)編程者的首選,它將許多相關(guān)的機器指令合成為一條指令,并且去掉了與具體操作有關(guān)但與完成工作無關(guān)的細節(jié),大大簡化了程序中的指令。高級語言是相對于低級語言而言的,它不是特指某一種具體的語言,而是包括很多編程語言,如Fortran、Pascal、Cobol、C、C++、Basic、Ada、Java、C# 等。
用高級語言編寫的程序稱為源程序。高級語言不是面向硬件的,計算機無法讀懂,與匯編語言程序類似,需要進行轉(zhuǎn)換。將高級語言程序轉(zhuǎn)換成機器語言程序的過程稱為編譯,完成這個轉(zhuǎn)換任務(wù)的系統(tǒng)稱為編譯系統(tǒng)。根據(jù)編譯的時間不同,可將編譯系統(tǒng)分為解釋和編譯兩類。
面向?qū)ο蟮恼Z言是在面向過程的計算機語言的基礎(chǔ)上發(fā)展而來的。概括地講,面向?qū)ο笙到y(tǒng)包含對象、類和繼承三個要素,能支持這三個方面的語言被稱為面向?qū)ο笳Z言。面向?qū)ο笳Z言的發(fā)展有兩個方向:一種是純面向?qū)ο笳Z言,如Smalltalk等;另一種是混合型面向?qū)ο笳Z言,即在過程式語言及其他語言中加入類、繼承等成分,如C++等。
面向?qū)ο笳Z言刻畫客觀系統(tǒng)較為自然,便于軟件擴充與復(fù)用。面向?qū)ο笳Z言系統(tǒng)中的基本構(gòu)件可以認(rèn)為是一組可識別的離散對象,具有相同數(shù)據(jù)結(jié)構(gòu)與行為的所有對象可組成一類,具有唯一的靜態(tài)類型和多個可能的動態(tài)類型,在基本層次關(guān)系的不同類中共享數(shù)據(jù)和操作。基于類的面向?qū)ο笳Z言是面向?qū)ο笫澜绲闹髁?。面向?qū)ο蟮某绦蛟O(shè)計語言有C++、Java、C#、VB.NET。
第二篇:編程小結(jié)
編程小結(jié)
(一)一.累加:加數(shù)1+加數(shù)2+加數(shù)3+??+加數(shù)n(n個加數(shù)相加)假設(shè)我們用i表示我們的加數(shù)數(shù)目,例如:當(dāng)i=9時,就表示加數(shù)9 模版:int i,sum=0;(注意:如果是分?jǐn)?shù)或者小數(shù)sum就是float類型)
for(i=1;i<=n;i++)(注意:循環(huán)變量的初值和遞變規(guī)律,也有
可能是i--,或者i+=2等等){通項a;(通項:用一個通用的式子表示所有的加數(shù))sum+=a;} printf(“%d”,sum);(注意:如果是float類型就是%f)
1、求1+2+3??+100的和,則通項a就是i。
分析:因為a就是i的值,所以這里不需要通項這一行了,因此整個大括號中間就只有一句話,所以大括號可以省略。整理之后就是: int i,sum=0;for(i=1;i<=100;i++)sum+=i;printf(“%d”,sum);
2、求2+4+6??+100的和。
分析:因為a就是i的值,所以這里不需要通項這一行了,因此整個大括號中間就只有一句話,所以大括號可以省略,再分析,再分析我們發(fā)現(xiàn)每個加數(shù)都是偶數(shù),那么i的變化就是i+=2,并且i是從2開始變化,那么在賦值的時候就應(yīng)該是i=2。整理之后就是: int i,sum=0;for(i=2;i<=100;i+=2)sum+=i;printf(“%d”,sum);
3、求1+3+5??+99的和。
分析:因為a就是i的值,所以這里不需要通項這一行了,因此整個大括號中間就只有一句話,所以大括號可以省略,再分析,再分析我們發(fā)現(xiàn)每個加數(shù)都是奇數(shù),那么i的變化就是i+=2。整理之后就是: int i,sum=0;for(i=1;i<=100;i+=2)sum+=i;printf(“%d”,sum);
4、求1+5+9+13+17+??的前100項的和,則通項為j+4,則程序為: int i,sum=0,j=1;for(i=1;i<=100;i++){ sum+=j;j=j+4; } printf(“%d”,sum);因為加數(shù)的第一項是1,所以賦初值的時候j=1,然后加數(shù)進行變化,變成5加到sum里面,所以這里要將通項和求和這兩句話互換位置。
5、求1+4+9+16+??的前100項的和
分析可知:每個加數(shù)就是對應(yīng)的加數(shù)數(shù)目的平方,則通項為i*i,則程序為: int i,sum=0;for(i=1;i<=100;i++)sum+= i*i;printf(“%d”,sum);
6、求1+(1+2)+(1+2+3)+(1+2+3+4)+??的前100項的和。
分析可知每一個加數(shù)本身又是一個累加的式子,進一步觀察可以發(fā)現(xiàn),每個累加的式子都是加到這個加數(shù)所在的加數(shù)數(shù)目,即第35個加數(shù)就是1+2+3??+35,并且是在前面一個加數(shù)的基礎(chǔ)上加上這個加數(shù)所在的加數(shù)數(shù)目,也就是說第36個加數(shù)就是在前一個加數(shù)的基礎(chǔ)上加上36,即:1+2+3??+35+36。假設(shè)第k個加數(shù)是j,那么第k+1個加數(shù)就可以表示為j+(k+1),然后第k+2個加數(shù)就是j+(k+1)+(k+2)??那么我們的通項就可以表示為a=a+i,則程序為: int i,sum=0, a=0;for(i=1;i<=100;i++){ a+=i;sum+=a;} printf(“%d”,sum);
7、求1+1+2+3+5+8+13+21+??的前100項的和。
分析可知從第三個加數(shù)開始,每一個加數(shù)是其前兩個加數(shù)之和,假設(shè)第k個加數(shù)是m,第k+1個加數(shù)是n,然后第k+2個加數(shù)就是m+n,那么我們的通項就可以表示為a=m+n,但是要注意每次加數(shù)所對應(yīng)的m和n不一樣,所以我們要在求出每個加數(shù)之后,找出其對應(yīng)的m和n;再分析我們可以發(fā)現(xiàn)當(dāng)前的n是下一次的m,當(dāng)前的加數(shù)a是下一次的n,假設(shè)接著上面的推導(dǎo),那么第k+3個加數(shù)就是n+(m+n),對應(yīng)我們的通項a=m+n,理解前面一句話。則程序為: int i,sum=0, m=1,n=1,a;for(i=3;i<=100;i++){ a=m+n;sum+=a;m=n;n=a;} printf(“%d”,sum);
8、求1+1/2+1/3+??+1/100 分析可知每一個加數(shù)就是我們的加數(shù)數(shù)目的倒數(shù),則通項a就是1/i,我們說循環(huán)變量i一般定義為整型,那么1/i的結(jié)果就是整型,這樣的話小數(shù)點后面的就會被省略,所以正確的應(yīng)該寫為a=1.0/i,則程序為:
int i;float sum=0;for(i=1;i<=100;i++){a=1.0/i;sum+=a;} printf(“%f”,sum);
9、求1+1/2+2/3+3/5+5/8+??的前100項的和。
分析可從第三個加數(shù)開始觀察,每一個加數(shù)的分母是其前一個加數(shù)的分子和分母之和,每一個加數(shù)的分子是其前一個加數(shù)的分母。可以將第一個加數(shù)看成1/1,那么第二個加數(shù)也符合我們的規(guī)律,只有第一個不符合,那么我們可以先將第一個加數(shù)加到sum,然后再變下一個加數(shù),但是要注意每次加數(shù)所對應(yīng)的分子和分母不一樣,所以我們要在求出每個加數(shù)之后,找出下一個加數(shù)所對應(yīng)的分子和分母。設(shè)通項表示為a=m/n, 那么下一個加數(shù)是n/(m+n),然后下下一個加數(shù)就是(m+n)/(m+n+n);再分析我們可以發(fā)現(xiàn)當(dāng)前的分子和分母之和(m+n)是下一次的分母n,當(dāng)前的分母n是下一次的分子m,注意這里在做數(shù)據(jù)交換的時候需要中間變量,對應(yīng)我們的通項a=m/n,理解前面一句話。則程序為: int i;float sum=0, m=1,n=1,t;for(i=1;i<=100;i++){ sum+=m/n;t=m+n;m=n;n=t;} printf(“%f”,sum);
二.累乘:乘數(shù)1*乘數(shù)2*乘數(shù)3*??*乘數(shù)n(n個乘數(shù)相乘)假設(shè)我們用i表示我們的乘數(shù)數(shù)目,例如:當(dāng)i=9時,就表示乘數(shù)9 模版:int i,sum=1;(注意:如果是分?jǐn)?shù)或者小數(shù)sum就是float類型)
for(i=1;i<=n;i++)(注意:循環(huán)變量的初值和遞變規(guī)律,也有
可能是i--,或者i+=2等等){通項a;(通項:用一個通用的式子表示所有的乘數(shù))sum*=a;} printf(“%d”,sum);(注意:如果是float類型就是%f)
1、求1*2*3??*100的積,則通項a就是i。
分析:因為a就是i的值,所以這里不需要通項這一行了,因此整個大括號中間就只有一句話,所以大括號可以省略。整理之后就是: int i,sum=1;for(i=1;i<=100;i**)sum*=i;printf(“%d”,sum);
2、求2*4*6??*100的和。分析:因為a就是i的值,所以這里不需要通項這一行了,因此整個大括號中間就只有一句話,所以大括號可以省略,再分析,再分析我們發(fā)現(xiàn)每個乘數(shù)都是偶數(shù),那么i的變化就是i+=2,并且i是從2開始變化,那么在賦值的時候就應(yīng)該是i=2。整理之后就是: int i,sum=1;for(i=2;i<=100;i+=2)sum*=i;printf(“%d”,sum);
3、求1*3*5??*99的和。
分析:因為a就是i的值,所以這里不需要通項這一行了,因此整個大括號中間就只有一句話,所以大括號可以省略,再分析,再分析我們發(fā)現(xiàn)每個乘數(shù)都是奇數(shù),那么i的變化就是i+=2。整理之后就是: int i,sum=1;for(i=1;i<=100;i+=2)sum*=i;printf(“%d”,sum);
4、求1*5*9*13*17*??的前100項的積,則通項為j*4,則程序為: 分析:因為乘數(shù)的第一項是1,所以賦初值的時候j=1,然后乘數(shù)進行變化,變成5乘到sum里面,所以這里要將通項和求積這兩句話互換位置。
int i,sum=1,j=1;for(i=1;i<=100;i**){ sum*=j;j=j*4; } printf(“%d”,sum);
5、求1*4*9*16*??的前100項的積
分析可知:每個乘數(shù)就是對應(yīng)的乘數(shù)數(shù)目的平方,則通項為i*i,則程序為: int i,sum=1;for(i=1;i<=100;i**)sum*= i*i;printf(“%d”,sum);
6、求1*(1*2)*(1*2*3)*(1*2*3*4)*??的前100項的積。分析可知每一個乘數(shù)本身又是一個累乘的式子,進一步觀察可以發(fā)現(xiàn),每個累乘的式子都是乘到這個乘數(shù)所在的乘數(shù)數(shù)目,即第35個乘數(shù)就是1*2*3??*35,并且是在前面一個乘數(shù)的基礎(chǔ)上乘上這個乘數(shù)所在的乘數(shù)數(shù)目,也就是說第36個乘數(shù)就是在前一個乘數(shù)的基礎(chǔ)上乘上36,即:1*2*3??*35*36。假設(shè)第k個乘數(shù)是j,那么第k+1個乘數(shù)就可以表示為j*(k+1),然后第k+2個乘數(shù)就是j*(k+1)*(k+2)??那么我們的通項就可以表示為a=a*i,則程序為: int i,sum=1, a=0;for(i=1;i<=100;i**){ a*=i;sum*=a;} printf(“%d”,sum);
7、求1*1*2*3*5*8*13*21*??的前100項的積。
分析可知從第三個乘數(shù)開始,每一個乘數(shù)是其前兩個乘數(shù)之和,假設(shè)第k個乘數(shù)是m,第k+1個乘數(shù)是n,然后第k+2個乘數(shù)就是m+n,那么我們的通項就可以表示為a=m+n,但是要注意每次乘數(shù)所對應(yīng)的m和n不一樣,所以我們要在求出每個乘數(shù)之后,找出其對應(yīng)的m和n;再分析我們可以發(fā)現(xiàn)當(dāng)前的n是下一次的m,當(dāng)前的乘數(shù)a是下一次的n,假設(shè)接著上面的推導(dǎo),那么第k+3個乘數(shù)就是n*(m+n),對應(yīng)我們的通項a=m*n,理解前面一句話。則程序為: int i,sum=1, m=1,n=1,a;for(i=3;i<=100;i**){ a=m+n;sum*=a;m=n;n=a;} printf(“%d”,sum);
8、求1*1/2*1/3*??*1/100 分析可知每一個乘數(shù)就是我們的乘數(shù)數(shù)目的倒數(shù),則通項a就是1/i,我們說循環(huán)變量i一般定義為整型,那么1/i的結(jié)果就是整型,這樣的話小數(shù)點后面的就會被省略,所以正確的應(yīng)該寫為a=1.0/i,則程序為:
int i;float sum=1;for(i=1;i<=100;i**){a=1.0/i;sum*=a;} printf(“%f”,sum);
9、求1*1/2*2/3*3/5*5/8*??的前100項的積。
分析可從第三個乘數(shù)開始觀察,每一個乘數(shù)的分母是其前一個乘數(shù)的分子和分母之和,每一個乘數(shù)的分子是其前一個乘數(shù)的分母??梢詫⒌谝粋€乘數(shù)看成1/1,那么第二個乘數(shù)也符合我們的規(guī)律,只有第一個不符合,那么我們可以先將第一個乘數(shù)乘到sum,然后再變下一個乘數(shù),但是要注意每次乘數(shù)所對應(yīng)的分子和分母不一樣,所以我們要在求出每個乘數(shù)之后,找出下一個乘數(shù)所對應(yīng)的分子和分母。設(shè)通項表示為a=m/n, 那么下一個乘數(shù)是n/(m+n),然后下下一個乘數(shù)就是(m+n)/(m+n+n);再分析我們可以發(fā)現(xiàn)當(dāng)前的分子和分母之和(m+n)是下一次的分母n,當(dāng)前的分母n是下一次的分子m,注意這里在做數(shù)據(jù)交換的時候需要中間變量,對應(yīng)我們的通項a=m/n,理解前面一句話。則程序為: int i;float sum=1, m=1,n=1,t;for(i=1;i<=100;i**){ sum*=m/n;t=m+n;m=n;n=t;} printf(“%f”,sum);
10、求1+(1*2)+(1*2*3)+(1*2*3*4)+??的前100項的和。
分析可知每一個加數(shù)本身是一個累乘的式子,進一步觀察可以發(fā)現(xiàn),每個累乘的式子都是乘到這個乘數(shù)所在的乘數(shù)數(shù)目,即第35個乘數(shù)就是1*2*3??*35,并且是在前面一個乘數(shù)的基礎(chǔ)上乘上這個乘數(shù)所在的乘數(shù)數(shù)目,也就是說第36個乘數(shù)就是在前一個乘數(shù)的基礎(chǔ)上乘上36,即:1*2*3??*35*36。假設(shè)第k個乘數(shù)是j,那么第k+1個乘數(shù)就可以表示為j*(k+1),然后第k+2個乘數(shù)就是j*(k+1)*(k+2)??那么我們的通項就可以表示為a=a*i,再利用累加的模版,則程序為:
int i,sum=0, a=1;for(i=1;i<=100;i**){ a*=i;sum+=a;} printf(“%d”,sum);
11、求1*(1+2)*(1+2+3)*(1+2+3+4)*??的前100項的積。
分析可知每一個乘數(shù)本身又是一個累加的式子,進一步觀察可以發(fā)現(xiàn),每個累加的式子都是加到這個乘數(shù)所在的乘數(shù)數(shù)目,即第35個乘數(shù)就是1+2+3??+35,并且是在前面一個乘數(shù)的基礎(chǔ)上加上這個乘數(shù)所在的乘數(shù)數(shù)目,也就是說第36個乘數(shù)就是在前一個乘數(shù)的基礎(chǔ)上加上36,即:1+2+3??+35+36。假設(shè)第k個乘數(shù)是j,那么第k+1個乘數(shù)就可以表示為j+(k+1),然后第k+2個乘數(shù)就是j+(k+1)+(k+2)??那么我們的通項就可以表示為a=a+i, 再利用累乘的模版,則程序為:
int i,sum=1, a=0;for(i=1;i<=100;i**){ a+=i;sum*=a;} printf(“%d”,sum);
三.最大值和最小值:數(shù)字0,數(shù)字1,數(shù)字2,??數(shù)字n-1(一共n個數(shù)字)假設(shè)我們用i表示我們的數(shù)字所在的位置,并且第一個位置是0,例如:當(dāng)i=9時,就表示這個數(shù)字在第10個位子
模版: int i,max,a[n];(注意:如果是分?jǐn)?shù)或者小數(shù)max和a[n]就是float
類型,注意這里定義的時候根據(jù)題目所給的具體數(shù)字把n換掉,千萬不可以寫a[n]o哦~~~~)
for(i=0;i 了數(shù)字,就在定義的時候直接賦值,這個循環(huán)就不需要了;如果要求產(chǎn)生給數(shù)組賦a到b之間的隨機數(shù),那么就用a[i]= a + rand()%(b-a);這句話代替這句。注意如果是float類型就是%f)max=a[0];for(i=0;i 1、求20個數(shù)字的最大值和最小值,要求賦1到100之間的隨機數(shù),并且輸出它們及其下標(biāo)。 分析:因為這里還要輸出其下標(biāo),所以還有定義一個row來存放,并且要對其賦值為0,因為我們給max賦值為a[0],則程序為: int i,max,min,a[20],row1=0,row2=0;for(i=0;i<20;i++)a[i]= 1+rand()%99;max=a[0];min=a[0];for(i=0;i<20;i++){ if(maxa[i])(這里是找出最小值){ min=a[i];row2=i;} } printf(“max =%d, row=%dn min =%d, row=%dn”, max,row1,min,row2); 2、求4*5矩陣的最大值和最小值,要求賦值隨機數(shù),并且輸出它們及其下標(biāo)。分析:雖然這是一個二維的數(shù)組,但是其思路仍然和一維數(shù)組的一樣,區(qū)別只是這里需要用嵌套循環(huán)。要求還要輸出其下標(biāo),二維數(shù)組的下標(biāo)是兩個,所以還要定義一個row和一個col來存放,并且要對它們賦值為0,因為我們給max賦值為a[0] [0],則程序為: int i,j,max,min,a[4] [5],row1=0,row2=0,col1=0,col2=0;for(i=0;i<4;i++)for(j=0;j<5;j++)a[i] [j]=rand();max=a[0] [0];min=a[0] [0];for(i=0;i<4;i++)for(j=0;j<5;j++){ if(maxa[i] [j])(這里是找出最小值){ min=a[i] [j];row2=i;col2=j;} } printf(“max =%d, row=%d, col=%d n min =%d, row=%d, col=%d n”, max,row1, col1, min,row2, col2); 3、求4*5矩陣的每一行最大值和最小值,要求賦值隨機數(shù),并且輸出它們及其下標(biāo)。 分析:雖然這是一個二維的數(shù)組,但是要求的是每一行的最大最小值,我們知道二維數(shù)組的每一行本身就是一個數(shù)組,那么我們就還需要一個控制行數(shù)的循環(huán)。要求還要輸出其下標(biāo),二維數(shù)組的下標(biāo)是兩個,每一行的最大最小值其行號不就是i,所以還要定義一個存放列號的col,并且要對它賦值為0,因為我們給max賦值為每一行的第一個元素,也就是a[i] [0],則程序為: int i,j,max,min,a[4] [5],col1=0,col2=0;for(i=0;i<4;i++)for(j=0;j<5;j++)a[i] [j]=rand();for(i=0;i<4;i++)(這個循環(huán)是控制行的,里面的循環(huán)體本身就是一個求 一維數(shù)組的最大最小值的程序) {max=a[i] [0];min=a[i] [0];for(j=0;j<5;j++){ if(maxa[i] [j])(這里是找出最小值){ min=a[i] [j];col2=j;} } printf(“max =%d, row=%d, col=%d n min =%d, row=%d, col=%d n”,max,i, col1, min,i, col2);} 4、求4*5矩陣的每一列最大值和最小值,要求賦值隨機數(shù),并且輸出它們及其下標(biāo)。 分析:雖然這是一個二維的數(shù)組,但是要求的是每一列的最大最小值,二維數(shù)組的每一列可以看成一個數(shù)組,那么我們就還需要一個控制列數(shù)的循環(huán)。要求還要輸出其下標(biāo),二維數(shù)組的下標(biāo)是兩個,每一列的最大最小值其列號不就是j,所以還要定義一個存放行號的row,并且要對它賦值為0,因為我們給max賦值為每一列的第一個元素,也就是a[0] [j],則程序為: int i,j,max,min,a[4] [5],row1=0,row2=0;for(i=0;i<4;i++)for(j=0;j<5;j++)a[i] [j]=rand();for(j=0;j<5;j++)(這個循環(huán)是控制列的,里面的循環(huán)體本身就是一個求 一維數(shù)組的最大最小值的程序){max=a[0] [j];min=a[0] [j];for(i=0;i<4;i++){ if(maxa[i] [j])(這里是找出最小值){ min=a[i] [j];row2=i;} } printf(“max =%d, row=%d, col=%d n min =%d, row=%d, col=%d n”,max, row1,j, min, row2,j);} 5、排序(冒泡法)比如說 對于5個數(shù)字排序,首先要把5個數(shù)字放到一個一維的數(shù)組里面去 所以編程的前幾句為:int a[5] for(i=0;i<5;i++)scanf(“%d”,&a*i+); 那接下來就是排序了,為了方便理解就將數(shù)組實際化:比如 a[5]里面放著{7,9,0,12,3}那畫圖出來就是 a[5] a[0] a[1] a[2] a[3] a[4] ????????????那我們排序的方法是這樣的采用這樣幾步: 1,用a[0]與后面的(a[1]~a[4]里面的每一個成員比較即是說:a[0]~a[1]比較 a[0]~a[2]比較 a[0]~a[3]比較 a[0]~a[4]比較)當(dāng)后面的成員只要發(fā)現(xiàn)比a[0]小的就與他的位置交換 這部做完之后數(shù)組就應(yīng) 該是這個樣子: a[0] a[1] a[2] a[3] a[4] ???????????2,用a[1]與后面的(a[2]~a[4]里面的每一個成員比較即是說: a[1]~a[2]比較 a[1]~a[3]比較 a[1]~a[4]比較)當(dāng)后面的成員只要發(fā)現(xiàn)比a[1]小的就與他的位置交換 這部做完之后數(shù) 組該是這個樣子:這個時候的a1不是我們賦初值時候的a1老就是我們改變后的數(shù)組所以這個時候的a1=9哦。 a[0] a[1] a[2] a[3] a[4] ???????????3,用a[2]與后面的(a[3]~a[4]里面的每一個成員比較即是說: a[2]~a[3]比較 a[2]~a[4]比較)當(dāng)后面的成員只要發(fā)現(xiàn)比a[2]小的就與他的位置交換 這部做完之后數(shù)組就應(yīng) 該是這個樣子: a[0] a[1] a[2] a[3] a[4] ???????????4,用a[3]與后面的(a[4]~a[4]里面的每一個成員比較即是說: a[3]~a[4]比較)當(dāng)后面的成員只要發(fā)現(xiàn)比a[2]小的就與他的位置交換 這部做完之后數(shù)組就應(yīng) 該是這個樣子: a[0] a[1] a[2] a[3] a[4] ???????????循環(huán)就是 寫成這個樣子的哦: for(i=0;i<4;i++)