教了多年《C程序設計》課程,大多學生覺的這門課程難學。
其實,按照我們現(xiàn)在的教學大綱和教學要求,只要同學們掌握一些方法,克服心理上畏難、不輕言放棄,是完全可以學好的。 《C程序設計》的內容很豐富,按照我們現(xiàn)在的教學大綱,教學的主要內容是基礎知識、四種結構的的程序設計、函數(shù)與數(shù)組的應用和一些簡單的算法。
在學習時,同學們應該把主要精力放在這些部分,通過實踐(練習和上機調試等熟練掌握。當然,在初學C語言時,可能會遇到有些問題理解不透,或者表達方式與以往數(shù)學學習中不同(如運算符等),這就要求不氣餒,不明白的地方多問多想,鼓足勇氣進行學習,待學完后面的章節(jié)知識,前面的問題也就迎刃而解了,這一方面我感覺是我們同學最欠缺,大多學不好的就是因為一開始遇到困難就放棄,曾經和好多同學談他的問題,回答是聽不懂、不想聽、放棄這樣三個過程,我反問,這節(jié)課你聽過課嗎?回答又是沒有,根本就沒聽過課,怎么說自己聽不懂呢?相應的根本就沒學習,又談何學的好? 學習C語言始終要記住“曙光在前頭”和“千金難買回頭看”,“千金難買回頭看”是學習知識的重要方法,就是說,學習后面的知識,不要忘了回頭弄清遺留下的問題和加深理解前面的知識,這是我們學生最不易做到的,然而卻又是最重要的。
比如:在C語言中最典型的是關于結構化程序設計構思,不管是那種教材,一開始就強調這種方法,這時也許你不能充分體會,但是學到函數(shù)時,再回頭來仔細體會,溫故知新,理解它就沒有那么難了。學習C語言就是要經過幾個反復,才能前后貫穿,積累應該掌握的C知識。
那么,我們如何學好《C程序設計》呢? 一.學好C語言的運算符和運算順序 這是學好《C程序設計》的基礎,C語言的運算非常靈活,功能十分豐富,運算種類遠多于其它程序設計語言。在表達式方面較其它程序語言更為簡潔,如自加、自減、逗號運算和三目運算使表達式更為簡單,但初學者往往會覺的這種表達式難讀,關鍵原因就是對運算符和運算順序理解不透不全。
當多種不同運算組成一個運算表達式,即一個運算式中出現(xiàn)多種運算符時,運算的優(yōu)先順序和結合規(guī)則顯得十分重要。在學習中,只要我們對此合理進行分類,找出它們與我們在數(shù)學中所學到運算之間的不同點之后,記住這些運算也就不困難了,有些運算符在理解后更會牢記心中,將來用起來得心應手,而有些可暫時放棄不記,等用到時再記不遲。
先要明確運算符按優(yōu)先級不同分類,《C程序設計》運算符可分為15種優(yōu)先級,從高到低,優(yōu)先級為1 ~ 15,除第2、3級和第14級為從右至左結合外,其它都是從左至右結合,它決定同級運算符的運算順序。下面我們通過幾個例子來說明: (1) 5*8/4%10 這個表達式中出現(xiàn)3種運算符,是同級運算符,運算順序按從左至右結合,因此先計算5 *8=40,然后被4除,結果為10,最后是%(求余數(shù))運算,所以表達式的最終結果為10%10 = 0; (2)a = 3;b = 5;c =++ a* b ;d =a + +* b; 對于c=++a*b來說,按表中所列順序,+ +先執(zhí)行,*后執(zhí)行,所以+ + a執(zhí)行后,a的值為4,由于+ +為前置運算,所以a的值4參與運算,C的值計算式為4*5=20而不是3*5=15了;而對于d=a++*b來說,由于a + +為后置運算,所以a值為4參與運算,使得d的值仍為20,而a參與運算后其值加1,值為5。
這個例子執(zhí)行后,a的值為5,b的值為5,c的值為20,d的值也是20; (3)(a = 3,b = 5,b+ = a,c = b* 5) 例子中的“,”是逗號結合運算,上式稱為逗號表達式,自左向右結合,最后一個表達式的結果值就是逗號表達式的結果,所以上面的逗號表達式結果為40,a的值為3,b的值為8,c的值為40。 (4)a=5;b=6;c=a>b?a:b; 例中的a>b?a:b是一個三目運算,它的功能是先做關系運算a>b部分,若結果為真,則取問號后a的值,否則取冒號后b的值,因此c的值應該為6,這個運算可以用來代替if…else…語句的簡單應用。
二.學好C語言的四種程序結構 (1)順序結構 順序結構的程序設計是最簡單的,只要按照解決問題的順序寫出相應的語句就行,它的執(zhí)行順序是自上而下,依次執(zhí)行。 例如;a = 3,b = 5,現(xiàn)交換a,b的值,這個問題就好象交換兩個杯子水,這當然要用到第三個杯子,假如第三個杯子是c,那么正確的程序為: c = a; a = b; b = c; 執(zhí)行結果是a = 5,b = c = 3如果改變其順序,寫成:a = b; c = a; b = c; 則執(zhí)行結果就變成a = b = c = 5,不能達到預期的目的,初學者最容易犯這種錯誤。
順序結構可以獨立使用構成一個簡單的完整程序,常見的輸入、計算,輸出三步曲的程序就是順序結構,例如計算圓的面積,其程序的語句順序就是輸入圓的半徑r,計算s = 3.14159*r*r,輸出圓的面積s。不過大多數(shù)情況下順序結構都是作為程序的一部分,與其它結構一起構成一個復雜的程序,例如分支結構中的復合語句、循環(huán)結構中的循環(huán)體等。
(2) 分支結構 順序結構的程序雖然能解決計算、輸出等問題,但不能做判斷再選擇。對于要先做判斷再選擇的問題就要使用分支結構。
分支結構的執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴格按照語句出現(xiàn)的物理順序。分支結構的程序設計方法的關。
教了多年《C程序設計》課程,大多學生覺的這門課程難學。
其實,按照我們現(xiàn)在的教學大綱和教學要求,只要同學們掌握一些方法,克服心理上畏難、不輕言放棄,是完全可以學好的。 《C程序設計》的內容很豐富,按照我們現(xiàn)在的教學大綱,教學的主要內容是基礎知識、四種結構的的程序設計、函數(shù)與數(shù)組的應用和一些簡單的算法。
在學習時,同學們應該把主要精力放在這些部分,通過實踐(練習和上機調試等熟練掌握。當然,在初學C語言時,可能會遇到有些問題理解不透,或者表達方式與以往數(shù)學學習中不同(如運算符等),這就要求不氣餒,不明白的地方多問多想,鼓足勇氣進行學習,待學完后面的章節(jié)知識,前面的問題也就迎刃而解了,這一方面我感覺是我們同學最欠缺,大多學不好的就是因為一開始遇到困難就放棄,曾經和好多同學談他的問題,回答是聽不懂、不想聽、放棄這樣三個過程,我反問,這節(jié)課你聽過課嗎?回答又是沒有,根本就沒聽過課,怎么說自己聽不懂呢?相應的根本就沒學習,又談何學的好? 學習C語言始終要記住“曙光在前頭”和“千金難買回頭看”,“千金難買回頭看”是學習知識的重要方法,就是說,學習后面的知識,不要忘了回頭弄清遺留下的問題和加深理解前面的知識,這是我們學生最不易做到的,然而卻又是最重要的。
比如:在C語言中最典型的是關于結構化程序設計構思,不管是那種教材,一開始就強調這種方法,這時也許你不能充分體會,但是學到函數(shù)時,再回頭來仔細體會,溫故知新,理解它就沒有那么難了。學習C語言就是要經過幾個反復,才能前后貫穿,積累應該掌握的C知識。
那么,我們如何學好《C程序設計》呢? 一.學好C語言的運算符和運算順序 這是學好《C程序設計》的基礎,C語言的運算非常靈活,功能十分豐富,運算種類遠多于其它程序設計語言。在表達式方面較其它程序語言更為簡潔,如自加、自減、逗號運算和三目運算使表達式更為簡單,但初學者往往會覺的這種表達式難讀,關鍵原因就是對運算符和運算順序理解不透不全。
當多種不同運算組成一個運算表達式,即一個運算式中出現(xiàn)多種運算符時,運算的優(yōu)先順序和結合規(guī)則顯得十分重要。在學習中,只要我們對此合理進行分類,找出它們與我們在數(shù)學中所學到運算之間的不同點之后,記住這些運算也就不困難了,有些運算符在理解后更會牢記心中,將來用起來得心應手,而有些可暫時放棄不記,等用到時再記不遲。
先要明確運算符按優(yōu)先級不同分類,《C程序設計》運算符可分為15種優(yōu)先級,從高到低,優(yōu)先級為1 ~ 15,除第2、3級和第14級為從右至左結合外,其它都是從左至右結合,它決定同級運算符的運算順序。下面我們通過幾個例子來說明: (1) 5*8/4%10 這個表達式中出現(xiàn)3種運算符,是同級運算符,運算順序按從左至右結合,因此先計算5 *8=40,然后被4除,結果為10,最后是%(求余數(shù))運算,所以表達式的最終結果為10%10 = 0; (2)a = 3;b = 5;c =++ a* b ;d =a + +* b; 對于c=++a*b來說,按表中所列順序,+ +先執(zhí)行,*后執(zhí)行,所以+ + a執(zhí)行后,a的值為4,由于+ +為前置運算,所以a的值4參與運算,C的值計算式為4*5=20而不是3*5=15了;而對于d=a++*b來說,由于a + +為后置運算,所以a值為4參與運算,使得d的值仍為20,而a參與運算后其值加1,值為5。
這個例子執(zhí)行后,a的值為5,b的值為5,c的值為20,d的值也是20; (3)(a = 3,b = 5,b+ = a,c = b* 5) 例子中的“,”是逗號結合運算,上式稱為逗號表達式,自左向右結合,最后一個表達式的結果值就是逗號表達式的結果,所以上面的逗號表達式結果為40,a的值為3,b的值為8,c的值為40。 (4)a=5;b=6;c=a>b?a:b; 例中的a>b?a:b是一個三目運算,它的功能是先做關系運算a>b部分,若結果為真,則取問號后a的值,否則取冒號后b的值,因此c的值應該為6,這個運算可以用來代替if…else…語句的簡單應用。
二.學好C語言的四種程序結構 (1)順序結構 順序結構的程序設計是最簡單的,只要按照解決問題的順序寫出相應的語句就行,它的執(zhí)行順序是自上而下,依次執(zhí)行。 例如;a = 3,b = 5,現(xiàn)交換a,b的值,這個問題就好象交換兩個杯子水,這當然要用到第三個杯子,假如第三個杯子是c,那么正確的程序為: c = a; a = b; b = c; 執(zhí)行結果是a = 5,b = c = 3如果改變其順序,寫成:a = b; c = a; b = c; 則執(zhí)行結果就變成a = b = c = 5,不能達到預期的目的,初學者最容易犯這種錯誤。
順序結構可以獨立使用構成一個簡單的完整程序,常見的輸入、計算,輸出三步曲的程序就是順序結構,例如計算圓的面積,其程序的語句順序就是輸入圓的半徑r,計算s = 3.14159*r*r,輸出圓的面積s。不過大多數(shù)情況下順序結構都是作為程序的一部分,與其它結構一起構成一個復雜的程序,例如分支結構中的復合語句、循環(huán)結構中的循環(huán)體等。
(2) 分支結構 順序結構的程序雖然能解決計算、輸出等問題,但不能做判斷再選擇。對于要先做判斷再選擇的問題就要使用分支結構。
分支結構的執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴格按照語句出現(xiàn)的物理順序。分支結構的程。
(第六版) Bradley L. Jones, Peler Aitken 著. 信達工作室 譯. 人民郵電出版社 這本書對初學者很好, 如果有點基礎那就更好了. 建議選擇譚浩強譚老師的書,簡單易學,理論與實踐結合的很好,而且如果能認真學的話,你會發(fā)現(xiàn)你的C語言基礎非常的實。
也不是說其他的書不好,但是有些書只是為了讓讀者入門,沒有前途呀。 先讀譚浩強的《C語言程序設計》,這是公認的中文入門級教材。
但是書中的代碼風格不敢恭維??赐赀@本,推薦《21天學通C語言》,這本書比較好,個人感覺。
看完這兩本,你就可以進階C++了。 C語言只要把基礎打好就好,你要是想精通的話,最好是精通C++,這樣比較有前途。
但不要操之過急。
,-1,0,1,2,。),分為有符號整型(sign int)、無符號整型(unsign int)(即數(shù)學意義上的正數(shù))、短整型( short int )以及長整型(long int),而我們通常定義的int系統(tǒng)默認為sign int;
而上述四種類型int的主要區(qū)別是數(shù)值范圍不同,其中sign int 的范圍是
-32767到32767;unsign int 的范圍是 0到65534;而 long int 范圍最大,short int 范圍最小,你可以去查書。也就是說你所輸入的數(shù)據(jù)不能超過它的范圍。
(2)float(單精度)、double(雙精度)以及l(fā)ong double(長雙精度),即數(shù)學意義上的實數(shù)(包括整數(shù)和所有小數(shù));
而上述三種主要區(qū)別也是數(shù)值范圍不同,long double 的范圍最大,其次是double ,最小是 float。
選取數(shù)據(jù)類型主要是看你所用數(shù)據(jù)是整數(shù)還是實數(shù),是正數(shù)還是負數(shù),以及所用數(shù)據(jù)的范圍而選用不同的數(shù)據(jù)類型。
方法一:(調用系統(tǒng)函數(shù)庫)
#include "stdio.h"
#include "math.h" //調用系統(tǒng)函數(shù)庫
main()
{
float p,r,n;
printf("請輸入r和n的值\n");
scanf("%f,%f",&r,&n);
p=pow((1+r),n); //這就是所調用的函數(shù)
printf("%f\n",p);
}
方法二:(使用循環(huán)求值)
#include "stdio.h"
main()
{
float p,r,n,i;
printf("請輸入r和n的值\n");
scanf("%f,%f",&r,&n);
for(p=1,i=1;i<=n;i++) //使用循環(huán)求值
p=p*(1+r);
printf("%f\n",p);
}
另外,站長團上有產品團購,便宜有保證
1,C語言的運算符和優(yōu)先級
2,分支結構程序設計
3,循環(huán)結構程序
4,數(shù)組
5,函數(shù)
6,指針
7,字符類型和字符串
8,字符串與指針
9,指針數(shù)組、二級指針、指向一維數(shù)組的指針、指向函數(shù)的指針
10,返回指針的函數(shù)、數(shù)組名做函數(shù)參數(shù)
11,結構體、共用體、枚舉、自定義類型、變量存儲類別、工程文件
12,文件、宏、主函數(shù)帶形參
13,鏈表、位運算、考試環(huán)境
14,排序、強制類型轉換
我是在今學期才開始看C和C ,現(xiàn)在C學的基礎還好,C 算是大概體系了解,不過對你這個問題還是挺有感觸,就以一個初學者態(tài)度跟你講講我的感受吧!希望讓有興趣發(fā)展編程的你能快速進入這個領域。
首先,我不茍同上面哪位仁兄的說法,其實,C和C 都可以說是面向過程的語言,但C 更提供了面向對象的方法,需要說明一點,C 是倡導面向對象編程方法的,應為這是適用現(xiàn)代技術發(fā)展的要求,簡單理解,面向對象的編程方法就是預先設置好一些常用的,實用的類庫,當編程時要用到時,引用就可以了(通過對類進行實例化),就好像是預先生產出一部洗衣機,要洗衣服時候直接把衣服放進去,打開洗衣機的啟動按鈕就可以了,在面向對象編程中,假如我們已經有了要引用的類庫(這些類也可以自己編),我們只要做“啟動洗衣機按鈕”這個動作就可以了,這就是面向對象編程。面向過程的編程,簡單理解,就是除了一些基本的類似輸入輸出,數(shù)學函數(shù)之外,基本都是要全部一條龍的自己設計。
C和C 都是MS公司出的,它還有的C#就是完全面向對象的高級語言,功能非常強大,與。net平臺一起構成了MS的戰(zhàn)略。
不好意思,還是說回你感興趣的東西吧!其實學C和c 不用太多的數(shù)學知識,它要求你無非兩樣東西:1.邏輯性2.興趣,循環(huán)控制如“for,while語句”,指針,函數(shù)調用是學習C和C 的核心和重點,也是精華所在,尤其是C語言。個人建議:假如你不是要做一個C程員的話,在c學到一定基礎很程度時候可以轉向JAVA或C#等面向對象高級語言,他們聯(lián)系ASP,ASPX和JSP等web系統(tǒng)開發(fā),快速開發(fā)軟件和web系統(tǒng)方面實用性非常強。
也建議可以先從C學起,清華大學出版社的譚浩強的《C程序設計》是一本非常好的適合沒編程基礎,介紹也很徹底詳細的名書(我就是靠那本書的,呵呵),學習C時,不要冒進,認認真真打好基礎,對你以后發(fā)展其他語言甚至領域有非常大的幫助。
總體上必須清楚的:- 1)程序結構是三種: 順序結構 , 循環(huán)結構(三個循環(huán)結構), 選擇結構(if 和 switch)- 2)讀程序都要從main()入口, 然后從最上面順序往下讀(碰到循環(huán)做循環(huán),碰到選擇做選擇)。
- 3)計算機的數(shù)據(jù)在電腦中保存是以 二進制的形式. 數(shù)據(jù)存放的位置就是他的地址.- 4)bit是位 是指為0 或者1。 byte 是指字節(jié), 一個字節(jié) = 八個位.- 5)一定要記住 二進制 如何劃成 十進制。
- 概念??嫉降模? 1、編譯預處理不是C語言的一部分,不再運行時間。C語言編譯的程序稱為源程序,它以ASCII數(shù)值存放在文本文件中。
- 2、每個C語言程序中main函數(shù)是有且只有一個。- 3、在函數(shù)中不可以再定義函數(shù)。
- 4、算法的是一定要有輸出的,他可以沒有輸入。- 5、break可用于循環(huán)結構和switch語句。
- 6、逗號運算符的級別最低。- 第一章- 1)合法的用戶標識符考查:- 合法的要求是由字母,數(shù)字,下劃線組成。
有其它元素就錯了。- 并且第一個必須為字母或則是下劃線。
第一個為數(shù)字就錯了。- 關鍵字不可以作為用戶標識符號。
main define scanf printf 都不是關鍵字。迷惑你的地方If是可以做為用戶標識符。
因為If中的第一個字母大寫了,所以不是關鍵字。- 2)實型數(shù)據(jù)的合法形式:- 2.333e-1 就是合法的,且數(shù)據(jù)是2.333*10-1。
- 考試口訣:e前e后必有數(shù),e后必為整數(shù)。.- 3)字符數(shù)據(jù)的合法形式::- '1' 是字符占一個字節(jié),"1"是字符串占兩個字節(jié)(含有一個結束符號)。
- '0' 的ASCII數(shù)值表示為48,'a' 的ASCII數(shù)值是97,'A'的ASCII數(shù)值是65。- 4) 整型一般是兩個字節(jié), 字符型是一個字節(jié),雙精度一般是4個字節(jié):- 考試時候一般會說,在16位編譯系統(tǒng),或者是32位系統(tǒng)。
碰到這種情況,不要去管,一樣做題。掌握整型一般是兩個字節(jié), 字符型是一個字節(jié),雙精度一般是4個字節(jié)就可以了。
- 5)轉義字符的考查:- 在程序中 int a = 0x6d,是把一個十六進制的數(shù)給變量a 注意這里的0x必須存在。- 在程序中 int a = 06d, 是一個八進制的形式。
- 在轉義字符中,'\x6d' 才是合法的,0不能寫,并且x是小寫。- '\141' 是合法的, 0是不能寫的。
- '\108'是非法的,因為不可以出現(xiàn)8。- 6)算術運算符號的優(yōu)先級別:- 同級別的有的是從左到右,有的是從右到左。
- 7)強制類型轉換:- 一定是 (int)a 不是 int(a),注意類型上一定有括號的。- 注意(int)(a+b)和(int)a+b 的區(qū)別。
前是把a+b轉型,后是把a轉型再加b。- 8)表達式的考查:- 是表達式就一定有數(shù)值。
- 賦值表達式:表達式數(shù)值是最左邊的數(shù)值,a=b=5;該表達式為5,常量不可以賦值。- 自加、自減表達式:假設a=5,++a(是為6), a++(為5);- 運行的機理:++a 是先把變量的數(shù)值加上1,然后把得到的數(shù)值放到變量a中,然后再用這- 個++a表達式的數(shù)值為6,而a++是先用該表達式的數(shù)值為5,然后再把a的數(shù)值加上1為6,- 再放到變量a中。
進行了++a和a++后在下面的程序中再用到a的話都是變量a中的6了。- 考試口訣:++在前先加后用,++在后先用后加。
- 逗號表達式:優(yōu)先級別最低 ;表達式的數(shù)值逗號最右邊的那個表達式的數(shù)值。- (2,3,4)的表達式的數(shù)值就是4。
- 9)位運算的考查:- 會有一到二題考試題目。- 總的處理方法:幾乎所有的位運算的題目都要按這個流程來處理(先把十進制變成二進制再變成十進制)。
- 例1: char a = 6, b;- b = a<<2; 這種題目的計算是先要把a的十進制6化成二進制,再做位運算。- 例2: 一定要記住,- 例3: 在沒有舍去數(shù)據(jù)的時候,<>右移一位表示除以2。
- 10)018的數(shù)值是非法的,八進制是沒有8的,逢8進1。 - 11)%符號兩邊要求是整數(shù)。
不是整數(shù)就錯了。- 12) 三種取整丟小數(shù)的情況:- 1、int a =1.6;- 2、(int)a; - 3、- - 第二章- 1)printf函數(shù)的格式考查:- %d對應整型;%c對應字符;%f對應單精度等等。
寬度的,左對齊等修飾。- %ld對應 long int;%lf 對應double。
- 2)scanf函數(shù)的格式考察:- 注意該函數(shù)的第二個部分是&a 這樣的地址,不是a; - Scanf(“%d%d%*d%d”,&a,&b,&c); 跳過輸入的第三個數(shù)據(jù)。- 3)putchar ,getchar 函數(shù)的考查:- char a = getchar() 是沒有參數(shù)的,從鍵盤得到你輸入的一個字符給變量a。
- putchar('y')把字符y輸出到屏幕中。- 4)如何實現(xiàn)兩個變量x ,y中數(shù)值的互換(要求背下來)- 不可以把 x=y ,y=x; 要用中間變量 t=x;x=y;y=t。
- 5)如何實現(xiàn)保留三位小數(shù),第四位四舍五入的程序,(要求背下來)- 這個有推廣的意義,注意 x = (int)x 這樣是把小數(shù)部分去掉。- - 第三章- 特別要注意:c語言中是用非0表示邏輯真的,用0表示邏輯假的。
- 1)關系表達式:- 表達式的數(shù)值只能為1(表示為真),或0(表示假)- 當關系的表達是為真的時候得到1。如 9>8這個是真的,所以表達式的數(shù)值就是1;- 2)邏輯表達式:- 只能為1(表示為真),或0(表示假)- a) 共有&& || ! 三種邏輯運算符號。
- b) !>&&>|| 優(yōu)先的級別。- c) 注意短路現(xiàn)象。
考試比較喜歡考到。- d) 要表示 x 是比0大,。
double a,b;
char c;
scanf("%lf%c%lf",&a,&c,&b);
switch(c)
{case '+':printf("%g+%g=%g\n",a,b,a+b);break;
case '-':printf("%g-%g=%g\n",a,b,a-b);break;
case '*':printf("%g*%g=%g\n",a,b,a*b);break;
case '/':printf(b?"%g/%g=%g":"error\n",a,b,a/b);break;
default:printf("error\n");break;
}

聲明:本網站尊重并保護知識產權,根據(jù)《信息網絡傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個月內通知我們,我們會及時刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學習鳥. 頁面生成時間:2.673秒