張惠文


摘 要: 高效性是檢驗程序設計水平的標準之一,本文就同一個問題給出兩個略有不同的程序,兩個程序均可達到問題的要求,即個兩個程序都具備正確性的要求,但從效率角度考慮則有所區別。
關鍵詞: C語言 程序 高效性
C語言是在國內外廣泛使用的一種計算機語言,其功能豐富、表達能力強、使用靈活方便、應用面廣、目標程序效率高、可移植性好,既具有高級語言的優點,又具有低級語言的許多特點,因此能準確掌握并使用C語言可以為養成良好的編程習慣及編寫高效率的程序打下良好基礎[1-2]。本文主要采用C語言編寫同一問題的兩個程序,指出兩個程序在特定情況下執行效率的不同。
1.問題的提出
數組是C語言中常用的存儲同類型數據的數據結構,用來解決較為復雜的編程問題,通常將類型相同的數據單元組織在一起,這樣處理相較于為每個變量分配獨立的存儲單元更有效率。本文即采用數組存儲數據,編程實現如下問題:將一個數組中的元素逆序存放。如:假設數組中原來存有1,2,3,4,5,6,7,8,9,10,程序可以實現將該數組中的元素順序逆轉為10,9,8,7,6,5,4,3,2,1。
2.程序
針對上述問題給出以下兩個程序。
程序1:
#defineN10
#include
intmain()
{inti,t,a[N];
printf("%s%d%s/n","輸入",N,"個數組元素:");
for(i=0;i scanf("%d",&a[i]); printf("數組元素的原始順序:/n"); for(i=0;i printf("%d",a[i]); printf("/n"); for(i=0;i {t=a[i];a[i]=a[N-1-i];a[N-1-i]=t;} printf("逆序操作后的順序:/n"); for(i=0;i printf("%d",a[i]); printf("/n"); return0; } 程序2: #defineN10 #include intmain() {inti,t,a[N]; printf("%s%d%s/n","輸入",N,"個數組元素:"); for(i=0;i scanf("%d",&a[i]); printf("數組元素的原始順序:/n"); for(i=0;i printf("%d",a[i]); printf("/n"); for(i=0;i<(N-1)/2;i++) {t=a[i];a[i]=a[N-1-i];a[N-1-i]=t;} printf("逆序操作后的順序:/n"); for(i=0;i printf("%d",a[i]); printf("/n"); return0; } 以上兩個程序的設計思想是依次進行首尾對稱位置的數據交換,直到完成所有數據逆轉,見圖1。需要注意的是,交換時只需對一半的元素進行操作,否則結果會還原為原先的順序。 圖1 程序設計思想示意圖 程序1與程序2分別在VC6.0環境下運行,結果相同,運行截圖見圖2。 圖2 程序運行截圖 3.程序比較 仔細比較兩個程序,發現兩個程序僅在第12行有區別,程序1為for(i=0;i 圖3 程序1設計思想示意圖 圖4 程序2設計思想示意圖 4.結語 C語言是一種使用靈活的計算機語言,使用不當或考慮欠周全,都會導致意想不到的結果;同時,由于其功能豐富、表達能力強,又能達到其他計算機語言所達不到的效果,這正是C語言至今仍被多數計算機專業人員常常使用的原因[3-4]。本文通過對同一問題的兩個不同程序的比較,提出在熟練掌握C語言、正確編寫C程序的基礎上,盡可能進一步提高程序的效率。 參考文獻: [1]薛玉瑩.論《C語言程序設計》課程的學習.計算機光盤軟件與應用[J].2013.8:188-189. [2]譚浩強.C程序設計(第三版)[M].北京:清華大學出版社,2005. [3]孔垂柳,田地.基于程序設計思想的C語言教學方案[J].吉林大學學報(信息科學版),2005,23(S0):5-6. [4]陶靜.C語言教學方法探討[J].東南大學學報(哲學社會科學版),2006,8(增刊):193-194.