c语言不会可以学好java吗_C语言一定要学好吗?
編程語言其實(shí)是一個(gè)很初級的工具,但是你又必須熟練的掌握它,學(xué)懂一門編程語言就好像學(xué)會(huì)了寫字,但是會(huì)寫字的人不見得會(huì)寫文章,而會(huì)寫文章又不見的寫得好。可是如果你不會(huì)寫字,那就一定寫不出文章來。
首先,在學(xué)習(xí)C語言之前,應(yīng)該學(xué)好計(jì)算機(jī)基礎(chǔ)。里面的很多概念對于C程序員都是非常重要的。
如果你在著手學(xué)習(xí)C之前,或者已經(jīng)開始學(xué)習(xí)C,但是碰到了很多問題,應(yīng)該再把計(jì)算機(jī)基礎(chǔ)的書拿來好好看看。
如果你有足夠的耐心,十足的毅力,應(yīng)該再學(xué)習(xí)C語言之前學(xué)學(xué)匯編,這會(huì)讓你對許多比較細(xì)膩的概念有清醒的認(rèn)識,如果你不是那么有耐心(恕我直言,大部分人可能沒有)。
那么可以在看完一遍C語言的教材后再看,但是一定要看一遍,相信我一定會(huì)受益匪淺。
看到有些人發(fā)問的帖子,很明顯的沒有仔細(xì)的思考過問題,或者沒有認(rèn)真地查閱過書籍,因?yàn)槠渲械恼Z法和邏輯錯(cuò)誤實(shí)在是不能理解。想來如果你的語文作業(yè)上面滿篇都是錯(cuò)字,老師一定不會(huì)放過你。
為什么不先打好基礎(chǔ)呢?有些人抱怨說因?yàn)榻滩牟缓?#xff0c;老師水平不行等等。但是我本人就是在TC2下學(xué)習(xí)C語言的,那時(shí)候除了譚浩強(qiáng)的書,也幾乎找不到什么別的書。我不打算就譚浩強(qiáng)的書發(fā)表什么意見,那也實(shí)在稱不上是一本好書,但是如果這本是能學(xué)好,全部看好,都記住,也應(yīng)該有相當(dāng)?shù)乃搅恕?/p>
建議不管看什么書,先認(rèn)真地看懂,不要貪速度,應(yīng)該力求深入的理解。
如果你能夠比較熟練的解決一本教材上的所有習(xí)題,那么就應(yīng)該轉(zhuǎn)入對算法的學(xué)習(xí),盡管此時(shí)你的C語言還稱不上精通,有許多細(xì)節(jié)問題還不了解,許多問題還沒有碰到,但是這些問題會(huì)在后面的工作和學(xué)習(xí)中得到解決的。
新手學(xué)習(xí)C語言,有很多誤區(qū),以一個(gè)學(xué)過C語言的人,給新手一些建議。
拋磚引玉,請前輩指出問題,發(fā)表意見,新手請注意后面的回復(fù)。
第一:一些概念。
C語言是一門程序設(shè)計(jì)語言,有一些標(biāo)準(zhǔn),比較重要的是ANSI C(好像是C89)和C99。
數(shù)據(jù)結(jié)構(gòu)包括邏輯結(jié)構(gòu)和物理結(jié)構(gòu)。邏輯結(jié)構(gòu)是數(shù)據(jù)元素集合和定義在集合上的關(guān)系。物理結(jié)構(gòu)是邏輯結(jié)構(gòu)在計(jì)算機(jī)中的實(shí)現(xiàn)。
LCC、VC、TC、GCC都是C語言編譯器,一般包括集成開發(fā)環(huán)境,編譯器和鏈接器及輔助工具
我們書寫的是C源程序,源程序通過編譯器編譯為中間文件,中間文件經(jīng)鏈接器鏈接生成可執(zhí)行文件。
不同操作系統(tǒng)可執(zhí)行文件不同。中間文件也有幾個(gè)標(biāo)準(zhǔn),微軟使用的和Linux下通用的有差異。
第二:學(xué)習(xí)什么。
個(gè)人認(rèn)為程序設(shè)計(jì)學(xué)習(xí)的重點(diǎn)放在數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)上,但是這種學(xué)習(xí)要有一個(gè)平臺,比如C語言。
學(xué)習(xí)C語言首先要掌握基本語法,常量、變量、類型、及順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的意義及用法。
進(jìn)一步學(xué)習(xí)構(gòu)造類型如指針、結(jié)構(gòu)、函數(shù)的意義和用法。
C語言提供一些標(biāo)準(zhǔn)函數(shù)以減輕程序設(shè)計(jì)工作量,這些函數(shù)我們自己也可以實(shí)現(xiàn)。即使不依靠函數(shù)庫,只有編譯器,理論上就足夠了。事實(shí)上,提供的標(biāo)準(zhǔn)函數(shù)效率都很高,使用很頻繁,沒有自己實(shí)現(xiàn)的必要,所以掌握常用函數(shù)是非常必要的,但是要注意函數(shù)的適用范圍。
繼續(xù)學(xué)習(xí)因人而異,應(yīng)該可以獨(dú)立選擇了。
第三:如何學(xué)習(xí)。
強(qiáng)調(diào)多實(shí)踐,C語言的學(xué)習(xí)要經(jīng)常上機(jī),多寫程序才能逐步提高。
推薦書籍:C Programming Languge。有中譯本,但最好看英文版。
通讀,并將所有習(xí)題獨(dú)立思考,給出解答,尤其是編程實(shí)踐題,最好逐一上機(jī)完成。
C語言其實(shí)并不難,如果認(rèn)真掌握了C Programming Language,C語言的基礎(chǔ)就可以了,繼續(xù)學(xué)習(xí)就更加容易。建議不要找捷徑,通過考試除外,真正的水平提高是建立在編程實(shí)踐積累基礎(chǔ)上的,必須一個(gè)一個(gè)程序的完成才能提高。
談及C語言,我想凡是學(xué)過它的朋友都有這樣一種感覺,那就是“讓我歡喜讓我憂。
”歡喜的是,C語言功能非常強(qiáng)大、應(yīng)用廣泛,一旦掌握了后,你就可以理直氣壯地對他人說“我是電腦高手!”,而且以后若是再自學(xué)其他語言就顯得輕而易舉了。憂慮的是,C語言猶如“少林武功” 一般博大精深,太難學(xué)了。其實(shí)就筆者認(rèn)為C語言并非是“difficult(困難)”的,只要你能理清思路,掌握它的精髓,那么自學(xué)C語言是一件非常容易且又其樂無窮的事。
今天本人就與大家一起談?wù)勅绾螌W(xué)習(xí)C語言或者說學(xué)習(xí)C語言應(yīng)從哪幾方面著手。
了解一些基本知識
一.C語言的背景
就個(gè)人感觸,無論學(xué)習(xí)哪門語言首先應(yīng)該了解一下自己所學(xué)語言的背景,也可以說它的發(fā)展史。
C語言屬于高級程序語言的一種,它的前身是“ALGOL”。
其創(chuàng)始人是布朗·W·卡尼漢和丹尼斯·M·利奇。C語言問世時(shí)是帶有很大的局限性,因?yàn)樗荒苡糜赨NIX系統(tǒng)上。然而隨著科學(xué)技術(shù)的進(jìn)步,計(jì)算機(jī)工業(yè)的發(fā)展,C語言逐漸脫離UNIX。1987年美國標(biāo)準(zhǔn)化協(xié)會(huì)制定了C語言的國際標(biāo)準(zhǔn),簡稱 “ANSI C”,從此以后它便成為一種廣泛使用的程序語言。
C語言的優(yōu)點(diǎn)很多,主要的有如下四點(diǎn):
1.兼?zhèn)涓呒壵Z言與低級語言的優(yōu)點(diǎn),屬于一種中間語言。
2.它是一種結(jié)構(gòu)化程序設(shè)計(jì)語言,非常適合結(jié)構(gòu)化程序設(shè)計(jì)。
3.有較豐富的數(shù)據(jù)類型、運(yùn)算符以及函數(shù)供以選用。
4.直接與內(nèi)存打交道,使修改、編輯其他程序與文檔變得輕松,簡單。
二.二大語系二種不同的學(xué)習(xí)方法
筆者學(xué)習(xí)過很多程序語言,例如:C,C++(C語言的擴(kuò)展),QBASIC,VB(BASIC的可視化),JAVASCRIPT,JSCRIPT ,VBSCRIPT,JAVA,ASP,FOXPRO,PERL等等,就本人實(shí)踐所得,其實(shí)高級程序語言分為兩大語系。
一路是以C為主的程序語言,例如: JAVASCRIPT,JAVA等,這類語言在函數(shù)的調(diào)用,程序語句的書寫,循環(huán)的控制都極為相似。另一路是以BASIC為首的程序語言,例如: FOXPRO,VBSCRIPT等,此類語言同樣具有相似的函數(shù)調(diào)用,程序語句書寫以及循環(huán)控制,但與C語系是不同的。
因此若是您以前是從QBASIC起家的,那么在學(xué)習(xí)C語言前最好是先洗洗腦,千萬不要把學(xué)習(xí)BASIC的方法以及思路用在C身上。
講到這里,我想大家對C語言一定有了感性認(rèn)識吧!下面讓我們再升華一下,全方位親密接觸它。學(xué)習(xí)C語言必須從以下四點(diǎn)入手,也就是說,只要你能掌握這四點(diǎn)的內(nèi)容,那么基本上就大功告成了。
親密接觸C語言
一.輸入輸出
C語言的輸入輸出是非常嚴(yán)格的,或許在其他程序語言中我們可以不關(guān)心這個(gè)問題,但在C語言中,我們必須要徹底了解它。由于篇幅有限,因此筆者不能詳談,有興趣的朋友可以參考由著名程序語言教授譚浩強(qiáng)先生主編,由清華大學(xué)出版社出版的《C程序設(shè)計(jì)第二版》。
不過這里筆者還是有幾點(diǎn)要談一下。
1.二維浮點(diǎn)數(shù)數(shù)組的輸入
二維浮點(diǎn)數(shù)數(shù)組的輸入(即:通過鍵盤給二維浮點(diǎn)數(shù)數(shù)組賦值)在很多專業(yè)書中都沒有詳細(xì)講過這個(gè)問題。在給二維浮點(diǎn)數(shù)數(shù)組賦值時(shí)一定要先聲明一個(gè)變量,接著把數(shù)值賦予這個(gè)變量,最后把變量數(shù)值賦予二維浮點(diǎn)數(shù)數(shù)組賦值。
實(shí)例如下:
# include "stdio。h"
main()
{
float a[2][3],x ;
int i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{scanf("%f",&x);
a[i][j]=x;}
}
不能寫成:
# include "stdio。
h"
main()
{
float a[2][3] ;
int i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
scanf("%f",&a[i][j]);
}
同樣道理,在結(jié)構(gòu)性浮點(diǎn)數(shù)組變量中也一定要按照這種格式輸入。
實(shí)例如下:
# include "stdio。h"
struct student
{float b[3];
int x;
}a[2];
main()
{
float x ;
int i,j;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{scanf("%f",&x);
a[i]。
b[j]=x;}
}
2.注意輸出格式中“%”后的字符
C語言的輸出說復(fù)雜不復(fù)雜,因?yàn)槌S玫亩己芎唵巍?烧f不復(fù)雜也未必,記得曾在一次等級考前輔導(dǎo)我們C語言的教授講道:“如果C語言要考得很難的話,根本不用考什么指針,只要專考輸出格式,我想百分之九十九的學(xué)生都不及格。
”當(dāng)時(shí)我們無不認(rèn)同。從這則事例中可以看出C語言的輸出格式之復(fù)雜程度。因此大家在學(xué)習(xí)它時(shí)千萬要學(xué)會(huì)辨別輸出格式中“%”后的字符,每個(gè)字符都有其意義,也都有其作用。
二.優(yōu)先級
說道優(yōu)先級,有很多朋友都不是很了解或說很模糊。為此筆者想先通過一個(gè)例子讓各位有個(gè)概念。
什么叫優(yōu)先級?比方說,我們在公交車終點(diǎn)站排座隊(duì)時(shí)總會(huì)遇到70歲以上的老人不需要排隊(duì)就能上車的情景,這就是優(yōu)先級的涵義。C程序在運(yùn)行時(shí)也象排隊(duì)坐車一樣,首先照顧那些優(yōu)先級高的運(yùn)算符,若是優(yōu)先級相同,那么就象遇到兩位(或兩位以上)70歲以上的老人那樣,讓他們依次上車。
但是C語言中的優(yōu)先級的運(yùn)算并不是千篇一律的,只能說是在大多數(shù)情況下,有些運(yùn)算符的優(yōu)先級有其自己的特點(diǎn),因此這點(diǎn)大家要注意。例如條件表達(dá)式:條件?結(jié)果1:結(jié)果2,這種表達(dá)式很多朋友都知道,它的作用與IF…ELSE…條件判斷語句很雷同,它運(yùn)算時(shí)的優(yōu)先級就不是按照C語言的規(guī)則來完成的。
所以說對于優(yōu)先級各位編程愛好者一定靈活掌握,不要死記硬背。
三.指針
就個(gè)人認(rèn)為,C語言中的指針是最有特色的,當(dāng)然也是最難學(xué)的。指針說穿了,其實(shí)是變量的一種表現(xiàn)形式,只不過這種變量記載的不是數(shù)值而是地址。就象一個(gè)人可以用姓名來表示自己,也可以用身份證號碼來表示自己一樣。
筆者涉足編程已經(jīng)有三年多了,在這期間曾經(jīng)收到過很多網(wǎng)友的電子郵件詢問學(xué)習(xí)指針的方法。就本人感觸,學(xué)習(xí)指針最好是先學(xué)些計(jì)算機(jī)硬件工作的原理,例如:直接尋址,間接尋址等,只有了解了這些內(nèi)容以后,你再學(xué)指針就比較容易理會(huì),畢竟C語言是一門介于機(jī)器語言與高級語言中間的語言,沒有一些硬件工作知識是很難領(lǐng)悟它的真諦的。
然而事事并非絕對,如果你沒有這些知識也不要緊,只要清楚知道以下筆者總結(jié)的二點(diǎn)再加上多練習(xí)便可:
1.指針是地址變量:它的值有兩種:其一是地址,其二是內(nèi)容。不同的表達(dá)方式可以取不同的值,這有點(diǎn)象一個(gè)家庭地址在不同的場合標(biāo)識的人物也不同。例如:父母親在他們的單位所登記的家庭地址就代表他們自己,而你在學(xué)校中登記的同樣的家庭地址就代表你自己。
2.指針是可以運(yùn)算的,它的運(yùn)算法則與變量是一致的。
另外,在編寫一個(gè)程序時(shí),除非萬不得已,一般不要使用指針變量。因?yàn)橹羔樖潜容^復(fù)雜的,用不好就“當(dāng)機(jī)”。所以筆者建議各位對于指針只要能看懂就行,當(dāng)然如果你是準(zhǔn)備參加考試的就另當(dāng)別論了。
四.函數(shù)
雖說很多程序語言都有函數(shù)這一內(nèi)容,但筆者覺得C語言的函數(shù)是最有魅力的。如果你能完全掌握C語言的函數(shù),那么學(xué)習(xí)C++就不成問題了(C++是一門建立在C語言上,但又不同于C語言的高級程序語言,它增添了很多函數(shù)。)。學(xué)習(xí)函數(shù)的方法是比較簡單的,只有兩個(gè)字“牢記”,即:牢記函數(shù)的功能,牢記函數(shù)的用途以及如何輸入輸出。
有些朋友認(rèn)為,程序語言中的函數(shù)沒有多大用處,其實(shí)這并不正確,函數(shù)從本質(zhì)上講是一段通用程序,用它可以幫助我們節(jié)約很多編程的時(shí)間,一個(gè)聰明的編程者在編寫程序前往往總是先找自己所編寫的程序中有多少是可以用函數(shù)來代替的。筆者曾經(jīng)作過一個(gè)比較字符串的實(shí)驗(yàn),用C語言中的 strcmp()函數(shù)只要一句話,而自己編寫的話30句話都擺不平,可想而知函數(shù)是多么實(shí)用呀!
寫到這里筆者該告一段落了,下面送一個(gè)本人自己用C 語言編寫的注冊表比較程序給諸位。
此段程序的注釋請看“/*…*/”后的文字,程序運(yùn)行時(shí)(在DOS模式下)輸入的方式如下:compare g g xxx3。txt,注意字段與字段之間是有空格的。(compare是程序名)
程序代碼:
# include "stdio。
h" /*定義頭文件或說包含文件*/
main(argc,argv) /*定義帶參數(shù)的主函數(shù)*/
int argc; /*定義參數(shù)類型*/
char *argv[]; /*定義第二參數(shù)類型*/
{ FILE *fp1,*fp2,*fp3; /*定義文件指針*/
char a,b; /*定義字符變量*/
if((fp1=fopen(argv[1],"r"))==NULL)
/*打開第一的注冊表備份文件,如果不存在則跳出程序并顯示“The file don`t open!”*/
{ printf("The file don`t open!");
exit(0); }
if((fp2=fopen(argv[2],"r"))==NULL) /*打開第二的注冊表備份文件,如果不存在則跳出程序并顯示 “The file don`t open!”*/
{ printf("The file don`t open!");
exit(0);}
if((fp3=fopen(argv[3],"w"))==NULL) /*建立新的文本文件,用于存放比較結(jié)果。
*/
{printf("The file don`t open!");
exit(0);}
rewind(fp1); /*規(guī)定文件指針fp1指向第一個(gè)注冊表文件頭部*/
rewind(fp2); /*規(guī)定文件指針fp2指向第二個(gè)注冊表文件頭部*/
while(!feof(fp1)||!feof(fp2)) /*開始比較*/
{ a=fgetc(fp1); /*讀取第一個(gè)注冊表文件內(nèi)容并賦予給字符變量a*/
b=fgetc(fp2); /*讀取第二個(gè)注冊表文件內(nèi)容并賦予給字符變量b*/
if(a!=b) fputc(b,fp3);
/*字符變量a與b不相同的話,那么把不同之處寫入新建的文本文件中*/
if(feof(fp1)) fputc(b,fp3);
/*如果第一個(gè)注冊表文件已經(jīng)讀完,第二個(gè)文件還有未讀取部分,那么把第二個(gè)文件的剩余部分全部寫入新建文件中*/
if(feof(fp2)) fputc(a,fp3);} /*如果第二個(gè)注冊表文件已經(jīng)讀完,第一個(gè)文件還有未讀取部分,那么把第一個(gè)文件的剩余部分全部寫入新建文件中*/
fclose(fp1); /*關(guān)閉第一個(gè)注冊表文件*/
fclose(fp2); /*關(guān)閉第二個(gè)注冊表文件*/
fclose(fp3); /*關(guān)閉新建文件*/
}
對于高深莫測的C語言來說,寥寥3千字并不能說清楚的什么問題。
但只要您看了此文后,我想對于您學(xué)習(xí)此語言一定有很大的幫助,同時(shí)也能了知曉如何用最短的時(shí)間學(xué)會(huì)C語言以及掌握C語言的精髓所在。另外,此文中所涉及的知識點(diǎn)都是筆者通過實(shí)踐得出的,因此若是其他專業(yè)書籍沒有講到過的問題可以參考本文。最后祝大家學(xué)習(xí)C語言順利!
。
全部
總結(jié)
以上是生活随笔為你收集整理的c语言不会可以学好java吗_C语言一定要学好吗?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 台安变频器n2按键说明_台安变频器N2型
- 下一篇: 剪映导出帧率选多少_剪映帧率怎么设置?剪