① c語言如何學習效率更高
我自學了c++,mfc,opencv ,匯編語言,呵呵自曝一下
任何一門語言絕對不能離開實戰:
1.讀代碼,上網路搜索各種c語言的源代碼。每天讀一點,根據別人的自己模仿,不需要大的程序,哪怕是很小的一個演算法,你覺得值得學習,就記住他。
2.良好的編程習慣,關鍵語句的作用,函數的作用,文件的名稱,變數的命名,都要嚴格規范,才有助於未來的提高
3.編寫自己的程序,一周寫一個小東西,能用就型,同時要有周總結的文檔,程序員編寫文檔十分重要!!!記錄自己的程序,進步,以及想法
② C語言 怎麼完善程序功能
要完善C語言程序的功能,可以考慮以下幾個方面:
查找並解決程序中出現的錯誤:在編寫程序時常常會出現各種各樣的錯誤。需要對程序進行仔細的調試和測試,及時發現問題並解決,以確保程序的正確性。
提高程序的可讀性:編寫易於閱讀和理解的代碼可以有效地提高開發效率和維護成本,並有助於其他人更快地理解和修改程序。
添加新的功能:分析用戶需正談攔求,擴展原有的功能或添加新的功能,使程序更加實用、方便和具有競爭力。
優化程序性能:改進侍旅程序演算法和代碼結構,減少運算量、操作次數等,提高程序運行效率和響應速度。
及時更新和維護程序:主要包括糾正程序中出現的缺陷或漏洞,修補軟體中的bug,並根據不同情況和用戶反饋更新和升級程序。
總之,想要完善C語言程序功能,需要對開發需求進行充分了解,並花費足夠的時間和精力來不斷思考、改進和完善舉胡。
③ 如何提高單片機C語言代碼效率
一.盡量定義局部變數
單片機程序的全局變數一般是放在通用數據存儲器(RAM)中,而局部變數一般是放在特殊功能寄存器當中。處理寄存器數據的速度比處理RAM數據要快,如果在一個局部函數里調用一個全局變數將會多生成好幾個代碼出來。所以,少定義全局變數,多定義局部變數。如上例中,如果把延時函數里的i和j定義為全局變數,編譯後程序代碼會增加到79個位元組,多了12個位元組。
二.省略函數定義
在一個單片機程序里我們習慣在main函數的前面先定義被調用函數,然後在mian函數的下面再實現被調用函數。這樣的寫法固然是一個好習慣,但每定義一個函數會增加幾個代碼,而且函數形參數據類型越大、形參越多增加的代碼就越多,顯然這不是什麼好事。如果不定義編譯器又報錯,怎麼辦?C編譯器的編譯順序是從上往下編譯,只要被調用的函數在主調函數調用之前實現就沒有問題了。所以,筆者的習慣寫法是不用定義函數,但要按先後順序(被調用函數一定要在主調函數之前寫好)來寫函數實現,到最後再寫main函數。這樣做編譯器不但不會報錯,而且代碼得到精簡了。如上例中,把延時函數的定義刪除了,然後把延時函數的實現搬到main函數的上面,編譯後程序代碼減少到63個位元組,減少了4個位元組。
三.省略函數形參
函數帶形參,是為了在函數調用時傳遞實參,不但可以避免重復代碼出現,還可以通過傳遞不同的實參值多次調用函數且實現不同的函數功能,總體代碼也會得到精簡。在實際編程的時候,我們只要注意,還可以進一步精簡代碼。對於不是多次調用或者多次調用但實參值不變的函數我們可以省略函數形參。如上例中的延時函數,我們把它改成不帶形參的函數:
void Delayms()//延時函數
{
unsigned int i,j;
for(i=0;i<500;i++)
for(j=0;j<120;j++);//大約延時1毫秒
}
編譯後,程序代碼變成了56個位元組,精簡了11個位元組。
四.改換運算符
也許您可能沒有注意到C運算符的運用也會影響程序代碼的數量。如上例中,把延時函數里的自加運算符改成自減運算符後,如:
void Delayms(unsigned int t)//延時函數
{
unsigned int i,j;
for(i=t;i>0;i--)
for(j=120;j>0;j--);//#p#分頁標題#e#大約延時1毫秒
}
編譯後,程序代碼變成了65個位元組,精簡了2個位元組。
通過改換運算符能達到精簡代碼的例子還有:
1.把求余運算表達式改為位與運算表達式。如:b=a%8 可以改為:b=a&7。
2.把乘法運算表達式改為左移運算表達式。如:b=a*8 可以改為:b=a<<3。
3.把除法運算表達式改為右移運算表達式。如:b=a/8 可以改為:b=a>>3。
五.選擇合適的數據類型
C語言里選擇變數的數據類型很講究,變數的數據類型過小滿足不了程序的要求,變數的數據類型過大會佔用太多的RAM資源。您可能還沒有注意到數據類型定義也影響程序代碼的大小,而且這個影響還不小。如上例中,延時函數里的局部變數j定義的數據類型明顯偏大,如果把它由unsigned int改成unsigned char 。編譯後,程序代碼變成了59個位元組,精簡了8個位元組。
六.直接嵌入代碼
在您的程序里如果某個函數只調用一次,而您又要求代碼提高執行速度,建議您不要採用調用函數的形式,而應該將該函數里的代碼直接嵌入主調函數里,代碼執行效率會大大提高。
七.使用效率高的C語句
C語言里有一個三目運算符「?」,俗稱「問號表達式」。很多程序員都很喜歡使用,因為它邏輯清晰表達簡潔。
看這個問號表達式:c=(a>b) ? a+1 : b+1;實際上等效於以下的if…else結構:
if (a>b) c=a+1;
else c=b+1;
可以看到,使用問號表達式,語句相當簡潔,但它的執行效率卻很低,遠沒有if…else語句效率高。所以,當您的程序要求提高執行速度的話,建議您不要使用問號表達式了。
另外,do…while語句也比while語句的效率高。
代碼的效率問題,不是我們編程中的主要問題,除了程序要求較高的執行速度或者單片機的ROM和RAM不夠用的時候才會考慮。一般情況下,我們不用在乎。如果您一味追求高效率的代碼,可能會影響代碼的可讀性和可維護性。
④ C語言如何提高程序效率
好的代碼沒有一個統一的衡量標准,在程序員們的世界裡大家也是各自按照自己的標准衡量著自己和別人的代碼。不過有一個標准幾乎是被所有人認同的。服役時間越長、出錯率越高的代碼就是好代碼。所有的編程方法、代碼技巧甚至於設計模式都是為了達到這個目的而產生的。
如何提高程序效率
程序的效率分兩部分:時間效率和空間效率。
時間效率 : 指的是程序運行的速度
空間效率 : 指的是程序佔用內存或者外存的大小
對於這兩點的把握,我們沒有明確的方法。這里給出一些能夠達成共識的規則,大家在今後自己編碼的時候,可以通過這些規則來衡量自己的代碼是否符合要求。
規則1:不要一味地追求程序的效率
如果追求程序效率需要付出降低正確性、可靠性、健壯性、可讀性等質量代價,那麼可以放棄這部分效率的提高。
規則2:優先提高全局效率
只有整個程序的執行效率提高才有意義,把時間和精力放在某一個不常被調用的小模塊優化上得不償失。
規則3:針對瓶頸部分優化
在實際開發工作中,我們經常遇到一些程序執行時間過長,需要優化。有些人上來就開始逐行檢查代碼,把認為可能影響效率的地方都盡量修改一遍。這樣做不僅浪費時間,更重姿舉差要的是,常常修改一遍後依然看不到明顯的效果。
這種情況下,正確的方法是先找出限制效率的「瓶頸」,在這個答察部分做有針對性的優化。這么做才事半功倍。
規則4:先優化數據結構和演算法,再優化執行代碼
程序的兩大要素是演算法和數據結構,它們貫跡皮穿於程序的始終。因此,對它們的優化能夠起到意想不到的良好效果。
規則5:時間效率和空間效率的矛盾
大多數時候,時間效率和空間效率是對立的。這就是程序設計中兩個很重要的方法論,一個是「以空間換時間」,另一個是「以時間換空間」。此時應當分析那個更重要,作出適當的折中。
早間年,硬體成本比較高,人們大多都採用以時間換空間的策略,花費一些時間,減少內存開銷。如今,內存條的價格已經非常便宜了,人們注重的`是軟體的友好性,因此大部分時候都是用空間換時間。
規則6:代碼不是越短越好
很多資深程序員都會有這樣一個誤區,完成同一個功能,代碼越短越好。還經常有人說這樣的話:「就這么個功能我幾行代碼就搞定了」。其實,追求代碼精簡是一個很大的誤區。因為精簡的代碼並不一定產生高效的機器碼。同時,它還付出了可讀性這一代價。正確的做法是適當地做到代碼精簡。
注意事項
1. 書寫錯誤
經常有人把「==」誤寫成「=」。「||」、「&&」、「<=」、「>=」這類符號也很容易發生少一個的錯誤。最可怕的是編譯器根本發現不了這樣的錯誤。
2. 初始化
變數(指針、數組)被創建之後應當立刻初始化,防止把未被初始化的變數當成右值使用。
3. 數值錯誤
這也是一類非常容易忽略的錯誤。變數的初值、預設值錯誤,或精度不夠,一旦出錯不易發現。
4. 類型轉換
為了避免數據類型轉換的錯誤,我們要盡量使用顯式的數據類型轉換,避免在編譯器中執行非我們所願的隱式數據類型轉換。
5. 溢出
溢出分兩種,一種是超過數據類型取值范圍的賦值,另一種是數組下標范圍越界。這兩種都是要時刻注意的。
7. 避免編寫技巧性很高代碼
技巧性過高的代碼一定是可讀性較差的代碼,這種代碼不易維護,後期的成本較高。
8. 好代碼要復用,壞代碼要重寫
如果原有的代碼質量比較好,盡量復用它。但是不要修補很差勁的代碼。當我們遇到差勁代碼時,最好的方法是重寫新代碼替換它。
9. 盡量使用標准庫函數
對於標准庫中有的函數,我們不要再花時間自己實現。很簡單,你自己實現的一定不比庫函數效率高。
10. 把編譯器的選擇項設置為最嚴格狀態
只有最嚴格的審查自己的代碼,才能寫出優秀的軟體產品。很多人甚至連編譯過程中出現的warning都懶得處理,這種態度堅決不能有。
⑤ 怎樣提高C語言的編程能力
1、學好C語言,你可以很好地應付任何一種編程工具。
2、一定要多上機練習,通過程式了解相關知識。幾經反復方得正果。
3、不要把學習C語言當成一種任務,更不要把它看成很難完成的任務。要充滿自信,只要是一個智力正常的人都能學好C語言。始終保持游戲的心態,多發現其中的樂趣。當感到編程趣味無窮,那你在電腦方面將前程無量。
4、如果一個程式一時無法弄清楚最後暫時放在一邊,過一段時間你可能會從其他的程式中悟出道理。
5、C語言是一個整體,各個方面是有機聯系的,要從總體上把握它,不要把它割裂成互不關聯的部件。
6、不要完全相信教材(包括本講義),所有結論最好都上機驗證。
怎樣學好C語言
1. 工欲善其事,必先利其器
准備工作:一個開發環境,如Turbo C 2.0、Visual C++等開發工具;一本好教材,如譚浩強主編的《C語言程序設計》(第二版)。我當時看的是他的第一版,就為它的簡潔、完美所吸引,簡直愛不釋手,用了兩個星期一口氣看完。
2. 秘密武器
初學者學習計算機語言要會「讀程序」,要對小型的應用型、游戲型程序感興趣,並模仿去加深對C語言程序設計的理解和操作,只有不斷地寫程序、調試程序才能得到編寫程序的經驗和加深對程序的理解,這也是學習編寫優秀高級程序的秘密武器。
3. 發揚探索精神
學習C語言程序設計有點像做數學難題,只要我們善於思考,善於探索,發揚探索精神去尋找好的設計思想和方法,才能把C語言的精髓真正地掌握。
備戰C語言考試要訣
1. 了解大綱,臨陣不亂
各類筆試中,大多數考題是與大綱要求的基本內容一致的,難度不高,但內容十分廣泛,應牢固掌握C語言考試大綱要求的基礎部分。只有熟悉題型,理解語法、句法,做到心中有數,才能臨陣不亂。
2. 善於歸納,強化記憶
對於需要記憶的計算機基礎知識和基本概念,如果考試時因此失分就十分可惜。如:C語言中有幾種不同的數據類型?運算的優先順序別是怎樣的?因此我們需要善於歸納這些計算機基礎知識,並在理解的基礎上強化記憶。
3. 重視實踐,善於調試
計算機科學是一門理論性、實踐性都很強的學科,對C語言考試的參加者來說,基礎理論方面要求不高,而上機試題往往是很多考生不能通過考試的重要原因,因此要勤於實踐。
4. 多做練習,查漏補缺
在認真地學完指定用書後,最好再找些試題,認真地測試一下,一則可以檢查自己的復習情況;二則可以查漏補缺;三則可以調節心理狀況,以備正式考試時沉著冷靜、萬無一失。
⑥ 分析總結如何提高C語言的效率
竅門一:關鍵代碼使用外部功能包
Python簡化了許多編程任務,但是對於一些時間敏感的任務,它的表現經常不盡人意。使用C/C++或機器語言的外部功能包處理時間敏感任務,可以有效提高應用的運行效率。這些功能包往往依附於特定的平台,因此你要根據自己所用的平台選擇合適的功能包。簡而言之,這個竅門要你犧牲應用的可移植性以換取只有通過對底層主機的直接編程才能獲得的運行效率。以下是一些你可以選擇用來提升效率的功能包:
Cython
Pylnlne
PyPy
Pyrex
這些功能包的用處各有不同。比如說,使用C語言的數據類型,可以使涉及內存操作的任務更高效或者更直觀。Pyrex就能幫助Python延展出這樣的功能。Pylnline能使你在Python應用中直接使用C代碼。內聯代碼是獨立編譯的,但是它把所有編譯文件都保存在某處,並能充分利用C語言提供的高效率。
竅門二:在排序時使用鍵
Python含有許多古老的排序規則,這些規則在你創建定製的排序方法時會佔用很多時間,而這些排序方法運行時也會拖延程序實際的運行速度。最佳的排序方法其實是盡可能多地使用鍵和內置的sort()方法。