欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言入門的一些基本資源推薦和程序語法概覽

 更新時(shí)間:2015年12月02日 11:16:41   投稿:goldensun  
這篇文章主要介紹了C語言入門的一些基本資源推薦和程序語法概覽,C語言是很多現(xiàn)代高級(jí)編程語言的基礎(chǔ),需要的朋友可以參考下

為什么要學(xué)習(xí)C語言?

為什么要學(xué)習(xí)、使用C語言?為什么要學(xué)習(xí)一個(gè)可能比自己都?xì)q數(shù)大的編程語言?

選擇一門編程語言,“為什么而學(xué)”這個(gè)目的是最重要的,目的不明確就沒法學(xué)好。這也是為什么很多學(xué)生朋友在大學(xué)里必修C語言卻覺得沒學(xué)明白的原因。因?yàn)閷W(xué)習(xí)的目的不明確,學(xué)習(xí)當(dāng)然也沒有動(dòng)力。還有一個(gè)原因是C語言是工程實(shí)踐性很強(qiáng)的語言,它不是來自某個(gè)研究所某個(gè)大學(xué)學(xué)院,而是實(shí)實(shí)在在從項(xiàng)目需要中產(chǎn)生,伴隨著Unix的興起而流行,語義簡(jiǎn)明清晰,功能強(qiáng)大而不臃腫,簡(jiǎn)潔而又不過分簡(jiǎn)單,實(shí)在是居家旅行工作學(xué)習(xí)必備之良友。

C語言相比C++的優(yōu)點(diǎn)之一就是最小驚訝原則,一是一二是二,不會(huì)在私底下產(chǎn)生一些莫名其妙的額外產(chǎn)物。用C++做個(gè)例子,比如這樣一個(gè)函數(shù)原型void PassWithClassValue(COneClass clsParam1),稍微了解C++的朋友都會(huì)知道,如果你沒有實(shí)現(xiàn)COneClass的拷貝構(gòu)造函數(shù),編譯器會(huì)好心的幫你實(shí)現(xiàn)一個(gè),而且在調(diào)用這個(gè)函數(shù)PassWithClassValue的時(shí)候,偷偷地調(diào)用拷貝構(gòu)造函數(shù)產(chǎn)生一個(gè)臨時(shí)對(duì)象作為參數(shù)傳遞,對(duì)于某些情況,比如編寫操作系統(tǒng)這類必須優(yōu)化性能的情景下,這些自以為是的東西是非常邪惡的事情。

C語言本身只提供必要的語言特性,其它復(fù)雜一點(diǎn)功能如文件處理、數(shù)學(xué)計(jì)算等等都以庫函數(shù)方式提供,甚至連malloc、free這種“必須有”的功能,也是以標(biāo)準(zhǔn)庫函數(shù)的方式提供,而不是作為C語言核心出現(xiàn)。在偉大的著名的無所不包的《K&R》開頭部分就提到了,for其實(shí)可以通過while來完成,只不過for可以寫的更簡(jiǎn)潔,言外之意,對(duì)于C語言for其實(shí)不是必要的。跑題一點(diǎn)說,在其它程序語言中Lua可以說繼承了C語言簡(jiǎn)潔的設(shè)計(jì)哲學(xué),甚至連continue這種幾乎必備的關(guān)鍵字都一直拒絕加入,在Lua的maillist以及wiki里都提到過continue這個(gè)問題,Lua語言維護(hù)者認(rèn)為continue對(duì)于Lua而言不是必要的,也不考慮在后續(xù)版本中添加這個(gè)關(guān)鍵字。這種簡(jiǎn)潔哲學(xué)也讓C語言的可移植性、便攜性特別優(yōu)秀,也使得很多嵌入式系統(tǒng)依然使用C語言作為主要編程工作語言。

Java語言有一個(gè)口號(hào):“一次編寫,處處運(yùn)行”,就是跨平臺(tái)這個(gè)噱頭。實(shí)際上C語言從早期開始就幾乎達(dá)到了“一次編寫,處處編譯”,在ANSI在1989年統(tǒng)一了C語言標(biāo)準(zhǔn)以后(稱之為C89),只要特定平臺(tái)上的編譯器完整實(shí)現(xiàn)了C89標(biāo)準(zhǔn),而且你的代碼沒有使用某些特殊的擴(kuò)展(GCC以及微軟都有自己的編譯器特定擴(kuò)展),那么代碼一定可以編譯通過,再實(shí)現(xiàn)一下操作系統(tǒng)相關(guān)的函數(shù)庫,C語言的移植就是很簡(jiǎn)單的事情??梢杂肔ua作為例子,Lua本身是完全遵循C89標(biāo)準(zhǔn),沒有使用任何特定擴(kuò)展,這也保證了有C語言編譯器的平臺(tái),都可以編譯使用Lua??梢跃幾g運(yùn)行C語言的硬件平臺(tái)可以從A排到Z,真是非常有意思的事情。

C語言也是一個(gè)比較少見的應(yīng)用領(lǐng)域極為廣泛的語言。比如編寫操作系統(tǒng)這種高難問題,只有C++、匯編語言可以做到。C語言可以編寫服務(wù)器端軟件如Apache、Nginx,或者編寫GUI程序,如GTK。大多數(shù)程序語言的第一版是通過C語言實(shí)現(xiàn),借助前面提到的“一次編寫處處編譯”,最大的保證了這些程序語言的可移植性。在Web開發(fā)領(lǐng)域,C語言的應(yīng)用相對(duì)較少,這也是一種取舍的結(jié)果,Web開發(fā)需要使用PHP、Ruby、Python這樣的動(dòng)態(tài)語言,可以快速上線快速修改,可以最大程度滿足用戶時(shí)時(shí)變化的需求,這也是C語言的弱項(xiàng)。如果把程序語言的應(yīng)用領(lǐng)域從硬件到管理軟件、Web程序做一個(gè)很粗略從下到上的排列,C語言適合領(lǐng)域是比較底層靠近硬件的部分,而新興語言比較偏重于高層管理或者Web開發(fā)這種相對(duì)貼近最終用戶的領(lǐng)域。比較流行的混合開發(fā)模式是使用C語言編寫底層高性能部分代碼或后臺(tái)服務(wù)器代碼,而使用動(dòng)態(tài)語言如Python做前端開發(fā),充分發(fā)揮它們各自的優(yōu)勢(shì)力量。

提到C語言的缺點(diǎn),常常是它缺少這種或者那種特性,比如有人建議加入GC,有人建議加入并行或者并發(fā)支持,有人提到?jīng)]有一個(gè)比較完整的類似C++的異常策略。這些特性有的可以通過引入第三方庫來實(shí)現(xiàn),但C語言的設(shè)計(jì)哲學(xué)其實(shí)決定了它不會(huì)像C++那樣“非常強(qiáng)大”。即使引入了某些人期望的特性,依然會(huì)是某些人喜歡某些人不喜歡的情形,現(xiàn)在的功能對(duì)于C語言應(yīng)用領(lǐng)域來說已經(jīng)夠用,其它特性可以通過特定程序語言實(shí)現(xiàn),并且通過C API與C語言編寫的程序進(jìn)行交互。任何一個(gè)工匠都不可能只使用一個(gè)工具完成他的工作,不同工具結(jié)合起來才能更快更好的完成任務(wù)。

提到C語言的API,也稍微介紹一下,我們知道windows操作系統(tǒng)的api也好,Linux的系統(tǒng)api也好,或者是想給Ruby、Python編寫擴(kuò)展模塊,C語言形式的函數(shù)定義都是唯一的選擇。C語言就好像是一個(gè)中間層或者是膠水,如果想把不同編程語言實(shí)現(xiàn)的功能模塊混合使用,C語言是最佳的選擇。

提了這么多關(guān)于C語言的好處,那么學(xué)習(xí)C語言是否適合就看你自己的判斷了,例如要進(jìn)行一個(gè)嵌入式項(xiàng)目,或者需要進(jìn)行服務(wù)器端開發(fā),或者寫一個(gè)性能相關(guān)的組件等等,C語言都是比較好用的選擇。另外也可以在C++的使用過程中有意的使用C語言的思考方式,汲取C語言簡(jiǎn)潔明快清晰地設(shè)計(jì)思路,對(duì)編程設(shè)計(jì)水平會(huì)有很大的提高。

C語言學(xué)習(xí)方法

C語言學(xué)習(xí)可以按照下面參考的順序:閱讀參考書,閱讀代碼,編寫調(diào)試實(shí)際程序,上網(wǎng)參與討論,研究高級(jí)話題。

學(xué)習(xí)語言的開始一般是閱讀參考書。我建議選擇幾本非常經(jīng)典的好書,仔細(xì)完整反復(fù)閱讀幾遍,“書讀百遍其義自現(xiàn)”。選擇C語言學(xué)習(xí)的好處是,這幾本書基本上完整涵蓋了C語言編程領(lǐng)域的方方面面,不會(huì)像C++那樣,即使讀完一堆書還是有些糊涂,依然有這樣那樣難懂的陷阱。

1. 參考書籍

在豆瓣上列了一個(gè)書單,大家可以直接參考http://book.douban.com/doulist/636329/。在下面簡(jiǎn)單點(diǎn)評(píng)一下,閱讀順序最好參照列出的順序。

《The C Programming Language》http://book.douban.com/subject/1230004/:如果你只想買一本書學(xué)習(xí)C語言,只需要買這一本就夠了。如果你經(jīng)費(fèi)足夠,建議你多買幾本,辦公室、家里都放上一本,隨手都可以翻翻。用三個(gè)詞語來形容它就是:經(jīng)典!經(jīng)典!經(jīng)典!這本薄薄的只有二百多頁的小書涵蓋了C語言的方方面面,前無古人而且后無來者,任何溢美之詞都不足以形容它。

《The C Programming Language》(后面稱為 K&R)里面包含了一個(gè)簡(jiǎn)單的語法解析器,包含了malloc如何實(shí)現(xiàn),包含了一個(gè)完整的操作系統(tǒng)目錄瀏覽程序,這些程序的實(shí)用性極高,可以這樣說,如果學(xué)習(xí)任何一門語言能夠自己獨(dú)立動(dòng)手實(shí)現(xiàn)以上的功能,基本上就可以算是入門了。K&R書里面每段都蘊(yùn)含著非常值得探究的軟件開發(fā)工程實(shí)踐經(jīng)驗(yàn),如果沒有一定的開發(fā)經(jīng)驗(yàn),其實(shí)是看不出來這些冰山下面的內(nèi)容的,比如開頭一章就提出用寫完整代碼這種方式來教學(xué),而在書中那些C語言的陷阱或者可能出問題的地方,都有提到,但是由于篇幅所限,寫的非常簡(jiǎn)約,很難讓人一下就看懂。我正在完整的逐字逐句的閱讀此書,希望能稍作注解,寫幾篇博客分享一下。

《C程序設(shè)計(jì)語言(第2版·新版)》http://book.douban.com/subject/1139336/:這是K&R的中文譯本,可以先從中文譯本看起,然后再讀一遍英文原版,既可以學(xué)習(xí)英文,又可以體會(huì)原文那種簡(jiǎn)約優(yōu)美的風(fēng)格。

《C陷阱與缺陷》http://book.douban.com/subject/2778632/

《C專家編程》http://book.douban.com/subject/2377310/

這兩本書也是學(xué)習(xí)及使用C語言的朋友必備的兩本書,比如《C專家編程》,專門用兩三個(gè)章節(jié)詳細(xì)介紹C語言中數(shù)組與指針的不同之處,這兩本書在某種程度上算是對(duì)K&R略過的地方做了詳細(xì)補(bǔ)充,強(qiáng)烈推薦。

《C語言參考手冊(cè)》http://book.douban.com/subject/2132084/:這是最后一本強(qiáng)烈推薦你最好買回家作為案頭書必備的參考書。前面幾本書或者稍顯簡(jiǎn)略,或者專注某個(gè)特定專題,都不適合遇到問題時(shí)翻查。這本《C語言參考手冊(cè)》可以看作是C語言編程的《新華字典》,全面而權(quán)威。里面還涵蓋了C99的內(nèi)容,緊跟時(shí)代潮流。

下面幾本書都可以作為交叉參考,也都很有價(jià)值,也是建議大家都買下來,好書如朋友,日久彌新,像是我推薦的這幾本書在douban或者amazon上評(píng)分都非常高,而且反復(fù)再版。

《C和指針》http://book.douban.com/subject/1229973/:指針的重要性如何,學(xué)過C語言(或者C++)的朋友都知道,這本書更是把指針拔高到了與C語言平起平坐的地位,其實(shí)也是從頭開始介紹,作為教學(xué)參考書也是可以的。

《C標(biāo)準(zhǔn)庫》http://book.douban.com/subject/3775842/:這本書是專門介紹C語言的標(biāo)準(zhǔn)庫如何實(shí)現(xiàn)的,比如malloc算法,用標(biāo)準(zhǔn)的C語言該如何寫?strlen這個(gè)函數(shù)應(yīng)該如何實(shí)現(xiàn)?盡管書中不少代碼與真實(shí)的C標(biāo)準(zhǔn)庫相差很多(由于標(biāo)準(zhǔn)庫需要考慮性能優(yōu)化,很多函數(shù)有一些特定的trick),但是絕對(duì)值得參考。

《你必須知道的495個(gè)C語言問題》 http://book.douban.com/subject/3422332/:這本書其實(shí)就是C-FAQ的印刷版本,C-FAQ在各種編程語言的FAQ中可以稱得上質(zhì)量一流。如果你想應(yīng)聘或者招聘C語言相關(guān)程序員,這本書一定要參考。

《Linux C編程一站式學(xué)習(xí)》http://book.douban.com/subject/4141733/:這本書是基于特定操作系統(tǒng)Linux來介紹C語言編程,可作為計(jì)算機(jī)相關(guān)專業(yè)的教科書或入門參考書,也是書單里面唯一一本國人原創(chuàng)的編程書籍,非常難得。書中幾乎所有內(nèi)容都在網(wǎng)上直接公開,針對(duì)讀者的意見進(jìn)行修改,這也是非常難得的一種開放態(tài)度。非常推薦大家買一本。

學(xué)習(xí)C語言,一定不能只讀書,應(yīng)該動(dòng)手練習(xí)完成書里面的項(xiàng)目需求(比如編寫一個(gè)目錄瀏覽器)以及每章的練習(xí)題目。這就需要有可以實(shí)驗(yàn)的環(huán)境,下面針對(duì)不同操作系統(tǒng)簡(jiǎn)單做一下介紹。

2. 動(dòng)手實(shí)驗(yàn)環(huán)境搭建

也沒有調(diào)查過,不知道現(xiàn)在學(xué)校里學(xué)習(xí)C語言是不是依然跟著譚浩強(qiáng)老師用TurboC2.0編程,如果還是這個(gè)組合的話,那就太差勁了,趕快拋開它們。

下面主要介紹不同操作系統(tǒng)平臺(tái)下的集成編程環(huán)境,基于初學(xué)者以及我個(gè)人喜好,就不推薦大家命令行下用vim編程了,直接上IDE。

Windows系統(tǒng)下推薦大家使用Code::blocks這個(gè)軟件。這個(gè)軟件最大優(yōu)點(diǎn)是自帶了基于mingw的GCC以及GDB,只要下載70M左右軟件包,就可以完整支持C++、C語言編程了。各種功能(比如調(diào)試功能)也很強(qiáng)大,版本更新也比較快。注意下載選擇名字有mingw的文件,比如最新版本是codeblocks-10.05mingw-setup.exe(版本也許有所不同)。主頁:http://www.codeblocks.org/

如果需要做Windows操作系統(tǒng)的開發(fā),可以下載Visual C++ 2010 Express。

因?yàn)镃ode::Blocks不包含Windows編程頭文件(實(shí)際是因?yàn)闆]有Windows SDK),無法編寫Windows操作系統(tǒng)相關(guān)的界面應(yīng)用程序或者服務(wù)類程序。而VC++Express自帶了這些頭文件以及編程庫,雖然功能稍微簡(jiǎn)陋,但對(duì)于練習(xí)使用基本夠用。主頁:http://www.microsoft.com/express/windows/

對(duì)于計(jì)算機(jī)專業(yè)的學(xué)生朋友,建議大家使用Linux操作系統(tǒng),或者更詳細(xì)一點(diǎn)是使用Xubuntu操作系統(tǒng)作為桌面,使用Netbeans和GCC這個(gè)組合(當(dāng)然也可以選擇Code::Blocks)。在Xubuntu下可以通過apt-get install build-essential這個(gè)命令安裝gcc相關(guān)程序,已經(jīng)可以在Terminal下編譯C語言程序了,但為了使用方便,大家可以選擇Netbeans的C++支持包,在Netbeans網(wǎng)站上就能下載。主頁:http://netbeans.org/features/cpp/index.html

如果使用蘋果Mac系統(tǒng),毫無疑問XCode就是編程的絕佳選擇,XCode可以在蘋果開發(fā)者網(wǎng)站上免費(fèi)下載,在IPhone SDK中也包含了XCode。主頁:http://developer.apple.com/technologies/tools/xcode.html

如果手頭沒有合適的編程環(huán)境,還需要實(shí)驗(yàn)一些簡(jiǎn)單的代碼,可以用http://codepad.org/ 提供的服務(wù),在線編寫運(yùn)行代碼。

另外建議大家申請(qǐng)一個(gè)github.com的賬號(hào),在gist.github.com可以保存自己的練習(xí)代碼,就不需要隨身帶著U盤了。

3. 網(wǎng)絡(luò)資源

如果想用十分鐘時(shí)間了解一下C語言的來龍去脈、前世今生,維基百科這個(gè)頁面http://en.wikipedia.org/wiki/C_%28programming_language%29 是最佳選擇。

從維基百科可以看到,C語言1972年由Dennis Ritchie設(shè)計(jì)的命令式、結(jié)構(gòu)化范式編程語言。類型為靜態(tài)的弱類型,需要顯式定義。最新國際標(biāo)準(zhǔn)為C99。設(shè)計(jì)上主要受到了B、ALGOL68、匯編語言、PL/I、FORTRAN的影響,C語言也影響了大量編程語言,如C++、Objective-C、C#、Java、Go、PHP、Python等等(個(gè)人覺得受C影響很大的是PHP,基本上有C編程基礎(chǔ)的程序員,很容易就能上手PHP了,除了PHP的OO部分)。

在維基百科條目中有很大篇幅介紹了作者認(rèn)為C語言缺失的特性,比如面向?qū)ο蟆⒍嗑€程、GC、異常處理等等,當(dāng)然這有些吹毛求疵,如果需要這些特性,完全可以用其它程序語言。另外一個(gè)介紹的重點(diǎn)是“未定義行為”,有些我們認(rèn)為理所當(dāng)然的結(jié)果,其實(shí)在C語言標(biāo)準(zhǔn)中并沒有明確定義,假定這些行為應(yīng)該如何,當(dāng)程序使用另外的編譯器或者不同版本編譯器編譯運(yùn)行,都可能有bug產(chǎn)生。

接下來維基百科條目談到了C語言的用處,必須承認(rèn)盡管現(xiàn)在編程語言成百上千,能稱之為“系統(tǒng)級(jí)”的少之又少,新興語言中只有Go還能稱得上?,F(xiàn)在大規(guī)模軟件項(xiàng)目中完全選用C語言可能性不大,但是核心部分完全可以用C搭建,相對(duì)C++開發(fā)工具的高昂價(jià)格,C語言相關(guān)的免費(fèi)輔助開發(fā)軟件非常豐富,比如splint,valgrind,不少核心庫經(jīng)過長期使用也都非常穩(wěn)定。

由于C語言廣泛支持各種平臺(tái)以及編譯器相對(duì)成熟可靠,不少編程語言選擇C語言作為一個(gè)中間層,比如Glasgow Haskell編譯器就是這樣做的。

另一個(gè)可以找到大量C語言編程相關(guān)資料的地方是“美味書簽”,通過搜索特定關(guān)鍵字 (C + programming)就可以找到很多值得挖掘的資源http://delicious.com/search?p=c+programming。還可以參考dmoz.org的C語言分類http://www.dmoz.org/Computers/Programming/Languages/C/ 相比美味書簽時(shí)效性能差點(diǎn),但是分類比較系統(tǒng),查找也要容易一些。

程序員往往是懶惰的,“拿來主義”、“拷貝主義”很流行也很有效,當(dāng)對(duì)某個(gè)函數(shù)或者關(guān)鍵字不是很理解的時(shí)候,看看別人是怎么使用的,會(huì)非常有啟發(fā)性。這里介紹幾個(gè)常用的代碼搜索網(wǎng)站,最常用的是google的codesearch:http://codesearch.google.com ,可以通過不同條件及正則表達(dá)式搜索特定關(guān)鍵詞。另外可以參考維基百科上一個(gè)“帶有C語言示例的文章”分類,里面代碼寫的也很不錯(cuò)。還可以在github.com上搜索相關(guān)項(xiàng)目。在前面博客文章我還介紹了一個(gè)名為羅塞塔代碼的網(wǎng)站http://rosettacode.org/ 這個(gè)網(wǎng)站上可以找到不同程序語言針對(duì)某個(gè)問題的解決方案,用于學(xué)習(xí)比較非常便利。

學(xué)習(xí)編程也需要大量閱讀名家經(jīng)典代碼,與學(xué)中文英文需要大量閱讀名著一個(gè)道理,C語言編程優(yōu)質(zhì)項(xiàng)目那是“彩旗飄舞,人山人?!?,個(gè)人建議可以看看Lua、Sqlite、Nginx這些項(xiàng)目的代碼,代碼量不多,而且代碼質(zhì)量也都比較高。另外可以看看Linux內(nèi)核代碼,坊間有不少書籍可以幫助解讀。關(guān)于如何很好的閱讀代碼,大家可以參考《Code Reading》這本書。

書看了幾本,代碼寫了一些,也略微讀了讀其他人的代碼,就應(yīng)該用C語言來完成真實(shí)工作中碰到的問題,讓C語言真正成為你的瑞士軍刀。只有當(dāng)你經(jīng)常使用C語言來進(jìn)行編程工作,經(jīng)常思考如何通過C設(shè)計(jì)一個(gè)優(yōu)雅高效的系統(tǒng),才能更深刻的理解C語言設(shè)計(jì)哲學(xué)。

還可以到http://stackoverflow.com 參與回答問題,瀏覽其他人的問題解答來汲取知識(shí),比如這篇http://stackoverflow.com/questions/2054939/char-is-signed-or-unsigned-by-default 就介紹了一個(gè)C語言關(guān)于char類型的小陷阱。

C語言學(xué)習(xí)當(dāng)中,有一些難點(diǎn)需要多加注意,如pointer與array的不同之處,復(fù)雜類型定義如何解讀,如何正確使用預(yù)處理preprocessor以及宏定義。其實(shí)這些內(nèi)容在前面書籍都是反復(fù)提到,如果按部就班學(xué)習(xí)下來,應(yīng)該不成問題。

當(dāng)C語言學(xué)習(xí)的差不多時(shí)候,還可以學(xué)習(xí)一門動(dòng)態(tài)語言,比如Lua或者Python,試著在實(shí)際工作項(xiàng)目中混合使用動(dòng)態(tài)語言與C語言,一加一發(fā)揮出來的力量不僅僅是二,而是非常二(說笑一下,哈哈)。


C的程序代碼寫法初窺
C語言入門很簡(jiǎn)單,因?yàn)槌S玫恼Z法結(jié)構(gòu)就那么幾個(gè),下面列舉一些這些語法結(jié)構(gòu)的簡(jiǎn)單程序例子,可以對(duì)C語言進(jìn)行快速復(fù)習(xí)。程序包含使用 bool 變量、字符、常量、數(shù)學(xué)函數(shù)、特殊字符、for循環(huán)和函數(shù)等等。

1. 使用 bool 變量

#include <stdio.h>
#include <stdbool.h>
int main(void)
{
  float input;
  bool isTrue=(scanf("%f",&input)==1);
  while(isTrue){
    printf("you typed %.d\n",(int)input);  //強(qiáng)制類型轉(zhuǎn)換
    isTrue=(scanf("%f",&input)==1);
  }
  return 0;
}

2. 字符

#include <stdio.h>
#include <stdlib.h>
int main()
{
  char beep;  //與 int beep; 等效
  while(scanf("%c",&beep)==1){
    printf("you typed a %c \n", beep);
  }
  //scanf 會(huì)將回車符一起讀進(jìn)變量,最后結(jié)果不能達(dá)到預(yù)期!可采用后面一種方法
  return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
  char beep;
  while(gets(&beep)){
    printf("you typed a %c \n", beep);
  }
  return 0;
}

3. 常量

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <float.h>
#define PI 3.1416
#define TEXT "hello world"
#define HTML 'H'
int main()
{
  //常量定義 以及C預(yù)處理器 系統(tǒng)預(yù)定義常量
  const int china =345;
  printf("%d ,%d ,%d ,%d\n", INT_MAX, china, FLT_MAX_10_EXP, CHAR_MIN);
}

4. 數(shù)學(xué)函數(shù)

#include <stdio.h>
#include <math.h>
#define PI 3.1415926
void main(void)
{
  //i 為第幾行,畫余弦曲線
  int i, j, blankNUm;
  float cosValue;
  for(i=0;i<21;i++){
    cosValue =1-i/10.0;
    blankNUm =(int)(180/5/PI*acos(cosValue));

    for(j=0;j<blankNUm;j++)
      printf("");
    printf("*");
    for(j=0;j<(73-2-2*blankNUm);j++)
      printf("");
    i!=20?printf("*\n"):printf("");
  }
  return 0;
}

#include <stdio.h>
int main(void)
{
  //計(jì)算 e ,前50項(xiàng),其實(shí)根前10項(xiàng)結(jié)果一樣,只是為了演示,用double可以滿足精度要求
  int i;
  double factorial=1.0, e=0;
  for(i=1;i<=50;i++){
    factorial*=i;
    e+=1.0/factorial;
  }
  printf("%f \n",e);
  return 0;
}

5. 特殊字符

#include <stdio.h>
#include <stdlib.h>
int main()
{
  float salary;

  printf("\aplease enter you salary by month:");  // \a響齡,貌似
  printf(" $______\b\b\b\b\b\b");  // \b退格
  if(scanf("%f",&salary)==1){
    printf("\t$%.2f per manth is $%.2f per year", salary, salary*12.0);
    printf("\rgEE!wa h\n");  // \r使光標(biāo)移到當(dāng)前行的起始位置,這里很微妙噢
  }
    
  return 0;
}

/* please enter you salary by month: $23.4__ */
/* gEE!wa h$23.40 per manth is $280.80 per year */

6. for循環(huán)

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
  int k;
  for(k=1,printf("%d:hi \n",k);printf("k =%d \n",k),k*k<26;
    k+=2,printf("now k =%d\n",k))
  {
    printf("k is %d in the loop \n",k);
  }
  return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
  int i;
  int word[8];
  for(i=0;i<8;i++){
    word[i] =pow(2,i);
  }
  i =0;
  do{
    printf("%d ",word[i]);
  }while(++i<8);
  return 0;
}

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
  int i;
  double arr1[8],arr2[8];
  for(i=0;i<8;i++){
    scanf("%lf",&arr1[i]);
  }
  arr2[0] =arr1[0];
  for(i=1;i<8;i++){
    arr2[i] =arr2[i-1] +arr1[i];
  }
  for(i=0;i<8;i++){
    printf("%.2f\t",arr1[i]);
  }
  printf("\n");
  for(i=0;i<8;i++){
    printf("%.2f\t",arr2[i]);
  }
  return 0;
}

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
  int i,max;
  while(scanf("%d",&max)==1){
    double sum1=0,sum2=0;
    for(i=1;i<=max;i++){
      sum1+=1.00/i;
      i%2==0 ?(sum2-=1.0/i):(sum2+=1.0/i);
    }
    printf("sum1= %lf sum2= %lf\n",sum1,sum2);
  }
  return 0;
}


7. 函數(shù)

#include <stdio.h>
#include <stdlib.h>
int square(int s);  
void echo(void);
int main()
{
  int i;
  for(i=0;i<10;i++)
  {
    printf("squire %d's value is%d\n",i,square(i));
  }
  printf("what\nNo/nBonzo?\n");
  echo();
  return 0;
}

int square(int s){
  return s*s;
}
void echo(void){
  printf("a function without input");
}

/*    another      */

#include <stdio.h>
#include <stdlib.h>
void one_three(void);
void two(void);
int main()
{
  printf("start now:\n");
  one_three();
  printf("done!");
  return 0;
}
void one_three(void){
  printf("one\n");
  two();
  printf("three\n");
}
void two(void){
  printf("two\n");
}

相關(guān)文章

  • C++實(shí)現(xiàn)景區(qū)信息管理系統(tǒng)

    C++實(shí)現(xiàn)景區(qū)信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)景區(qū)信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C++?使用getline()從文件中讀取一行字符串方法示例

    C++?使用getline()從文件中讀取一行字符串方法示例

    這篇文章主要介紹了C++?使用getline()從文件中讀取一行字符串方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • C語言線性表的順序表示與實(shí)現(xiàn)實(shí)例詳解

    C語言線性表的順序表示與實(shí)現(xiàn)實(shí)例詳解

    這篇文章主要介紹了C語言線性表的順序表示與實(shí)現(xiàn)實(shí)例詳解,對(duì)于學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法的朋友很有參考借鑒價(jià)值,需要的朋友可以參考下
    2014-07-07
  • VS2019實(shí)現(xiàn)C++的第一個(gè)MFC程序

    VS2019實(shí)現(xiàn)C++的第一個(gè)MFC程序

    本文主要介紹了VS2019實(shí)現(xiàn)C++的第一個(gè)MFC程序,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • C語言繪制簡(jiǎn)單時(shí)鐘小程序

    C語言繪制簡(jiǎn)單時(shí)鐘小程序

    這篇文章主要為大家詳細(xì)介紹了C語言繪制簡(jiǎn)單時(shí)鐘小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C語言全方位講解指針的使用

    C語言全方位講解指針的使用

    指針是C語言中一個(gè)非常重要的概念,也是C語言的特色之一。使用指針可以對(duì)復(fù)雜數(shù)據(jù)進(jìn)行處理,能對(duì)計(jì)算機(jī)的內(nèi)存分配進(jìn)行控制,在函數(shù)調(diào)用中使用指針還可以返回多個(gè)值
    2022-04-04
  • C語言讀取文件流的相關(guān)函數(shù)用法簡(jiǎn)介

    C語言讀取文件流的相關(guān)函數(shù)用法簡(jiǎn)介

    這篇文章主要介紹了C語言讀取文件流的相關(guān)函數(shù)用法簡(jiǎn)介,包括fread()函數(shù)和feof()函數(shù)的使用,需要的朋友可以參考下
    2015-08-08
  • C++超詳細(xì)講解友元的使用

    C++超詳細(xì)講解友元的使用

    采用類的機(jī)制后實(shí)現(xiàn)了數(shù)據(jù)的隱藏與封裝,類的數(shù)據(jù)成員一般定義為私有成員,成員函數(shù)一般定義為公有的,依此提供類與外界間的通信接口。但是,有時(shí)需要定義一些函數(shù),這些函數(shù)不是類的一部分,但又需要頻繁地訪問類的數(shù)據(jù)成員,這時(shí)可以將這些函數(shù)定義為該類的友元函數(shù)
    2022-04-04
  • C語言實(shí)現(xiàn)繪制貝塞爾曲線的函數(shù)

    C語言實(shí)現(xiàn)繪制貝塞爾曲線的函數(shù)

    貝塞爾曲線,又稱貝茲曲線或貝濟(jì)埃曲線,是應(yīng)用于二維圖形應(yīng)用程序的數(shù)學(xué)曲線。本文將利用C語言實(shí)現(xiàn)繪制貝塞爾曲線的函數(shù),需要的可以參考一下
    2022-12-12
  • 剖析C語言關(guān)鍵字之void,const,return

    剖析C語言關(guān)鍵字之void,const,return

    這篇文章主要為大家介紹了C語言關(guān)鍵字之void,const,return,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01

最新評(píng)論