當前位置:首頁 » 編程語言 » 老譚C語言位運算課件
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

老譚C語言位運算課件

發布時間: 2023-01-26 11:57:06

c語言編程入門書籍

C語言其實有很多好書,我們上學普遍學的是老譚的書,對於應付考試,考計算機等級夠用了。但是對於一個真正想把編程當飯吃的人來說,這是根本不夠的。從入門到精通,學習編程總有個過程。不同階段看不同的書,或者看一本能「活到老,學到老」的書。編程書籍以國外的受歡迎程度遠遠大於國內。下面給大家推薦幾本:

入門:

C語言入門經典

《C語言入門經典》例子簡單生活化,而且每個例子分析很細。章節安排合理,章末的例子還特別注重思路的引導,而且分析起來特別有成就感。這本書是自學過程的一本好書。

進階:

C primer plus

這本書很適合希望系統學習C語言的讀者,正如他的名字,是一本不錯的入門和進階的書。書中的每一個知識點都有很多生動簡單的示例,並給出了相應的運行結果。總之,在看這本書的`過程中,有一種一氣呵成的感覺。

高手:

C專家編程

《C專家編程》展示了最優秀的C程序員所使用的編碼技巧,並專門開辟了一章對C++的基礎知識進行了介紹。書中C的歷史、語言特性、聲明、數組、指針、鏈接、運行時、內存以及如何進一步學習C++等問題進行了細致的講解和深入的分析。

本書可以幫助有一定經驗的C程序員成為C編程方面的專家,對於具備相當的C語言基礎的程序員,本書可以幫助他們站在C的高度了解和學習C++。

當然,C語言的書籍很多,大家也不必拘泥於推薦的書籍,適合自己的才是最好的。只讀書而不去實際動手,這相當於紙上談兵。理論聯系實際才是硬道理。


② C語言程序設計(譚浩強版)

C語言程序設計-譚浩強

鏈接: https://pan..com/s/1oyinQqqzKorqQomnWekeDQ

?pwd=8zg5 提取碼: 8zg5

本書內容先進,體系合理,概念清晰,講解詳盡,降低台階,分散難點,例題豐富,深入淺出,文字流暢,通俗易懂,是初學者學習C程序設計的理想教材,可作為高等學校各專業的正式教材,也是一本自學的好教材。


③ c語言的學習方法

得從點點滴滴的東西做起。。。本人也是學這個的,有些體會,。
《C程序設計》的內容很豐富,按照我們現在的教學大綱,主要內容是基礎知識、四種結構的的程序設計、函數與數組的應用和一些簡單的演算法。在學習時,同學們應該把主要精力放在這些部分,通過實踐(練習和上機調試等熟練掌握。當然,在初學C語言時,可能會遇到有些問題理解不透,或者表達方式與以往數學學習中不同(如運算符等),這就要求不氣餒,不明白的地方多問多想,鼓足勇氣進行學習,待學完後面的章節知識,前面的問題也就迎刃而解了,這一方面我感覺是我們同學最欠缺,大多學不好的就是因為一開始遇到困難就放棄,曾經和好多同學談他的問題,回答是聽不懂、不想聽、放棄這樣三個過程,我反問,這節課你聽過課嗎?回答又是沒有,根本就沒聽過課,怎麼說自己聽不懂呢?相應的根本就沒學習,又談何學的好?
學習C語言始終要記住「曙光在前頭」和「千金難買回頭看」,「千金難買回頭看」是學習知識的重要方法,就是說,學習後面的知識,不要忘了回頭弄清遺留下的問題和加深理解前面的知識,這是我們學生最不易做到的,然而卻又是最重要的。比如:在C語言中最典型的是關於結構化程序設計構思,不管是那種教材,一開始就強調這種方法,這時也許你不能充分體會,但是學到函數時,再回頭來仔細體會,溫故知新,理解它就沒有那麼難了。學習C語言就是要經過幾個反復,才能前後貫穿,積累應該掌握的C知識。
那麼,我們如何學好《C程序設計》呢?
一.學好C語言的運算符和運算順序
這是學好《C程序設計》的基礎,C語言的運算非常靈活,功能十分豐富,運算種類遠多於其它程序設計語言。在表達式方面較其它程序語言更為簡潔,如自加、自減、逗號運算和三目運算使表達式更為簡單,但初學者往往會覺的這種表達式難讀,關鍵原因就是對運算符和運算順序理解不透不全。當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則顯得十分重要。在學習中,只要我們對此合理進行分類,找出它們與我們在數學中所學到運算之間的不同點之後,記住這些運算也就不困難了,有些運算符在理解後更會牢記心中,將來用起來得心應手,而有些可暫時放棄不記,等用到時再記不遲。
先要明確運算符按優先順序不同分類,《C程序設計》運算符可分為15種優先順序,從高到低,優先順序為1 ~ 15,除第2、3級和第14級為從右至左結合外,其它都是從左至右結合,它決定同級運算符的運算順序。下面我們通過幾個例子來說明:
(1) 5*8/4%10 這個表達式中出現3種運算符,是同級運算符,運算順序按從左至右結合,因此先計算5 *8=40,然後被4除,結果為10,最後是%(求余數)運算,所以表達式的最終結果為10%10 = 0;
(2)a = 3;b = 5;c =++ a* b ;d =a + +* b;
對於c=++a*b來說,按表中所列順序,+ +先執行,*後執行,所以+ + a執行後,a的值為4,由於+ +為前置運算,所以a的值4參與運算,C的值計算式為4*5=20而不是3*5=15了;而對於d=a++*b來說,由於a + +為後置運算,所以a值為4參與運算,使得d的值仍為20,而a參與運算後其值加1,值為5。 這個例子執行後,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)順序結構
順序結構的程序設計是最簡單的,只要按照解決問題的順序寫出相應的語句就行,它的執行順序是自上而下,依次執行。
例如;a = 3,b = 5,現交換a,b的值,這個問題就好象交換兩個杯子水,這當然要用到第三個杯子,假如第三個杯子是c,那麼正確的程序為: c = a; a = b; b = c; 執行結果是a = 5,b = c = 3如果改變其順序,寫成:a = b; c = a; b = c; 則執行結果就變成a = b = c = 5,不能達到預期的目的,初學者最容易犯這種錯誤。 順序結構可以獨立使用構成一個簡單的完整程序,常見的輸入、計算,輸出三步曲的程序就是順序結構,例如計算圓的面積,其程序的語句順序就是輸入圓的半徑r,計算s = 3.14159*r*r,輸出圓的面積s。不過大多數情況下順序結構都是作為程序的一部分,與其它結構一起構成一個復雜的程序,例如分支結構中的復合語句、循環結構中的循環體等。
(2) 分支結構
順序結構的程序雖然能解決計算、輸出等問題,但不能做判斷再選擇。對於要先做判斷再選擇的問題就要使用分支結構。分支結構的執行是依據一定的條件選擇執行路徑,而不是嚴格按照語句出現的物理順序。分支結構的程序設計方法的關鍵在於構造合適的分支條件和分析程序流程,根據不同的程序流程選擇適當的分支語句。分支結構適合於帶有邏輯或關系比較等條件判斷的計算,設計這類程序時往往都要先繪制其程序流程圖,然後根據程序流程寫出源程序,這樣做把程序設計分析與語言分開,使得問題簡單化,易於理解。程序流程圖是根據解題分析所繪制的程序執行流程圖。
學習分支結構不要被分支嵌套所迷惑,只要正確繪制出流程圖,弄清各分支所要執行的功能,嵌套結構也就不難了。嵌套只不過是分支中又包括分支語句而已,不是新知識,只要對雙分支的理解清楚,分支嵌套是不難的。下面我介紹幾種基本的分支結構。
①if(條件)
{
分支體
}
這種分支結構中的分支體可以是一條語句,此時「{ }」可以省略,也可以是多條語句即復合語句。它有兩條分支路徑可選,一是當條件為真,執行分支體,否則跳過分支體,這時分支體就不會執行。如:要計算x的絕對值,根據絕對值定義,我們知道,當x>=0時,其絕對值不變,而x<0時其絕對值是為x的反號,因此程序段為:if(x<0) x=-x;
②if(條件)
{分支1}
else
{分支2}
這是典型的分支結構,如果條件成立,執行分支1,否則執行分支2,分支1和分支2都可以是1條或若干條語句構成。如:求ax^2+bx+c=0的根
分析:因為當b^2-4ac>=0時,方程有兩個實根,否則(b^2-4ac<0)有兩個共軛復根。其程序段如下:

d=b*b-4*a*c;
if(d>=0)
{x1=(-b+sqrt(d))/2a;
x1=(-b-sqrt(d))/2a;
printf(「x1=%8.4f,x2=%8.4f\n」,x1,x2);
}
else
{r=-b/(2*a);
i =sqrt(-d)/(2*a);
printf(「x1=%8.4f+%8.4fi\n」r, i);
printf(「x2=%8.4f-%8.4fi\n」r,i)
}
③嵌套分支語句:其語句格式為:
if(條件1) {分支1};
else if(條件2) {分支2}
else if(條件3) {分支3}
……
else if(條件n) {分支n}
else {分支n+1}
嵌套分支語句雖可解決多個入口和出口的問題,但超過3重嵌套後,語句結構變得非常復雜,對於程序的閱讀和理解都極為不便,建議嵌套在3重以內,超過3重可以用下面的語句。
④switch開關語句:該語句也是多分支選擇語句,到底執行哪一塊,取決於開關設置,也就是表達式的值與常量表達式相匹配的那一路,它不同if…else 語句,它的所有分支都是並列的,程序執行時,由第一分支開始查找,如果相匹配,執行其後的塊,接著執行第2分支,第3分支……的塊,直到遇到break語句;如果不匹配,查找下一個分支是否匹配。這個語句在應用時要特別注意開關條件的合理設置以及break語句的合理應用。
(3)循環結構:
循環結構可以減少源程序重復書寫的工作量,用來描述重復執行某段演算法的問題,這是程序設計中最能發揮計算機特長的程序結構,C語言中提供四種循環,即goto循環、while循環、do –while循環和for循環。四種循環可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto循環,因為強制改變程序的順序經常會給程序的運行帶來不可預料的錯誤,在學習中我們主要學習while、do…while、for三種循環。常用的三種循環結構學習的重點在於弄清它們相同與不同之處,以便在不同場合下使用,這就要清楚三種循環的格式和執行順序,將每種循環的流程圖理解透徹後就會明白如何替換使用,如把while循環的例題,用for語句重新編寫一個程序,這樣能更好地理解它們的作用。特別要注意在循環體內應包含趨於結束的語句(即循環變數值的改變),否則就可能成了一個死循環,這是初學者的一個常見錯誤。
在學完這三個循環後,應明確它們的異同點:用while和do…while循環時,循環變數的初始化的操作應在循環體之前,而for循環一般在語句1中進行的;while 循環和for循環都是先判斷表達式,後執行循環體,而do…while循環是先執行循環體後判斷表達式,也就是說do…while的循環體最少被執行一次,而while 循環和for就可能一次都不執行。另外還要注意的是這三種循環都可以用break語句跳出循環,用continue語句結束本次循環,而goto語句與if構成的循環,是不能用break和 continue語句進行控制的。
順序結構、分支結構和循環結構並不彼此孤立的,在循環中可以有分支、順序結構,分支中也可以有循環、順序結構,其實不管哪種結構,我們均可廣義的把它們看成一個語句。在實際編程過程中常將這三種結構相互結合以實現各種演算法,設計出相應程序,但是要編程的問題較大,編寫出的程序就往往很長、結構重復多,造成可讀性差,難以理解,解決這個問題的方法是將C程序設計成模塊化結構。
(4)模塊化程序結構
C語言的模塊化程序結構用函數來實現,即將復雜的C程序分為若干模塊,每個模塊都編寫成一個C函數,然後通過主函數調用函數及函數調用函數來實現一大型問題的C程序編寫,因此常說:C程序=主函數+子函數。 因些,對函數的定義、調用、值的返回等中要尤其注重理解和應用,並通過上機調試加以鞏固。
三.掌握一些簡單的演算法
編程其實一大部分工作就是分析問題,找到解決問題的方法,再以相應的編程語言寫出代碼。這就要求掌握演算法,根據我們的《C程序設計》教學大綱中,只要求我們掌握一些簡單的演算法,在掌握這些基本演算法後,要完成對問題的分析就容易了。如兩個數的交換、三個數的比較、選擇法排序和冒泡法排序,這就要求我們要清楚這些演算法的內在含義,其中選擇法排序和冒泡法排序稍難,但只要明白排序的具體過程,對代碼的理解就不難了。如用選擇法對10個不同整數排序(從小到大),選擇法排序思路:設有10個元素a[1]~a[10],將a[1]與a[2]~a[10]比較,若a[1]比a[2]~a[10]都小,則不進行交換,即無任何操作;若a[2]~a[10] 中有一個比a[1]小,則將其中最大的一個(假設為a)與a[1]交換,此時a[1]中存放了10個中最小的數。第二輪將a[2]與a[3]~a[10]比較,將剩下9個數中的最小者a與a[2]交換,此時a[2] 中存放的10個數中第2小的數;依此類推,共進行9輪比較,a[1]到a[10]就已按從小到大的順序存放。即每一輪都找出剩下數中的最小一個,代碼如下:
for(i=1;i<=9;i++)
for(j=i+1;j<=10;j++)
if(a>a[j]
{temp=a;
a=a[j];
a[j]=temp;
}
結語:當我們把握好上述幾方面後,只要你能克服畏難、厭學、上課能專心聽講,做好練習與上機調試,其實C並不難學。

④ 跪求!譚浩強c語言程序設計視頻教程打包下載!!!!

那麼多怎麼給你發,給你個網址自己下載吧:

http://iask.sina.com.cn/u/2670859537/ish?folderid=977340&page=0


另外,你要建議嘛,首先呢你都說新手了,心態不能急,要先從基層學起


  1. 看書比看視頻好,更系統,譚浩強這本就不錯,再就是《C Primer Plus》,不過似乎比譚漢強那本要難一些

  2. 關鍵是編程,你自己不練習是不行的,不要怕出錯,剛開始不要想太負責的程序,自己能寫個什麼樣就這么寫,只有你自己去寫,自己去發現自己哪裡錯了,才能不斷提升你的C語言水平。

  3. 另外,不懂就多問,我說的問是在你思考的基礎上提問,不要讓別人幫你寫代碼,那樣對你的C語言沒好處的。問什麼?問思路,問難點!

  4. 網路是個大資源,可供參考的書籍很多,就網路文庫而言,就夠你看了,沒財富值不要緊,看看又不花財富。

  5. 當你真正入門了,不要認為到了終點啦,不要覺得自己會C語言了,可以借鑒和提示的空間還很大。這個階段你不妨試試自己構思著寫點有些實際意義的小程序,這樣也比較有意思,不至於太枯燥,有BUG不怕,慢慢來,在實際編程中遇到困難多查查資料,然後再改,當然這些都必須是自己寫代碼啊,別人不能代替你的。

  6. 當自己有實力寫寫基礎的小程序後,你可以試著把你以前學到的東西寫成1個小游戲,怎麼樣,是不是很有成就感?然後,你差不多已經是C語言高手啦,剩下的事就要靠你自己啦。你可以看一下比較難的文獻,或者某些特定的雜志,選准你的研究方向,真正的編寫C語言程序。


我的這些話,都是輸入的,絕非復制、粘貼,滿意的話希望及時採納

⑤ c語言老譚書上的例題幫我分析一下吧

我是4樓 針對樓主的補充再加幾句~~~

學編程是不需要背單詞的 就是你說的函數什麼的也不是要背的 函數都是實現具

體功能的 知道這個函數的作用你就會用 靠背函數的話你是學不好語言的而且函

數你也不可能記的完。

但這並不是說英語不重要 如果你只是想把簡單的C的語法啊什麼的會用比如就只學會譚浩強的那本書的話 我可以確切的說 你完全不用管什麼英語!

但是如果你想更進一步的學習C 讓C真正能夠寫出有作用的程序來,能看懂英語那是必不可少的 比如windows編程里MSDN都是英文的 看懂它很重要 還要一些底層開發比如嵌入式方面多用C 而這方面很多的書籍很多的資料是英文的 所以能看懂英文資料真的是相當重要 這里你不一定要去刻意的及很多單詞 因為如果你看多了 你會發現那些英語你看了會大概知道他是什麼意思 但你並不一定確切知道每個單詞的意思~~

看你自己想學到那個層次了~~ 希望能對你有點幫助 呵呵~~

以下是原先回答:

======================================================================

你不認識的那個應該是「共軛」把 就是說復數里的實部一樣虛部相反的兩個根

比如 3+5i 和 3-5i

這些都是解方程組的判定條件啊

在初中不是學過的嗎?b*b-4*a*c是判斷方程有無根或有無實根的條件

這個條件就是開頭列的條件 大於0兩個實根 小於0兩個虛根 =0兩個相等的實根

如果a=0則不是一個二次方程

==================================================

if(fabs(a)<=1e-6) \*這句就不明白哪個1e 也不知道是1還是l*\

這里的1e是C語言里用科學計數法來表示數字

1e-6就是1*(10的負六次方)的意思

這里的fabs()是一個cmath里的庫函數 是求平方根的函數

因為程序里前面定義的變數 float a,b,c,disc,x1,x2,realpart,inagpart

都是浮點型 默認會是6位 也就是說小於0.000001的數是無法表示的 會被認為是0

所以程序里用1e-6來代替0

表示fabs(a)<=1e-6 就相當於fabs(a)<=0條件

同理 後面的fabs(disc)<=1e-6

就是b*b-4*a*c<0的意思

===================================================

你說的有些單詞看不懂是指disc,x1,x2,realpart,inagpart這些吧

沒有關系 那些都只是一個變數的名字而已 你可以根據你自己的喜歡來命名

不過只是要有些意義罷了

加油學習吧 繼續努力~~ 慢慢你就會明白的 以後在回頭看你會覺得這些沒原來想像的那麼難 呵呵

⑥ 如何評價譚浩強《C程序設計》錯誤之不完全匯集

我只想說些良心話。譚浩強主編的《C程序設計》確實有些小錯誤,還有些程序運行結果甚至與書都不符,但是不知道誰編出的《譚浩強<C程序設計>錯誤之不完全匯集》(以下簡稱「匯集」)簡直也太詆毀這本書了。
首先,「匯集」總在最小的、甚至小到根本沒人去糾結也完全無所謂的地方上摳字眼,「匯集」的作者總認為不應該說「系統」而應該說「編譯器」,而且始終在批評這句話「系統本身不自帶輸入輸出語句」,還舉例反例說老譚自己砸自己的腳,我就想問一句,這句話哪兒錯了?系統難道自帶輸入輸出語句?能輸入和輸出不是因為預處理了頭文件才能用這些命令的嗎?再比方說那個「strlwr」函數,書里已經明確說了只能給字元串的大小寫進行轉換,而且stdio.h里是可以得到這個函數的,那麼「匯集」里扯了那麼一大堆,和老譚說的有什麼區別?【就是仗著《C程序設計》這本書的不完美之處而沒事找事!】
其次,「匯集」里對於一些程序的評價,很多地方說得反倒不對了。比如「匯集」里說「%o格式輸出c是錯誤的」、「H o w \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 不能因為新手無知就這樣糊弄他們吧」等等,%o不就是八進制而已嗎?怎麼就不能輸出字元?只不過輸出了ASCII碼的八進制數字而已,弄得好像編譯器壓根兒不識別似的;一個數組,字元沒排滿後面本來就全補上了\0,作者說的「糊弄」又是什麼意思?怎麼不給個解釋?最讓人無語的是這樣一句話「a+=1和a=a+1絕對是不一樣,老譚怎麼能理解,算了 」,不好意思,如果你說這兩個不一樣,那我也不理解了,請你解釋一下,幹嘛就搪塞一句「算了」?
最後,「匯集」竟然寫了將近530頁,找到了無數個錯誤,甚至拿C語言標準的英語原文來做對比,然而前20頁就有將近18頁說的純屬廢話,讓人感覺就是在裝面子,那麼這位作者對於C語言本身的掌握程度又有多少?數據結構、演算法和計算機原理又懂多少?我想不用再說了,連同義詞都要糾正的人,怎麼可能寫出好的錯誤匯集?
《C程序設計》確實有很多不完美之處,也確實不適合作為第一本C語言教程類參考書,但是《譚浩強<C程序設計>錯誤之不完全匯集》真的更沒必要看,希望「匯集」作者能給出解釋,不要把你所謂的「有病吧」「咋想的」「算了」作為一個問題的解釋,這樣的搪塞我們不接受。
原創。但隨意轉發。

⑦ C語言中的問題不明白為什麼 新人麻煩詳細解釋一下謝謝

這里scanf指定逗號為輸入的分隔符號。所以輸入時數字和字元之間必須有逗號。

scanf不指定分隔符時,默認以空白字元(空格、回車、製表符)為分隔符。

PS:如果寫%d%c不指定分隔符號。由於第二個變數是字元型,輸入時中間不要加空格符,否則會將空白符號做為字元接收。

⑧ C語言入門知識

char a[20],b[20],c[20];上面的a,b,c都是數組變數,在定義時已經為其分配棧內存,而char (*str1)[20],(*str2)[20],(*str3)[20]; 只是分配了4個位元組的內存來保存指針變數(即變數本身),而指針的值(即指向)還沒有,所以這些指針還不能保存數據!--------------char (*str1)[20],(*str2)[20],(*str3)[20]; str1 str2 str3均為指針,都指向長度為20的char數組.你只定義了指針,但是沒有對其進