當前位置:首頁 » 編程語言 » c語言每天更愛你一點點
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言每天更愛你一點點

發布時間: 2022-05-05 13:19:15

1. c語言真的特重要嗎 是否為基礎呀可我覺得沒什麼意思

推薦你看看C語言的歷史
C語言的歷史,
著名的計算機科學家丹尼斯·里奇(Dennis Ritchie)創造的。1967年, Ritchie進入貝爾實驗室工作。貝爾實驗室是當時世界上最有創造力的地方之一,著名的C語言、C++語言和Unix操作系統都誕生於此。一開始, 里奇和他的同事肯·湯普生開始研究DEC PDP-7機器,但是在這個機器上寫程序很困難,只能用很底層很高深的匯編語言。於是湯普生設計了一種高級程序語言,並把它命名為B語言。但是由於B語言本身設計的缺陷,使他在內存的限制面前一籌莫展。1973年,里奇決定對B語言進行改良,他賦予了新語言強有力的系統控制方面的能力,並且新語言非常簡潔、高效,里奇把它命名為C語言,意為B語言的下一代。
在開發C語言的同時,里奇和湯普生、布朗(貝爾實驗室的另一名科學家)還接受了一個新任務,就是在DEC PDP-7上開發一個多任務、多用戶的操作系統,1969年,他們用匯編語言完成了這個操作系統的第一個版本,里奇受一個更早的項目Multics的啟發,將這個系統命名為Unix。
為了在全世界面前展現C語言強大的能力,里奇用C語言把Unix操作系統重寫了一遍,這就是Unix第三版。而之前的第二版是用B語言開發的。1977年,為了推廣貝爾實驗室開發的Unix操作系統,里奇發表了不依賴於具體機器系統的C語言編譯文本《可移植的C語言編譯程序》,使C語言再向前跨出一大步,各種計算機都開始支持C語言。
1978年裡奇和布朗一起出版了《C語言》一書,從而使C語言成為世界上應用最廣泛的高級程序設計語言,而該書也成為計算機科學界最暢銷的書籍之一。里奇把全部精力都放到Unix、C語言、C++語言的應用和推廣上,曾在很多國家進行過教學和講座活動。2000年,他來到了中國,在北京大學和復旦大學進行了題為《貝爾實驗室與操作系統》的講演,為推動中國Unix/Linux的應用和發展貢獻了力量。
1983年,人們將計算機科學方面的最高榮譽——圖靈獎頒發給了里奇,以表彰他對計算機科學所做出的傑出貢獻。
C語言的特色
C語言是高級程序語言,也就是說程序員不必知道具體的中央處理器型號也可以為計算機進行程序編制。它主要用來進行計算機的程序設計。C語言具有高效、靈活、功能豐富、表達力強和移植性好等的特點,在計算機語言中備受青睞。
在程序能夠運行前,源代碼必須有編譯器編譯成機器語言。相對於匯編語言只能針對具體型號的CPU才能運行,C語言的便捷性是很明顯的。
C語言的主要特性
C語言保留了低級語言的特性,例如涉及內存的指針。
C語言通過參數在函數里傳遞數值。
使用了預處理機制,使得程序里可以通過包含例如宏處理的方式來處理源程序。
C語言提供了一套標准庫,這些庫里提供了十分有用的功能。
但是並不是所有的這些特性都是有效的。例如,預處理通常作為一個獨立的程序被處理,這使得與處理的程序並不一定被完全編譯。
雖然C是高級語言,但是它同時擁有一些匯編語言的特性,對其它的語言來說這是接近低級語言的特點。例如,在C語言里,程序員可以對計算機內存進行管理。在默認的情況下,C語言不會對數組的范圍進行檢查,也就是說即使數組越界,C語言也不會作出錯誤提示。對計算機內存的管理使得程序員可以變出更快捷、更有效的程序,這對於設備驅動程序來說尤為重要。但是這也使得程序容易產生令人討厭的「臭蟲」,例如緩沖器溢出錯誤。然而,這些錯誤可以由一些工具來避免。
C語言的不足可以由由C語言發展而來的更新的編程語言改進。Cyclone語言的擁有提防對於內存錯誤的特性。C++和Objective C提供了用於面向對象的編程結構。Java和C#增加了面向對象的結構使得對內存的管理自動化。
C語言的版本
K&R C
C不斷的從它的第一版本進行改進。在1978年,Kernighan和里奇的C編程語言第一版出版。它介紹了下面的有關C語言版本的特性:
struct數據類型
long int數據類型
unsigned int數據類型
把運算符=+改為+=,依次類推。因為=+使得編譯器混淆。
在以後的幾年裡,C編程語言一直被廣泛作為C語言事實上的規范。在這本書中,C語言通常被表述成"K&R C"。(第二版的包括了ANSI C標准)
K&R C通常被作為C編譯器所支持的最基本的C語言部分。雖然現在的編譯器並不一定都完全遵循ANSI標准,但K&R C作為C語言的最底要求仍然要編程人員掌握。但是無論怎樣,現在使用廣泛的C語言版本都已經與K&R C相距甚遠了,因為這些編譯器都使用ANSI C標准。
ANSI C和ISO C
1989年,C語言被ANSI標准化。(ANSI X3.159-1989)。標准化的一個目的是擴展K&R C。這個標准包括了一些新的特性。在K&R出版後,一些新的特徵被「非官方」的加到C語言中。
void函數
函數返回struct或union類型
void *數據類型
在ANSI標准化自己的過程中,一些新的特徵被加了進去。ANSI也標准了函數庫。ANSI C標准被ISO(國際標准化組織)採納成為ISO 9899。ISO的第一個版本文件在1990年出版。
C99
在ANSI標准化後,C語言的標准在一段相當的時間內都保持不變,盡管C++繼續在改進。(實際上,Normative Amendment1在1995年已經開發了一個新的C語言版本。但是這個版本很少為人所知。)標准在90年代才經歷了改進,這就是ISO9899:1999(1999年出版)。這個版本就是通常提及的C99。它被ANSI於2000年三月採用。
在C99中包括的特性有:
可變范圍的數組
新增加的數據類型,包括long long int,布爾類型和用於表示復數的類型
支持用//表示注釋(這個特性實際上在C89的很多編譯器上已經被支持了)
snprintf
但是各個公司對C99的支持所表現出來的興趣不同。當GCC和其它一些商業編譯器支持C99的大部分特性的時候,微軟和Borland卻似乎對此不感興趣

現在的很多高級語言都是與C語言不可分割的,比如C++,VC,或者說現在的高級平台.NET中的C# 等等 都是以C為基礎的
如果你想學高級的語言,不妨先把C語言學好,在掌握那些高級語言的時候就更容易一些

2. C語言編程題,求助大佬解答

摘要 先應闡明c語言的由來,才能更清楚它的用途。眾所周知,c語言是計算機高級語言,用它可以比機器語言和匯編語言更快捷地編寫程序,而且可讀性更強(即人更容易理解)。其次就是它能實現的功能,語言就是如何使實現計算機能按照人的要求自動地執行,並返回結果,用c語言編程是能夠達到這一目的的,如開發大型的UNIX操作系統,計算器應用軟體,還用其他生活中的圖書管理系統,超市管理系統等。

3. c語言的問題

C語言是一種結構化語言.它層次清晰,便於按模塊化方式組織程序,易於調試和維護.C語言的表現能力和處理能力極強.它不僅具有豐富的運算符和數據類型,便於實現各類復雜的數據結構。它還可以直接訪問內存的物理地址,進行位(bit)一級的操作。由於C語言實現了對硬體的編程操作,因此C語言集高級語言和低級語言的功能於一體。既可用於系統軟體的開發,也適合於應用軟體的開發.此外,C語言還具有效率高,可移植性強等特點.因此廣泛地移植到了各類各型計算機上. 對了, 還想說一點的是C語言有很多版本. 你還是學VB吧 簡單一些(個人認為).

補充

程序語言可分為5類

1、web page script languages

就是網頁代碼,比如Html、javascript、Css、Asp、Php、Xml都應該屬於此類(照蔡的意思,Html不應該屬於anguages的,可能他覺得太簡單了吧,不過我覺得Html也應該算的,大家愛聽誰的就聽誰的好了,這個不重要)

2、Interpreted Languages(解釋型語言)

包括Perl、Python、REBOL、Ruby等(後面三個聽豆沒聽過),也常被稱作Script語言,通常被用於和底下的操作系統溝通。照蔡的意思,每個人至少應該學會一套這類的語言。這類語言的缺點是效率差、源代碼外露——所以不適合用來開發軟體產品,一般用於網頁伺服器。

3、Hybrid Laguages(混合型語言)

代表是JAVA和C#。介於解釋型和編譯型之間。蔡認為C#是.NET最重要的語言,值得期待其後續發展;至於JAVA,蔡叫看他的《Sleepless in Java》——我倒!

4、COMPILING Languages(編譯型語言)

C/C++,JAVA都是編譯型語言。蔡說C++很復雜,要成為高手沒三五年是不行的(就憑這句話,我決定向JAVA投降),雖然如此,但真正要成為高手的都應該懂C/C++。

關於Delphi,蔡說如果想要跨Linux和Windows平台的語言,則Delphi似乎是最好的選擇。

5、Assembly Languages(匯編語言)

匯編語言是最接近於硬體的語言,不過現在幾乎沒多少人用了。

程序語言學習順序建議

如果完全沒有程序經驗,可照這個順序:javascript——解釋型語言——混合型語言——編譯型語言——匯編(如果需要的話)

用業界流行一句話做結尾「真正的程序員用C++,聰明的程序員用Delphi」,那麼,什麼樣的程序員用JAVA呢?

虛懷若谷題外話

看在我這么晚了還這么辛苦的敲字的面子上,看到這篇帖子的朋友給點掌聲吧,雖然沒什麼自己的思想。

另外,本文完全據蔡學鏞先生同名文章精簡,所以如果這篇文章給你的程序員生涯有什麼不好的作用,那我不介意你去扁他。當然如果這篇文章對你有什麼積極影響,我很高興你能請我吃大餐。

如果您想學習編程,卻又不知從何入手,那麼您不妨看看下面的幾種學習方案,可能會給您一些啟示吧!

方案一 Basic語言 & Visual Basic

優點

(1)Basic 簡單易學,很容易上手。

(2)Visual Basic 提供了強大的可視化編程能力,可以讓你輕松地做出漂亮的程序。

(3)眾多的控制項讓編程變得象壘積木一樣簡單。

(4)Visual Basic 的全部漢化讓我們這些見了English就頭大的人喜不自禁。

缺點

(1)Visual Basic 不是真正的面向對象的開發文具。

(2)Visual Basic 的數據類型太少,而且不支持指針,這使得它的表達能力很有限。

(3)Visual Basic 不是真正的編譯型語言,它產生的最終代碼不是可執行的,是一種偽代碼。它需要一個動態鏈接庫去解釋執行,這使得Visual Basic 的編譯速度大大變慢。

綜述:方案一適合初涉編程的朋友,它對學習者的要求不高,幾乎每個人都可以在一個比較短的時間里學會vB編程,並用VB 做出自己的作品。對於那些把編程當做游戲的朋友來說,VB 是您最佳的選擇。

方案二 Pascal語言 & Delphi

優點

(1)Pascal語言結構嚴謹,可以很好地培養一個人的編程思想。

(2)Delphi是一門真正的面向對象的開發工具,並且是完全的可視化。

(3)Delphi使用了真編譯,可以讓你的代碼編譯成為可執行的文件,而且編譯速度非常快。

(4)Delphi具有強大的資料庫開發能力,可以讓你輕松地開發資料庫。

缺點

Delphi幾乎可以說是完美的,只是Pascal語言的過於嚴謹讓人感覺有點煩。

綜述: 方案二比較適合那些具有一定編程基礎並且學過Pascal語言的朋友。

方案三 C語言 & Visual C++

優點

(1)C語言靈活性好,效率高,可以接觸到軟體開發比較底層的東西。

(2)微軟的MFC庫博大精深,學會它可以讓隨心所欲地進行編程。

(3)VC是微軟製作的產品,與操作系統的結合更加緊密。

缺點

對使用者的要求比較高,既要具備豐富的C語言編程經驗,又要具有一定的WINDOWS編程基礎,它的過於專業使得一般的編程愛好者學習起來會有不小的困難。

綜述: VC是程序員用的東西。如果你是一個永不滿足的人,而且可以在編程上投入很大的精力和時間,那麼學習VC你一定不會後悔的。

方案四 C++語言 & C++ Builder

優點

(1)C++語言的優點全部得以繼承。

(2)完全的可是化。

(3)極強的兼容性,支持OWL、VCL和MFC三大類庫。

(4)編譯速度非常快。

缺點

由於推出的時間太短,關於它的各種資料還不太多。

綜述:我認為C++ Builder 是最好的編程工具。它既保持了C++語言編程的優點,又做到了完全的可視化。

方案五 SQL語言 & Power Builder

對於一些傳統的數據開發人員來說,Foxpro系列也許讓他們感到更加熟悉。但是對於初學者來說,PowerBuilder也許是最好的資料庫開發工具。各種各樣的控制項,功能強大的PowerBuilder語言都會幫助你開發出自己的資料庫應用程序。

補充:關於網頁後台語言和其他語言的關系,一般認為:

C語言學的好,那麼學習PHP會有事半功倍的效果
VC學的好,那麼學習ASP會有事半功倍的效果
JAVA學的好,那麼學習JSP、JAVASCRIPT會有事半功倍的效果

關於網頁後台語言和資料庫,通常來說:
PHP與MYSQL是黃金搭檔
ASP小型網站用ACCESS,大型用SQL
JSP我就不知道了

關於電子商務流行的語言,目前
當當、卓越、6688、igo5、雅寶使用的是asp語言
易趣、淘寶使用的是php語言
貝塔斯曼使用的是jsp語言

4、至少學會以下的其中兩種:
一、網站伺服器程序ASP、PHP、CGI、JSP
我個人認為CGI是最難學的其中一種。
二、程序語言:C語言、C++、VB、JAVA、PERL、DELPHI、匯編語言
不過我認為C語言的通用性最好,可以跨平台(操作系統)使用。
還要試著自己寫程序、開發軟體等工作。
三、資料庫管理軟體:MYSQL、SQL、FOXPRO……等。
四、幾種常用的操作系統:WIN98、WIN2000、WINNT、WINXP、UNIX、LINUX、要是能學到UNIX那是最好不過的了。最最基本的WIN2K、WINNT也要學會吧。
如果以上的你都會了,那麼你已經是個高手了。

4. C語言的一個小問題

1、typedef的最簡單使用
typedef long byte_4;
給已知數據類型long起個新名字,叫byte_4。
2、 typedef與結構結合使用
typedef struct tagMyStruct
{
int iNum;
long lLength;
} MyStruct;
這語句實際上完成兩個操作:
1) 定義一個新的結構類型
struct tagMyStruct
{
int iNum;
long lLength;
};
分析:tagMyStruct稱為「tag」,即「標簽」,實際上是一個臨時名字,struct 關鍵字和tagMyStruct一起,構成了這個結構類型,不論是否有typedef,這個結構都存在。 我們可以用struct tagMyStruct varName來定義變數,但要注意,使用tagMyStruct varName來定義變數是不對的,因為struct 和tagMyStruct合在一起才能表示一個結構類型。 2) typedef為這個新的結構起了一個名字,叫MyStruct。 typedef struct tagMyStruct MyStruct; 因此,MyStruct實際上相當於struct tagMyStruct,我們可以使用MyStruct varName來定義變數。 答案與分析 C語言當然允許在結構中包含指向它自己的指針,我們可以在建立鏈表等數據結構的實現上看到無數這樣的例子,上述代碼的根本問題在於typedef的應用。 根據我們上面的闡述可以知道:新結構建立的過程中遇到了pNext域的聲明,類型是pNode,要知道pNode表示的是類型的新名字,那麼在類型本身還沒有建立完成的時候,這個類型的新名字也還不存在,也就是說這個時候編譯器根本不認識pNode。 解決這個問題的方法有多種: 1)、
typedef struct tagNode
{
char *pItem;
struct tagNode *pNext;
} *pNode;
2)、 typedef struct tagNode *pNode;
struct tagNode
{
char *pItem;
pNode pNext;
};
注意:在這個例子中,你用typedef給一個還未完全聲明的類型起新名字。C語言編譯器支持這種做法。
3)、規范做法:
struct tagNode
{
char *pItem;
struct tagNode *pNext;
};
typedef struct tagNode *pNode;

5. 關於C語言

首先C要比你想像中的強大,你要拿掉你現在從簡單程序C程序的看法,還有加減乘除這種想法。

其實你的困惑是每個剛入門的人都有的,產生的原因感覺無非就是覺得你編的程序和現實中應用的程序差距太大造成C語言無用的一種錯誤印象。

我想你所認為的程序,從你的「簡單的WINDOWS程序啊」應該覺得是個圖形界面的程序,覺得一個功能強大的程序應該是我們用的圖形化界面,這是微軟為了普及個人電腦而造成的。作為普通的電腦用戶自然要圖形界面,這是為了方便他們操作而做的,而作為一個程序員,你還是有必要熟悉字元操作,比如linux下用shell來操作,這里沒有圖形,沒有按鈕,有的只是指令。

C語言只能做數學演算法,這種想法其實和你現在的水平有關。其實學了微機原理你就知道計算機從物理角度上來說,只能做加和乘(據說有乘法器,不過我沒考證過)還有邏輯運算和,或,非,異或。任何一款復雜的應用軟體歸根結底都是這些操作的集合體,舉個簡單的例子,游戲算是一個復雜的軟體了,游戲上任務的生命值,法力等等這些數值容易理解。圖形其實也可以歸結為數學,屏幕上以左下角為原點,每個像素就有了自己的坐標,他的顏色可以用三原色來合成表示,那麼一個點就有了坐標這2個數字表示位置,顏色三原色可以用0,1,2這3個表示。這也圖形就歸結成了一個數學問題,這樣CPU處理的還是數學問題。當然這是最原始的,後來人們用種種辦法去改善計算機來處理圖形,計算機圖形也是門學問,你可以看一下。

C也提供了圖形編程,包括2D和3D,我只記得一個graph.h頭文件,其它的不記得了。

沒有圖形界面的軟體難道就不是復雜軟體了么,比如你的顯卡驅動程序,它有圖形操作界面么,但確確實實是一個非常重要的軟體。

所以,好好學習C,這是一門不錯的語言。圖形化是為了方便人們觀察的,而且我認識的覺大部分程序員都討厭去做前台圖形界面的工作,他們都認為,我處理好數據就好了,簡單的,整齊的顯示給他們看就可以了,為什麼要整那些花里胡哨而沒有任何實際意義的界面呢。

6. 如何用C語言編寫程序,把"我愛你"循環520次

#include<stdio.h>

int main()

{

int i=0;

while(i<520)

{

printf("我愛你 ");

i++;

}

return 0;

}

採用while循環和printf輸出函數即可。

(6)c語言每天更愛你一點點擴展閱讀:

在C語言中,有三種類型的循環語句:for語句、while語句和do While語句。分別介紹如下:

for

for為當型循環語句,它很好地體現了正確表達循環結構應注意的三個問題:

⑴控制變數的初始化。

⑵循環的條件。

⑶循環控制變數的更新。

while:

while結構循環為當型循環(when type loop),一般用於不知道循環次數的情況。維持循環的是一個條件表達式,條件成立執行循環體,條件不成立退出循環。

while語句格式為:

while(條件表達式)

循環體

每次執行循環體前都要對條件表達式進行判斷。

do…while語句結構為直到型循環(until type loop),也用於不知道循環次數的情況。do…while和while的區別在於do…while結構是執行完一遍循環體再判斷條件。

do while語句格式為:

do

循環體

while(條件表達式);

每執行完一次循環體,do…while結構都要判斷一下條件表達式。

參考資料來源:網路-循環語句

7. 如何學好C語言

就把譚浩強那本書高透了 基礎打好了就好說了
比如最基礎的 數組 符號 遞歸 循環 等最基礎的東西打牢.

8. c語言幫幫忙

搜索引擎在收錄網頁時,對網頁進行備份,存在自己的伺服器緩存里,當用戶在搜索引擎中點擊「網頁快照」鏈接時,搜索引擎將Spider系統當時所抓取並保存的網頁內容展現出來,稱為「網頁快照」。由於網頁快照是存儲在搜索引擎伺服器中,所以查看網頁快照的速度往往比直接訪問網頁要快。網頁快照中,搜索的關鍵詞用亮色顯示,用戶可以點擊呈現亮色的關鍵詞直接找到關鍵詞出現位置,便於快速找到所需信息,提高搜索效率。當搜索的網頁被刪除或鏈接失效時,可以使用網頁快照來查看這個網頁原始的內容。

9. 如何學好C語言

所有初學者面臨的第一個問題便是:如何選擇教材。好的開始是成功的一半,選擇一本優秀的教材是事半功倍的關鍵因素。不幸的是,學校通常會幫你指定一本很差勁的C語言課本;而幸運的是,你還可以再次選擇。沒有學習交流地方可以來


所以我建議初學者應該以Visual C++ 6.0(不是VisualC++ .NET)或者Dev C++作為主要的學習環境,而且千萬不要在IDE的使用技巧上過多糾纏,因為今後你一定要轉向Unix環境的。Visual C++ 6.0使用很方便,調試也很直觀,但其默認的編譯器對C標準的支持並不好,而Dev C++使用gcc編譯器,對C99的標准都支持良好。使用順帶提一下,很多大學的C語言課程還在使用Turbo C 2.0作為實驗環境,這是相當不可取的,原因其一是TC 2.0對C標准幾乎沒有支持,其二是TC 2.0編譯得到的程序是16位的,這對今後理解32位的程序會造成極大的困擾(當然,用djgpp之類的東西可以使TC 2.0編譯出32位程序,不過那過於復雜了)。


等你學完一本C語言的教材,你一定要轉向Unix平台繼續學習,幾乎所有的C語言高級教程都是基於Unix平台的(比如《C專家編程》)。轉變的過程是痛苦的,你需要面對的是各種紛繁復雜的命令,完全不同於Windows平台的思考方式,但是這種痛苦是值得的。Unix與C是共生的,Unix的思考方式和習慣更加符合C語言的思考方式和習慣。在Unix下,你可以找到無數優秀的源代碼供你盡情閱讀,你可以方便地查看某個庫函數的聯機手冊,還可以看到最優秀的代碼風格(說到代碼風格,我會專門寫一篇文章詳細敘述)。


歸結起來就是一句話:初學C語言,建議使用Windows系統和集成開發環境,在准備向「高手」方向努力時,請先轉向Unix平台。


三、萬事俱備,你就是東風


書已選定,環境配置完成,正所謂萬事俱備,只欠你自己的努力了。請從書的前言開始,仔細地閱讀手頭的教材,很多人看書喜歡直接從第一章開始看,這是錯誤的做法。前言是作者對整本書的大體介紹,作者一般會告訴你需要什麼基礎才能夠順利閱讀本書,這可以幫助你檢驗自己的基礎知識是否已經具備。看完前言,還要瀏覽一下目錄,了解一下書的整體結構,順便給自己安排一下學習計劃。


學習C語言,必需注意每一個細節,書上的例子代碼一定要自己親自敲一遍,編譯執行輸出都跟書上說的一致才能算是學完了一個例子,如果不一致,就要仔細找原因。出了書本上有的例子,自己還要「創造」一些例子,比如學習運算符優先順序的時候,可以寫幾個相同的表達式,在不同的位置加上括弧,看看有哪些不同的行為,比如*p++和(*p)++,又比如a = b == c、(a = b) == c和a = (b == c)等等。自己抄的書上的例子以及改造之後的例子,還有自己「創造」的例子,都應該仔細地歸類保存,並且要在源代碼中寫上簡短的注釋,闡述這個例子的意圖。


例子之後就是習題了,我建議初學者把所有的習題都獨立做一遍,然後對照答案的代碼,看看自己的代碼有那些不足,再試著修改自己的代碼。很多人不重視習題,這是極大的錯誤,因為作者通常會在習題中說明一些重要的道理,而不是單純地檢驗前面的知識。


也許你認為這樣學習太慢,其實不然。學得細致就不用走回頭路,等你學到後面才發現自己前面沒搞清楚,那才是真的得不償失。一般說來,整本書讀完,你應該完成數千行乃至上萬行的代碼,無論是原封不動照抄書上的,還是自己心血來潮寫就的,都是今後繼續學習的一筆財富。以我自己舉例,閱讀《Windows核心編程》時(我只閱讀了3/4的內容),除了抄書上的代碼,還自己寫了很多例子,一共有5574行(用unix下的wc工具統計),時隔多日,我早已記不清Windows的系統編程了,但只要花幾分鍾翻出以前的代碼看看,便會重新瞭然於胸。所謂好記性不如爛筆頭,就是這個道理。


仔細讀書、認真抄寫源代碼、獨立完成習題外加更進一步的實驗,最後將所有的代碼留下,成為自己的經驗和財富,絕對的辛苦,也絕對的事半功倍。當然,這種方式只適合學習需要精通的技術,如果不是學習C語言,你還要具體情況具體分析。


寫到最後,還有非常非常重要的一點沒有提及──代碼風格,從最開始學習就必須強迫自己模仿最優秀的代碼風格。因為代碼風格太重要內容也太多,我會用專門的一篇文章來詳細討論,請大家關注《程序員之路──關於代碼風格》。


題目是關於C語言,其實我主要想說說程序該怎麼學,或者一點感悟罷了,在這里,我只想引用身邊的幾個人的例子,來談一下對程序學習的理解


第一個人要說到我了,我對程序產生興趣,是聽說程序可以作游戲,那時候是在初一,然而借來一本G-BASIC簡明教材後,我便傻了眼。


陌生的詞彙,古怪的邏輯,都是些天文的中文譯本,頭疼了好一陣子。


然而當時又沒有別的閑書可看,我就整天捧著那一本書,什麼方法都試過了,甚至倒著看過了,都沒看出什麼眉目,自己又沒有電腦,只能不停地大膽地想像,然後滿腦子的疑惑……


在這里停一下,上面說的便是我學習的風格:總要經歷一番波折,瞎折騰幾下,然後才會有偶然間的明悟-開竅了!我甚至沒見過幾個人有我這么笨,現在明白過來了,我總是一開始把事情想得過於復雜,造成狗咬刺蝟的難堪的局面,然而竟然有意想不到的收獲!但是不建議大家模仿這種風格,起碼追女朋友的時候不能這樣,生活中很多機會在於接手的那一瞬間,失去就永遠找不回來了。


現在回來,後來偶然間,我看懂了一行代碼,是print 語句,當時興奮得要命,又仔細看了這個看了那個,一下子看懂了很多東西,像是在霎那間被什麼給擊中似的,立刻間醍醐灌頂。。。。


初三在學校學了FOXBASE,基本上自學的,我發現了一件奇怪的事,我這人是出了名的記性不好,然而當時背程序中的命令卻是過目不忘,到現在還記得很多,也許是感興趣吧,也感謝我的微機老師給我提供自由上機的機會!後來我又自學了QBASIC,初四暑假又學了一點C,那時學C遇到不少困難,當時我們學校機房連C語言都沒有,我只好悶在家裡,一本二級C教材,一本配套習題,整天發呆地想,把自己的腦袋當電腦cpu使,有時進入死循環,有時又徹底崩潰。我花十幾天看完了一本書,做完了一本題,然而腦袋裡充滿了疑惑,由於沒有上機實踐的機會,我就憑自己的猜測與推理己慢慢建立了一大堆理論,十分得意與自信,但後來證明大部分是錯的,害我花了很長時間去糾正,這是後話。可是,還是那句話不破不立,不阻不行。就像我現在有了電腦,整天泡在互聯網的海洋里,感受著快餐文化,好久都沒靜下心來好好想點東西了.


高中還上過幾節電腦課,只不過忙於應付高考,我將學程序的打算放棄了,到這里我該說下一個人了。


高中時坐我旁邊一女生,她的文曲星里有BASIC,我偶爾拿過來編了幾個小程序玩,她看到後很感興趣,令人驚訝的是,她只看了三五個程序,聽我講了幾個命令的功能,就能根據自己的想像編出小動畫來,她此前是絕沒有學過程序的!我曾一度懷疑過她的智商,然而她程序是如此之快,卻讓我的眼都瞪大了好幾圈,比我當年高了好幾個境界!我後來經常在想,是不是我當時的方法不對,程序到底應該怎樣學。。。


一晃就到了大學,我碰到另一個讓我佩服的人,跟我一樣是學計算機的,他是偶爾看到我在編動畫,然後十分感興趣,便開始自學。他令人吃驚的是,指針,結構體,位運算等等,都沒搞懂(更不用說演算法和數據結構),只學了三種程序結構,現在只學了C半年,便自己能編出貪吃蛇,俄羅斯方塊,掃雷,還有很多叫不出名字的小游戲來,現在又在寫黑白棋,我知道我確實是走了不少彎路。


程序應該怎樣學,對C來講,我覺得應該從畫圖學起。


原因有二。


一,畫圖程序很能振奮人心的,它能帶給你濃厚的興趣,這是學程序的關鍵。


二,畫圖程序容易上手,很簡單的道理,就能做出很漂亮的東西來。有很多東西甚至不用看課本,就能自己推出來(我認為推理的方法很重要,它是你自學的必要條件)。


比如畫一個圓,從數學角度來分析,要確定一個圓,只需知道它的圓心(x,y)與半徑r,那好一個圓就畫出來了,circle(x,y,r);


其它的類推,再畫一個立體的,選擇立方體,再分析,只要知道兩個對角的坐標就行了吧,翻一下課本,不是這樣,為什麼?你或許會想到,電腦屏幕本來就是平面的,用立體坐標的理論在這里,恐怕就不是最簡單的方法。所以它採用的應該是兩個平面圖形平移。此處留下疑問,立體圖形在平面坐標中怎麼表示?自己慢慢研究,很淺的東西。


想作動畫吧,想像一下動畫的原理只是從一個圖形變幻到另一個圖形,不同地變幻就出現動畫效果,那就可以畫一個,擦了,再畫一個新的,再變化。。。


數學功底好的話,從二維到三維,從靜態到動態我認為是很快的過渡。


具體該怎麼學呢,你可以多找幾個畫圖的例子,敲到電腦里,多敲幾個,慢慢地你就會知道哪些東西是干什麼的,慢慢地就會自己做出東西來。


但這里不要沉溺太久了,先學畫圖只是幫助你輕松地入門(很多人C學完了還沒有入門)。


從畫圖里暫時走出來,你應該打打基礎了,這里不再贅述。可以邊學邊實踐,物理,數學課本中很多問題都可以用程序來演示,來解決,嘗試著多做些東西,這比你老學課本中的模型強多了,只有你自己去體會才能知道。


談及C語言,我想凡是學過它的朋友都有這樣一種感覺,那就是「讓我歡喜讓我憂。」歡喜的是,C語言功能非常強大、應用廣泛,一旦掌握了後,你就可以理直氣壯地對他人說「我是電腦高手!」,而且以後若是再自學其他語言就顯得輕而易舉了。憂慮的是,C語言猶如「少林武功」一般博大精深,太難學了。其實就筆者認為C語言並非是「difficult(困難)」的,只要你能理清思路,掌握它的精髓,那麼自學C語言是一件非常容易且又其樂無窮的事。今天本人就與大家一起談談如何學習C語言或者說學習C語言應從哪幾方面著手。


了解一些基本知識


一.C語言的背景


就個人感觸,無論學習哪門語言首先應該了解一下自己所學語言的背景,也可以說它的發展史。


C語言屬於高級程序語言的一種,它的前身是「ALGOL」。其創始人是布朗·W·卡尼漢和丹尼斯·M·利奇。C語言問世時是帶有很大的局限性,因為它只能用於UNIX系統上。然而隨著科學技術的進步,計算機工業的發展,C語言逐漸脫離UNIX。1987年美國標准化協會制定了C語言的國際標准,簡稱「ANSI C」,從此以後它便成為一種廣泛使用的程序語言。C語言的優點很多,主要的有如下四點:


1.兼備高級語言與低級語言的優點,屬於一種中間語言。


2.它是一種結構化程序設計語言,非常適合結構化程序設計。


3.有較豐富的數據類型、運算符以及函數供以選用。


4.直接與內存打交道,使修改、編輯其他程序與文檔變得輕松,簡單。


二.二大語系二種不同的學習方法


筆者學習過很多程序語言,例如:C,C++(C語言的擴展),QBASIC,VB(BASIC的可視化),JAVA,J ,VB,JAVA,ASP,FOXPRO,PERL等等,就本人實踐所得,其實高級程序語言分為兩大語系。一路是以C為主的程序語言,例如:JAVA,JAVA等,這類語言在函數的調用,程序語句的書寫,循環的控制都極為相似。另一路是以BASIC為首的程序語言,例如:FOXPRO,VB等,此類語言同樣具有相似的函數調用,程序語句書寫以及循環控制,但與C語系是不同的。因此若是您以前是從QBASIC起家的,那麼在學習C語言前最好是先洗洗腦,千萬不要把學習BASIC的方法以及思路用在C身上。


講到這里,我想大家對C語言一定有了感性認識吧!下面讓我們再升華一下,全方位親密接觸它。學習C語言必須從以下四點入手,也就是說,只要你能掌握這四點的內容,那麼基本上就大功告成了。


怎樣才能學好c語言


有人問我c語言是不是很難學,我說不是,後來問的人多了,我就萌生了寫一篇關於c語言如何入門的文章的念頭來。


其實c語言很簡單,它只是一種交流的規則,一種表達的工具,一種承載思想的容器而已,之所以感覺難,我覺得是還不習慣使用計算機特點來考慮問題。這就好比中國人從到英國定居一樣,雖然你學過英語,但是那隻是想像中的英國,和現實的英國的情況還相差很遠,所以要有一個適應的過程,也就是常說的過渡期或磨合期。


想盡快上手就得掌握計算機的特點,計算機的特點包括:


1、 計算機在問題的處理方式上要求全,將所有的可能都要告訴它。人可以根據習慣忽略一些東西,但計算機不行。比如說求解一元二次方程,我們考慮問題就已經默認了a不等於0,更有甚者把b方減4ac也默認大於等於零了。這是我們的習慣,既然有解,我們一般習慣上就把它定為實數解,所以你做出來的程序一般是不考慮這兩個條件的,但是計算機不行,計算機是有名的弱智。計算機沒有象人一樣的智能處理能力,它是人忠實的信徒,不管你怎麼想,它都會執行你的命令。由於你的習慣,導致一些別有用心的人或者無意犯錯的人來犯錯誤,致使計算機有時無所適從。很疲憊,甚至崩潰,報錯,造成你的程序是不成功的,所以你感覺很難。


2、 計算機要求程序的描述精確,無二義性。人的語言有很強的隨機性和二義性。我們平時說話時,有時是一些招呼,有時說話的邏輯性可以不太清楚,話既可以表達這樣的意思,也可以表達那樣的意思,人可以根據環境和對方想表達的含義進行分析,最終得到正確的結果,但是計算機很弱智,雖然它很聽話,但是他不能理解你表達的思想,只會按你交給的指令執行,這樣導致執行時報警和出錯。


3、 計算機編程是要求有很強的全局性和邏輯性,不存在起伏的問題。人的思維有很強的活躍期和蟄伏期,計算機不會,它隨時待命。人在考慮問題時,有很多盡興的東西,但這不是處理問題的整體,而是一部分,所以就出現做完一段代碼後,就不願意再寫,或感覺很吃力,所以感覺很難。


計算機要求它的主人,考慮問題要全面,所有可能的情況及處理都要告訴它,要求學會沉穩,心態要穩定,要求交流的語句一定要明了含義單一。


怎樣才能很快的學會c語言,更快的度過磨合期呢?C語言的語法規則記憶理解當然是不可少的,除此之外還應注意以下幾個方面:


1、 好好理解一下變數和函數的概念,至少要重新回頭看看初等數學。這是基礎,否則就會先天不足,你學的再好,也成不了大氣候。


2、 平衡心態,雖然不能做到「不以物喜,不以己悲」的水平,但至少不要浮躁,不要急於求成,欲速則不達。


3、 培養自身的全局意識,既能小無內,也能大無外,才行。


4、 嚴格按照程序設計過程設計程序,不要跳脫,天馬行空,沒有規矩是不成方圓的。


5、 努力提高自身的綜合素質。程序是人思維的表達形式,是人處理問題思路和語言的結合體。你對客觀看成到什麼程度和你掌握的知識成正比。如果你對處理的問題不理解,不會處理,你怎麼也寫不出程序。


6、 學會交流,多交流,相互補益,同時團隊合作也是很重要的。



總之,實踐出真知,多學、多練、多思、多交流,勤奮好學才能學成。