第一篇:2013-2014(上)C語言授課總結
C語言授課總結
本學期擔任了2013級電子商務1班的C語言程序設計課程,教材是《C語言程序設計》,課時是15周,每周4學時,共計60學時。
C 語言對于剛接觸計算機語言的職業(yè)學生,它具有較強的抽象性且結構化程序設計語言,對初學者來說比較難于接受,也容易出現一些問題?,F針對本學期教學中的工作進行總結,以便更好的進行下學期的工作。
本學期教學工作,歸納起來主要有一下幾點。
1、注意培養(yǎng)學生的學習興趣
為使初學者能盡快地掌握計算機知識,在課程講授過程中,要特別注意培養(yǎng)學生的學習興趣。初接觸計算機時,很多學生感到新奇、好玩,這不能說是興趣,只是一種好奇。隨著課程的不斷深入,大量的規(guī)則、定義、要求和機械的格式出現,很容易使一部分(甚至是大部分)學生產生枯燥無味的感覺。為了把學生的好奇轉化為學習興趣,授課時要改變過去先給出定義和規(guī)則的講授辦法,而是從具體問題入手,努力把枯燥無味的“語言”講的生動,活潑。在第一節(jié)課上,就給學生找一些數學已學課程的問題,用算法語言來求解,使學生體會程序設計的用途和一種全新的解決問題的方法。在課程的進行中,引導學生學一種算法,就嘗試在同行課程中應用。此外,還可經常介紹一些趣味性算例,如: “水仙花數”,“競賽記分”等,培養(yǎng)學生的學習興趣,讓大家積極主動,自覺獨立地獲取知識,打好學習程序設計語言的基礎。整個教學過程中應該把解題思路,方法和步驟(即“算法”)當作授課的重點,從而讓學生明白如何分析并解決實際問題,逐漸培養(yǎng)學生進行程序設計的正確思維模式。
2、注重學生的接受能力
注重課堂教學中學生的接受能力,通過批改作業(yè),掌握學生學到多少,然后根據不同的情況有的放矢地講解。實踐課重在培養(yǎng)學生的實踐能力,學生只有勤于動腦,親自實踐,才能真正體會到其中的奧妙。在開始設計一個項目時,同學們普遍覺得比較難。對于學生在編程過程中好的算法,及時給予肯定、表揚,并鼓勵學生,有難度才有挑戰(zhàn),把完成項目當作學習,也當作對自己能力的培養(yǎng)。完成一個項目,同學們都有這樣的體會:原來這個項目是這么簡單。雖然開始有點難,但是只要自己跟著老師的步伐,多思考,多看書,對自己的程序反復調試,都可以做出來。對學生在程序調試過程中出現的的問題,只要學生能夠通過自己努力解決的問題,只是給學生提示一下錯誤出現的哪個位置,盡量讓學生自己去解決;對于學生確實不能解決的問題,提示知識點,再給予解答,這樣培養(yǎng)了學生自主探究問題、合作學習、解決問題的能力,還教給他們學習的方法而不是僅僅傳授給他們知識,要讓他們學會學習,發(fā)掘學生自身潛能。
3、教給學生思考問題的方法
教給他們思考問題的方法,在講課時,著重從三方面入手:一是幫助同學歸納總結已學過的知識,使之系統化,在理性認識上得到更進一步的提高。二是根據同學們學習中遇到的疑難問題,重點分析一些具有代表性的例題,通過現成的例子舉一反三,不僅僅講懂一個程序,更重要的是講解思考問題的方法,設計程序的思路,使學生拿到一個題目后知道,應該怎樣分析題目,怎樣一步步展開,解決問題的關鍵是什么。引導學生們不要采取死記硬背的方法,提倡把課程學活。把注意力放在解決問題的思路上和提高解決問題的能力上。三是選一些典型的題目,老師和學生共同探討不同的編程方法,活躍解題思路,人人開動腦筋,對同一個題目從不同的角度去考慮,運用學過的知識,用不同的方法去解決,然后再系統講解。這樣既能充分調動同學們學習的主動性和積極性,活躍學習空氣,又能在同學之間起到一個互相學習和交流的作用。根據教學內容和學生的實際水平,在教學的過程中,適時地根據項目演示結果,提出問題,啟發(fā)引導學生去分析問題,解決問題,提問以達到理解、掌握知識,提高思想覺悟的目的。在新舊知識的銜接點上提出問題,以舊知識引出新知識,引導學生思考,回憶舊知識,并在舊知識基礎上理解新知識;在分析項目的實現過程、項目的重點、難點時提出問題,就像導游將游覽路線、游覽對象的精華描述給游客。
4、重視上機實踐環(huán)節(jié)。
計算機語言課是一門實踐性很強的課。教學過程中除了教師的課堂講解外,主要靠學生的上機實踐來培養(yǎng)學生的操作能力和靈活運用能力。我們提倡“精講多練”,具體措施為:(1)壓縮講授課時,加強上機訓練,使學生能有更多的時間進行上機實踐。(2)布置與現實生活學習緊密聯系的上機題目,培養(yǎng)學生編寫程序解決問題的能力與興趣。(3)教師起引導作用。(4)提倡上機實踐互幫互助,使每個學生的優(yōu)點都能得到鍛煉。
5、將項目教學法融入到教學中。
在 C 語言的教學過程中,我采用了項目教學法。項目教學法,是師生通過共同實施一個完整的項目工作而進行的教學活動。通過對完整的項目的系統分析,培養(yǎng)學生良好的編程習慣,善于獲取他人經驗的能力以及掌握綜合運用所學知識的能力,從而完全了解項目流程,真正提高編程水平。如讓學生編寫一個簡單的學生信息管理系統,這不但使得學生掌握了所學的C語言知識,同時也使得學生了解了數據字典、流程圖等其它軟件工程方面的內容。這種教學方法,不但提高了學生的實踐能力,同時也激發(fā)了學生的學習興趣。
任何教學方法只有在一定的條件下才會顯示出優(yōu)勢或不足,任何一種教學方法都有其適用范圍。要教好一門語言的實踐課,關鍵在于激發(fā)學生的學習興趣,讓學生主動、愉快地學習,滿足他們的求知欲,這樣才能取得良好的教學效果,這也是我以后的教學工作的一大目標。
第二篇:C語言總結
C語言總結
--------13軟件工程一班郭笑笑
------------老師:
徐
靜
經過一學期的對c語言這門課程學習,我對其有了一定的了解,但是也僅僅是停留在了解的范圍,對里面的好多東西還是很陌生,更多的在運用起來的時候還是感到很棘手,因為私下練習的時間太短了。
上機實驗是學習程序設計語言必不可少的實踐環(huán)節(jié),特別是c語言靈活、簡潔,更需要通過編程的實踐來真正掌握它。對于程序設計語言的學習目的,可以概括為學習語法規(guī)定、掌握程序設計方法、提高程序開發(fā)能力,這些都必須通過充分的實際上機操作才能完成。
學習c程序設計語言除了課堂講授以外,必須保證有不少于課堂講授學時的上機時間,為此,結合課堂講授的內容和進度,老師為我們安排了多次上機實驗。課程上機實驗的目的,不僅僅是驗證教材和講課的內容、檢查自己所編的程序是否正確,還可以有以下幾方面的好處:
1.加深對課堂講授內容的理解。
2.熟悉程序開發(fā)環(huán)境、學習計算機系統的操作方法。
3.學習上機調試程序等等。我對程序調試還沒有完全掌握,不能很快找出程序的錯誤。
因為課堂上要講授許多關于c語言的語法規(guī)則,聽起來十分枯燥無味,死記硬背也不容易記住。還有一些內容自己認為在課堂上聽懂了,但上機實踐中會發(fā)現原來理解的偏差,不能很好地利用學到的知識編寫c語言程序,解決實際問題??偟膩碚f在這半年的時間里,我學到了許多,但是也有很多內容是不會的。我覺得我在這一學期中掌握的內容有(收獲):
1.printf(“%*sn”,M,“字符串”+N)的用法說明 2.scanf函數的用法和說明
3.自增自減:n++、n--、++n、--n 4.進制的轉換:二進制、八進制、十進制、十六進制
5.變量在內在中的存放與轉換.6.3.字符-----‘’的作用:與一些字母組成轉義字符,與數字組成代表八進制數.另外說明一下r,其作用是將當前位置移到本行開頭,后面再輸入字符時,原有的字符將會被覆蓋。
7.5.逗號運算符.8..局部變量.全局變量 9..預編譯處理命令
10.#define:宏定義只是在編譯前對代碼作簡單的字符串替換,不會考慮任何錯誤.宏定義不是語句,后面不要加“;”.似懂非懂(不能很好地應用): 1.退出過程.(1)continue :用于結束某次循環(huán)繼續(xù)下一循環(huán).(2)break: 用于結束循環(huán)或結束switch語句.(3)return: 用于結束某函數.(4)exit: 用于結束某一程 2.void的說明.Void代表空類型,在定義指針變量或函數時可以定義為void型,定義指針變量后可以在用的時候通過強制類型轉換使其指向任何類型的數據.定義函數時,只是說明不能有返回值.如果函數中出現return就會報錯.3.指針:(1).指針的加減法:指針的加減法不是作簡單的加減,而是以指針變量所占的字節(jié)數為單位進行加減.(2).數組名是指針常量,不能改變其值,比如數組a[ ],如果進行a++;就會報錯
(3).雖然指針變量中存放的地址是整型數據,但不能將整型數據直接賦值給指針變量,應該這樣(假如p為int *型),p=(int *)1000;但禁用些法,因為你不知道1000這個單元有沒有被其它單元占用,后果不可預料,同樣也不能將一個指針變量的值直接賦給整形變量,也要進行強制類型轉換.(4)定義指針后,在使用之前一定要先給它賦初值,切記
(5).二維數組中指針問題(int a[3] [4]),數組名a是一個指向行的指針(指向數組),而在其前面加一個 * ,*a就是指向列的指針(指向無素).a與*都是指向a[0][0];但a+1(行指針)指向a[1][0];而*a+1(列指針,和*(a+0)+1一樣)卻指向a[0][1];同樣在a+1前加一個*就又變成列指針了,*(a+1)+2就指向a[1][2].(6),復雜類型的說明:從變量名處起,根據運算符優(yōu)先級結合,一步一步分析,下面以一個比較復雜的類型(int *(*p(int))[ ])為例: 第一步,p先與()結合,說明是一個函數,第二步,()內有一個int,說明函數有一個形參為int型,第三步與*結合,說明返回的是一個指針變量,第四步與[ ]結合,說明該指針變量指向數組,第五步再與*結合,說明數組中的元素為指針型,第六步說明數組中的指針元素的類型為int型,完畢,所以這是一個返回一個由整型指針變量組成的數組的指針變量的函數。4.結構體的應用。完全不會的:
1.二制數中原碼.反碼.補碼以及進制之間的轉換: 原碼:由符號位和該數的絕對值的二進制數組成.反碼:負數的反碼為除符號位以外所有位均取反的結果.正數的反碼與原碼相同,其補碼也一樣,后面不說了.補碼:負數的補碼是在其反碼的基礎之上加1;總體來說,經過一學期的學習,我只能說我對c語言編程有了一點了解,在這一學期中接觸了很多新知識,但是我不能說這學期可以畫上一個圓滿的句號,因為我還有很多不會的地方,還需要學習,而且這只是我的軟件編程學習生涯的一個開始,以后的學習也必須要努力,提高自己的專業(yè)素養(yǎng)。
第三篇:c語言總結
注意函數的參數傳遞。
1.求一位數組a中(或若干整數)所有元素的平均值。
(注意數組作函數參數的情況)
2.求一位數組a中的最大/最小元素及下標。(例如p59,p85)
求二維數組a中的最小值/最大值。(例如p61)
3.判斷m是否為素數。(例如課本p106)
求一位數組a中素數(非素數)之和/素數(非素數)個數。
將[m,n]之間的所有素數存放到以為數組a中,并輸出這些素數。(例如p62)
4.求一位數組a中值為奇數(偶數)的元素的平均值(總和)。
5.輸入一個百分制成績,打印出五級積分成績??荚嚦煽冊?0分或90分以上為優(yōu)秀,80~89為良好,70~79為中等,60~69為及格,低于60分為不及格。(例如p39)
6.求給定正整數n的階乘。(例如p75)
求)(例如課本p111)?n!(即求:1!+2!+3!+…..+20!
n=120
7.打印輸出以下圖形(圖為每兩個“*”之間有一個空格)(例如p54)
*
* * *
* * * * *
* * * * * * *
打印九九乘法表的一部分。(例如課本p104)
8.輸出100~200之間(或以為數組a中)既不能杯3整除也不能被7整除的整數之和,并統計這些整數的個數。(例如p47)(注意數組作函數參數的情況)
9.求N*N矩陣的主對角線/副對角線元素的和并輸出。(例如p71)
10.求字符串中大寫字母/小寫字母(空格和非空格的)個數并輸出。(例如p71)
11.求字符串的長度并輸出。(例如p71)
12.從鍵盤上輸入兩個正整數x,y,求它們的最大公約數(最小公倍數)。(例如p45)
13.按下面的公式求sum的值。(例如p51,p82)
Sum=1-2+3-4+5-6+……+99-100 1111+++......234100
11111????......?S=1+ 3*35*57*79*9n*nSum=1+
14.求指定字符在字符串中出現的次數并輸出。(例如p72)
求指定字符在字符串中第一次出現的位置(該字符的下標)并輸出。
15.判斷m是否為素數。(例如課本p106)
判斷m~n中素數(非素數)之和/素數(非素數)的個數。
16.計算1到M(M為偶數)之間的奇數之和及偶數之和。(例如p44)
17.求Cn?mm!(例如課本p154)n!*(m?n)!
18.打印出1至1000中滿足其個位數字的立方等于其本身的所有整數。
19.計算正整數num的各位上的數字之積。(例如課本p117)
20.把一個整數轉換成字符串,并倒序保存在字符數組str中。
第四篇:C語言精華總結
語言精華總結 一.指針。
它的本質是地址的類型。在許多語言中根本就沒有這個概念。但是它卻正是C靈活,高效,在面向過程的時代所向披靡的原因所在。因為C的內存模型基本上對應了現在von Neumann(馮·諾伊曼)計算機的機器模型,很好的達到了對機器的映射。不過有些人似乎永遠也不能理解指針【注1】。
注1:Joel Spolsky就是這樣認為的,他認為對指針的理解是一種aptitude,不是通過訓練就可以達到的
http://004km.cn/wiki/APL_programming_language
下面有一段是這樣的: APL is renowned for using a set of non-ASCII symbols that are an extension of traditional arithmetic and algebraic notation.These cryptic symbols, some have joked, make it possible to construct an entire air traffic control system in two lines of code.Because of its condensed nature and non-standard characters, APL has sometimes been termed a “write-only language”, and reading an APL program can feel like decoding an alien tongue.Because of the unusual character-set, many programmers used special APL keyboards in the production of APL code.Nowadays there are various ways to write APL code using only ASCII characters.在C++中有函數重載(overload)可以用來區(qū)別不同函數參數的調用,但它還是不能表示任意數量的函數參數。
在標準C語言中定義了一個頭文件專門用來對付可變參數列表,它包含了一組宏,和一個va_list的typedef聲明。一個典型實現如下【注14】: typedef char* va_list;#define va_start(list)list =(char*)&va_alist #define va_end(list)#define va_arg(list, mode)((mode*)(list += sizeof(mode)))[-1] 注14:你可以查看C99標準7.15節(jié)獲得詳細而權威的說明。也可以參考Andrew Konig的《C陷阱與缺陷》的附錄A。ANSI C還提供了vprintf函數,它和對應的printf函數行為方式上完全相同,只不過用va_list替換了格式字符串后的參數序列。至于它是如何實現的,你在認真讀完《The C Programming Language》后,我相信你一定可以do it yourself!使用這些工具,我們就可以實現自己的可變參數函數,比如實現一個系統化的錯誤處理函數error。它和printf函數的使用差不多。只不過將stream重新定向到stderr。在這里我借鑒了《C陷阱與缺陷》的附錄A的例子。實現如下: #include #include
void error(char* format, …){ va_list ap;va_start(ap, format);
fprintf(stderr, “error: “);vfprintf(stderr, format, ap);va_end(ap);fprintf(stderr, “n”);exit(1);} 你還可以自己實現printf: #include
int printf(char* format, …){ va_list ap;va_start(ap, format);int n = vprintf(format, ap);va_end(ap);return n;} 我還專門找到了VC7.1的頭文件看了一下,發(fā)現各個宏的具體實現還是有區(qū)別的,跟很多預處理(preprocessor)相關。其中va_list就不一定是char*的別名。typedef struct { char *a0;/* pointer to first homed integer argument */ int offset;/* byte offset of next parameter */ } va_list;其它的定義類似。
經常在Windows進行系統編程的人一定知道函數調用有好幾種不同的形式,比如__stdcall,__pascal,__cdecl。在Windows下_stdcall,__pascal是一樣的,所以我只說一下__stdcall和__cdecl的區(qū)別。
(1)__stdcall表示被調用端自身負責函數引數的壓棧和出棧。函數參數個數一定的函數都是這種調用形式。
例如:int fun(char c, double d),我們在main函數中使用它,這個函數就只管本身函數體的運行,參數怎么來的,怎么去的,它一概不管。自然有main負責。不過,不同的編譯器的實現可能將參數從右向左壓棧,也可能從左向右壓棧,這個順序我們是不能加于利用的【注15】。注15:你可以在Herb Sutter的《More Exceptional C++》中的條款20:An Unmanaged Pointer Problem, Part 1:Parameter Evaluation找到相關的細節(jié)論述。
(2)__cdecl表示調用端負責被調用端引數的壓棧和出棧。參數可變的函數采用的是這種調用形式。
為什么這種函數要采用不同于前面的調用形式呢?那是因為__stdcall調用形式對它沒有作用,被調用端根本就無法知道調用端的引數個數,它怎么可能正確工作?所以這種調用方式是必須的,不過由于參數參數可變的函數本身不多,所以用的地方比較少。
對于這兩種方式,你可以編制一些簡單的程序,然后反匯編,在匯編代碼下面你就可以看到實際的區(qū)別,很好理解的!重載函數有很多匹配(match)規(guī)則調用。參數為“?”的函數是匹配最低的,這一點在Andrei Alexandrescu的驚才絕艷之作《Modern C++ Design》中就有用到,參看Page34-35,2.7“編譯期間偵測可轉換性和繼承性”。
后記:
C語言的細節(jié)肯定不會只有這么多,但是這幾個出現的比較頻繁,而且在C語言中也是很重要的幾個語言特征。如果把這幾個細節(jié)徹底弄清楚了,C語言本身的神秘就不會太多了。C語言本身就像一把異常鋒利的剪刀,你可以用它做出非常精致優(yōu)雅的藝術品,也可以剪出一些亂七八糟的廢紙片。能夠將一件武器用到出神入化那是需要時間的,需要多長時間?不多,請你拿出一萬個小時來,英國Exter大學心理學教授麥克.侯威專門研究神童和天才,他的結論很有意思:“一般人以為天才是自然而生、流暢而不受阻的閃亮才華,其實,天才也必須耗費至少十年光陰來學習他們的特殊技能,絕無例外。要成為專家,需要擁有頑固的個性和堅持的能力??每一行的專業(yè)人士,都投注大量心血,培養(yǎng)自己的專業(yè)才能。”【注16】 注16:臺灣女作家、電視節(jié)目主持人吳淡如《拿出一萬個小時來》?!蹲x者》2003.1期?!安挥锰Γ灰掷m(xù)下去。想擁有一輩子的專長或興趣,就像一個人跑馬拉松賽一樣,最重要的是跑完,而不是前頭跑得有多快?!?/p>
第五篇:C語言總結
引子:
#include
/*預處理*/ #include
/*函數聲明*/ Void prt(char *names[],int n);Void main(void){ Char *names[]={“CHINA”,”AMERICA”,”AUSTRALIA”,”FRANCE”,”GERMAN”};
Int n=5;
/*申請變量,變量類型,運算*/ Printf(“原順序國家名:n”);Prt(names,n);
/*函數的引用*/ Sort(names,n);Printf(“排序后的國家名:n”);Prt(names,n);} Void sort(char *names[],int n)
/*函數體*/ { Char *t;
/*指針*/ Inti,j,k;For(i=0;i /*for循環(huán)結構*/ { K=I;For(j=i+1;j Inti;For(i=0;i Print(“%sn”,names[i]);} C程綜述:程序均有程序主體,編譯預處理,注釋三部分。后兩者,為模塊工具與可選擇添加的輔助注解,程序主體為核心,主要為函數來體現功能。函數,變量,通過三種運算三種結構根據算法形成功能模塊,實現預期?;A篇 標識符:C程中有一系列表示類型名稱函數名稱等程序內部特定名稱的字母組合,稱之為關鍵字,這些不可更改不可移作他用。用戶規(guī)定的一切變量或函數名等,不得與之沖突。(C 程識別大小寫)標識符規(guī)則: 第一個字符必為字母或下劃線,內部無特殊字符(除字母數字下劃線); 不與關鍵字沖突; C程區(qū)分大小寫。 數據類型:基本類型:整型int,字符型 char,實型double/float,空類型 void; 構造類型:數組[],結構體struct,共用體union,枚舉型enum; 指針類型:* ; 基本類型: int(4):常量:八進制以0開頭(均小于8),十六進制以0X,0x開頭(0~9,a~f) 允許后綴字母,L:長整型;U:無符號整型.變量:short int(2)短整型,long int(2)長整型,unsigned/signed無/有符號整型前綴;整型變量以補碼(數據絕對值二進制原碼取反加一)形式存在于內存,有界,有溢出,溢出時從最小起循環(huán)。 Float:常量:浮點數,指數形式:E: 123e2=123x10^2.可后綴f:單精度,L:長雙精度 E前必有數字,E后必為整數 變量:float(4):單精度,double(8):雙精度,long double(10)長雙精度 Char:常量:單引號,char(1)以ASCII碼存儲,與整型通用。變量同。字符串:引號,末尾