當前位置:首頁 » 編程語言 » 如何熟練掌控c語言編程
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

如何熟練掌控c語言編程

發布時間: 2022-08-25 10:35:19

1. 如何高效的學好C 語言啊

美河提供.C.精髓.軟體工程方法.pdf,免費下載

鏈接:https://pan..com/s/17Q0JIVCI98FVDaRaisgA3A

提取碼:ikzw

C++是一種大型而復雜的語言,其設計目標是作為一種通用的工程語言。 本書分4個部分共19章,不僅詳細介紹了C++語言的基本語法,而且講解了 C++的高級應用(如虛函數、模板、異常等),並通過大量詳盡的代碼表達了有關軟體工程及維護的觀點。

2. 如何自己快速掌握c語言

首先你得明確自己的使用方向,是用於微處理器,還是系統的底層驅動,或者軟體開發(這個就太少了,這是C++的天下);最開始都一樣,就好比學英語一樣,單詞語法是最基本的;就是要熟悉C語言的關鍵字和語法;這些熟練了,寫抒情的還是說明的文章,那就是你自己選擇了。面向C語言而言,他們都是一樣的,只是不同的運用方面,句式有些不同而已。最終還是歸結一個字:練!

3. 怎樣才能學好C語言

1、學好c語言,你可以很好地應付任何一種編程工具。
2、一定要多上機練習,通過程式了解相關知識。幾經反復方得正果。
3、不要把學習c語言當成一種任務,更不要把它看成很難完成的任務。要充滿自信,只要是一個智力正常的人都能學好c語言。始終保持游戲的心態,多發現其中的樂趣。當感到編程趣味無窮,那你在電腦方面將前程無量。
4、如果一個程式一時無法弄清楚最後暫時放在一邊,過一段時間你可能會從其他的程式中悟出道理。
5、c語言是一個整體,各個方面是有機聯系的,要從總體上把握它,不要把它割裂成互不關聯的部件。
6、不要完全相信教材(包括本講義),所有結論最好都上機驗證。
怎樣學好c語言
1.
工欲善其事,必先利其器
准備工作:一個開發環境,如turbo
c
2.0、visual
c++等開發工具;一本好教材,如譚浩強主編的《c語言程序設計》(第二版)。我當時看的是他的第一版,就為它的簡潔、完美所吸引,簡直愛不釋手,用了兩個星期一口氣看完。
2.
秘密武器
初學者學習計算機語言要會「讀程序」,要對小型的應用型、游戲型程序感興趣,並模仿去加深對c語言程序設計的理解和操作,只有不斷地寫程序、調試程序才能得到編寫程序的經驗和加深對程序的理解,這也是學習編寫優秀高級程序的秘密武器。
3.
發揚探索精神
學習c語言程序設計有點像做數學難題,只要我們善於思考,善於探索,發揚探索精神去尋找好的設計思想和方法,才能把c語言的精髓真正地掌握。
備戰c語言考試要訣
1.
了解大綱,臨陣不亂
各類筆試中,大多數考題是與大綱要求的基本內容一致的,難度不高,但內容十分廣泛,應牢固掌握c語言考試大綱要求的基礎部分。只有熟悉題型,理解語法、句法,做到心中有數,才能臨陣不亂。
2.
善於歸納,強化記憶
對於需要記憶的計算機基礎知識和基本概念,如果考試時因此失分就十分可惜。如:c語言中有幾種不同的數據類型?運算的優先順序別是怎樣的?因此我們需要善於歸納這些計算機基礎知識,並在理解的基礎上強化記憶。
3.
重視實踐,善於調試
計算機科學是一門理論性、實踐性都很強的學科,對c語言考試的參加者來說,基礎理論方面要求不高,而上機試題往往是很多考生不能通過考試的重要原因,因此要勤於實踐。
4.
多做練習,查漏補缺
在認真地學完指定用書後,最好再找些試題,認真地測試一下,一則可以檢查自己的復習情況;二則可以查漏補缺;三則可以調節心理狀況,以備正式考試時沉著冷靜、萬無一失。

4. 如何正確學習c語言

無論是學習 C 語言也好、還是學習別的任何程序設計語言也好,其道理都是一樣的。我要告訴你的最、最關鍵的一條捷徑就是:如果真的要想熟練掌握好程序設計語言的編程,那麼就必須一定要做到:自己親自多上機編程實踐、調試程序、直到程序調試通過能夠正確運行才行!!而絕對不能夠只是整天在書本上讀程序、研究程序的語法結構、關鍵字等,那樣絕對是無法熟練掌握編程技能的!!!

要想熟練掌握計算機編程技能(其實學習任何編程語言也同理),那麼首先要有一台屬於自己的電腦、並安裝好操作系統,且安裝好相應的程序編譯開發環境,然後購買一本難度適合自己的編程教材,親自動手上機編寫、編譯、鏈接、直到調試通過教材中的所有源程序(包括每一章的例題、以及每一章後面的練習題)。

只要你真正能夠做到一直堅持下去,我就敢保證你肯定可以熟練掌握好計算機程序設計語言。

至於說不同的程序設計語言,我個人的觀點認為:只要真正熟練掌握了 C 語言編程,即使再學習其它的編程語言肯定也是非常容易的。因為不同的編程語言,其實編程思路都是一樣的,只不過是其語法、語句、以及關鍵字不同而已。

5. 怎麼加強c語言編程能力

1.先自己寫一些小程序,然後再從網上下載些優秀代碼回來,對比自己的程序,找出差別,認真對比學習,吃透優秀演算法,慢慢積累。
2.從小的模塊程序開始,一步一步優化自己的程序,這樣的話,以後寫的大程序就慢慢好了,沒事的時候多看看C的書,不懂的要搞懂,已經懂的要多想想有沒有更好的方法。
3另外,單片機與硬體有關,不可能說編譯器中的庫函數有什麼什麼,就可直接使用,還得考慮自己單片機的執行速度等好多方面的問題。
4.有空的話,也可以看看軟體方面的書,學學一些典型演算法。
5.這是後話,程序的效率除了編程外,還與編譯器有大的關系,可以從網上看看,學習一下自己使用的編譯器的特點。
反正不斷努力,肯定會有進步。編程需要練習,不練習,空想成不了高手,不要
浮躁,會驅動51的幾個小東西,就得意
編程需要的是綜合能力。各個方面都兼顧到,

6. 怎樣才能更好的掌握C語言編程

要多修煉內功,首先學習c的基本知識,然後學習數據結構和演算法,匯編語言,學習操作系統,計算機組成原理,windows下編程,編譯原理。下面介紹它們的用處:大學英語-不要覺得好笑。我極力推薦這門課程是因為沒有專業文檔的閱讀能力是不可想像的。中文的翻譯往往在猴年馬月才會出來,而現在的許多出版社乾脆就直接把E文印刷上去。學習的方法是強迫自己看原版的教材,開始會看不懂,用多了自然熟練。吃得苦下得狠心絕對是任何行業都需要的品質。

計算機體系結構和匯編語言-關於體系結構的書遍地都是,而且也大同小異,倒是匯編有一本非常好的書《80x86匯編語言程序設計教程》(清華大學出版社,黑色封面,楊季文著)。你需要著重學習386後保護模式的程序設計。否則你在學習現代操作系統底層的一些東西的時候會覺得是在看天書。

計算機操作系統原理-我們的開發總是在特定的操作系統上進行,如果不是,只有一種可能:你在自己實現一個操作系統。無論如何,操作系統原理是必讀的。這就象我們為一個晶元製作外圍設備時,晶元基本的工作時序是必需了解的。這一類書也很多,我沒有發現哪一本書非常出眾。只是覺得在看完了這些書後如果有空就應該看看《Inside Windows 2000》(微軟出版社,我看的是E文版的,中文的書名想必是Windows 2000 技術內幕之類吧)。關於學習它的必要性,ZDNET上的另一篇文章已經有過論述。

數據結構和演算法-這門課程能夠決定一個人程序設計水平的高低,是一門核心課程。我首選的是清華版的(朱戰立,劉天時)。很多人喜歡買C++版的,但我覺得沒有必要。C++的語法讓演算法實現過程變得復雜多了,而且許多老師喜歡用模塊這一東西讓演算法變得更復雜。倒是在學完了C版的書以後再來瀏覽一下C++的版的書是最好的。

軟體工程-這門課程是越到後來就越發現它的重要,雖然剛開始看時就象看馬哲一樣不知所雲。我的建議是看《實用軟體工程》(黃色,清華)。不要花太多的時間去記條條框框,看不懂就跳過去。在每次自己完成了一個軟體設計任務(不管是練習還是工作)以後再來回顧回顧,每次都會有收獲。

Windows 程序設計-《北京大學出版社,Petzold著》我建議任何企圖設計Windows 程序的人在學習VC以前仔細的學完它。而且前面的那本《Inside Windows 2000》也最好放到這本書的後面讀。在這本書中,沒有C++,沒有GUI,沒有控制項。有的就是如何用原始的C語言來完成Windows 程序設計。在學完了它以後,你才會發現VC其實是很容易學的。千萬不要在沒有看完這本書以前提前學習VC,你最好碰都不要碰。我知道的許多名校甚至都已經用它作為教材進行授課。可見其重要。
最好按照我說的順序學,學什麼都要循序漸進的,祝你學習愉快

7. 學習C語言需要掌握哪些基本知識

1.入門程序

#include <stdio.h>
int main()
{
printf("Hello World!");
return 0;
}

2.數據類型

數據類型:

1.基本數據類型:

1.1. 整型:int 4個位元組

1.2. 字元型:char 1個位元組

1.3. 實型(浮點型)

  • 1.3.1.單精度型:float 4個位元組

  • 1.3.2.雙精度型:double 8個位元組

  • 2.構造類型:

    2.1.枚舉類型

    2.2.數組類型

    2.3.結構體類型

    2.4.共用體類型

    3.指針類型:

    4.空類型:

    3.格式化輸出語句

  • %d:十進制整數;

  • %c:單個字元;

  • %s:字元串;

  • %f:6位小數;

  • #include <stdio.h>

  • int main()

  • {

  • int age = 18;

  • float height = 1.85;

  • char unit = 'm';

  • printf("小明今年%d歲 ", age);

  • printf("小明身高%f%c ", height, unit);

  • printf("小明現在在慕課網上學習IT技術 ");

  • return 0;

  • }

  • 學好C++才是入職大廠的敲門磚! 當年要是有這課,我的C++也不至於這樣

    已失效

    4.常量

    值不發生改變的量成為常量;

    定義字元常量(注意後面沒有;)

  • #include <stdio.h>

  • #define POCKETMONEY 10 //定義常量及常量值

  • int main()

  • {

  • printf("小明今天又得到%d元零花錢 ", POCKETMONEY);

  • return 0;

  • }

  • 5.運算符

    5.1.算數運算符:+,-,*,/,%,++,--;前++/--,先運算,再取值.後++/--,先取值,再運算;

    5.2.賦值運算符:

    5.3.關系運算符;

    5.4.邏輯運算符;

    5.5.三目運算符:

  • 表達式1 ? 表達式2 : 表達式3;

  • 6.水仙花數計算

    輸出所有三位數的水仙花數字

    所謂「水仙花數」是指一個三位數,其各位數字立方和等於該數,如:153就是一個水仙花數,153=111+555+333。

  • #include <stdio.h>


  • int main()

  • {

  • //定義三位數num,個位數sd,十位數td,百位數hd

  • int num, sd, td, hd;

  • //循環所有三位數

  • for( num=100 ; num<1000 ; num++ )

  • {

  • //獲取三位數字num百位上的數字

  • hd = num/100 ;

  • //獲取三位數字num十位上的數字

  • td = num/10%10 ;

  • //獲取三位數字num個位上的數字

  • sd = num%10 ;

  • //水仙花數的條件是什麼?

  • if(num ==hd*hd*hd+td*td*td+sd*sd*sd )

  • {

  • printf("水仙花數字:%d ", num);

  • }

  • }

  • return 0;

  • }

  • 7.列印正三角形的*

  • #include <stdio.h>

  • int main()

  • {

  • int i, j, k;

  • for(i=1; i<5; i++)

  • {

  • /* 觀察每行的空格數量,補全循環條件 */

  • for( j=i ; j<5 ; j++ )

  • {

  • printf(" "); //輸出空格

  • }

  • /* 觀察每行*號的數量,補全循環條件 */

  • for( k=0 ; k<2*i-1 ; k++ )

  • {

  • printf("*"); //每行輸出的*號

  • }

  • printf(" "); //每次循環換行

  • }

  • return 0;

  • }

  • 8.臭名遠揚的goto語句

    很少使用

  • #include <stdio.h>

  • int main()

  • {

  • int sum = 0;

  • int i;

  • for(i=1; i<=10; i++)

  • {

  • printf("%d ", i);

  • if(i==3){

  • goto LOOP;//滿足條件就執行goto語句

  • }

  • }

  • //執行goto

  • LOOP:printf("結束for循環了...."); //請選擇合適位置添加標識符

  • return 0;

  • }

  • 9.形參與實參

    形參:形參是在定義函數名和函數體的時候使用的參數,目的是用來接收調用該函數時傳入的參數;

    實參:實參是在調用時傳遞該函數的參數。

    函數的形參和實參具有以下特點:

  • 形參只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只有在函數內部有效。函數調用結束返回主調函數後則不能再使用該形參變數。

  • 實參可以是常量、變數、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應預先用賦值等辦法使實參獲得確定值。

  • 在參數傳遞時,實參和形參在數量上,類型上,順序上應嚴格一致,否則會發生類型不匹配」的錯誤。

  • 10.函數返回值注意

    注意:void函數中可以有執行代碼塊,但是不能有返回值,另void函數中如果有return語句,該語句只能起到結束函數運行的功能。其格式為:return;

    11.遞歸

  • #include <stdio.h>


  • int getPeachNumber(int n) //這里要定義n,要不編譯器會報錯!

  • {

  • int num;

  • if(n==10)

  • {

  • return 1;

  • }

  • else

  • {

  • num = (getPeachNumber(n+1)+1)*2;

  • printf("第%d天所剩桃子%d個 ", n, num);

  • }

  • return num;

  • }

  • int main()

  • {

  • int num = getPeachNumber(1);

  • printf("猴子第一天摘了:%d個桃子。 ", num);

  • return 0;

  • }

  • 12.變數存儲類別 !

    12.1.生存周期劃分存儲方式

    C語言根據變數的生存周期來劃分,可以分為靜態存儲方式和動態存儲方式。

    靜態存儲方式:是指在程序運行期間分配固定的存儲空間的方式。靜態存儲區中存放了在整個程序執行過程中都存在的變數,如全局變數。

    動態存儲方式:是指在程序運行期間根據需要進行動態的分配存儲空間的方式。動態存儲區中存放的變數是根據程序運行的需要而建立和釋放的,通常包括:函數形式參數;自動變數;函數調用時的現場保護和返回地址等。

    12.2.存儲類型劃分

    C語言中存儲類別又分為四類:自動(auto)、靜態(static)、寄存器的(register)和外部的(extern) ;

  • 用關鍵字auto定義的變數為自動變數,auto可以省略,auto不寫則隱含定為「自動存儲類別」,屬於動態存儲方式。

  • 用static修飾的為靜態變數,如果定義在函數內部的,稱之為靜態局部變數;如果定義在函數外部,稱之為靜態外部變數。

  • 注意:靜態局部變數屬於靜態存儲類別,在靜態存儲區內分配存儲單元,在程序整個運行期間都不釋放;靜態局部變數在編譯時賦初值,即只賦初值一次;如果在定義局部變數時不賦初值的話,則對靜態局部變數來說,編譯時自動賦初值0(對數值型變數)或空字元(對字元變數)

  • 為了提高效率,C語言允許將局部變數的值放在CPU中的寄存器中,這種變數叫「寄存器變數」,用關鍵字register作聲明。

  • 注意:只有局部自動變數和形式參數可以作為寄存器變數;一個計算機系統中的寄存器數目有限,不能定義任意多個寄存器變數;局部靜態變數不能定義為寄存器變數。

  • 用extern聲明的的變數是外部變數,外部變數的意義是某函數可以調用在該函數之後定義的變數。

  • #includ <stdio.h>

  • //來源公眾號:C語言與CPP編程

  • int main()

  • {

  • //定義外部局部變數

  • extern int x;

  • return 0;

  • }

  • int x=100;

  • 13.內部函數外部函數 !

    在C語言中不能被其他源文件調用的函數稱為內部函數 ,內部函數由static關鍵字來定義,因此又被稱為靜態函數,形式為:

    static [數據類型] 函數名([參數])

    這里的static是對函數的作用范圍的一個限定,限定該函數只能在其所處的源文件中使用,因此在不同文件中出現相同的函數名稱的內部函數是沒有問題的。

    在C語言中能被其他源文件調用的函數稱為外部函數 ,外部函數由extern關鍵字來定義,形式為:

    extern [數據類型] 函數名([參數])

    C語言規定,在沒有指定函數的作用范圍時,系統會默認認為是外部函數,因此當需要定義外部函數時extern也可以省略。 extern可以省略; 14.數組 數組:一塊連續的,大小固定並且裡面的數據類型一致的內存空間, 數組的聲明:數據類型 數組名稱[長度n]

  • 數據類型 數組名稱[長度n] = {元素1,元素2,元素3,......};

  • 數據類型 數組名稱[] = {元素1,元素2,元素3,......};

  • 數類類型 數組名稱[長度n]; 數組名稱[0] = 元素1;數組名稱[1] = 元素2;...... 注意: 1、數組的下標均以0開始; 2、數組在初始化的時候,數組內元素的個數不能大於聲明的數組長度; 3、如果採用第一種初始化方式,元素個數小於數組的長度時,多餘的數組元素初始化為0; 4、在聲明數組後沒有進行初始化的時候,靜態(static)和外部(extern)類型的數組元素初始化元素為0,自動(auto)類型的數組的元素初始化值不確定。

  • 15.數組遍歷

  • #include <stdio.h>


  • int main()

  • {

  • int arr[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

  • int i;

  • for(i=0;i<10;i++)

  • {

  • printf("%d ",arr[i]);

  • }

  • return 0;

  • }

  • 數組的冒泡排序

  • 冒泡排序的思想:相鄰元素兩兩比較,將較大的數字放在後面,直到將所有數字全部排序。

  • 字元串與數組

  • 在C語言中,是沒有辦法直接定義子字元串數據類型的,需使用數組來定義所要的字元串,形式如下:

  • char 字元串名稱[長度] = "字元串內容";

  • char 字元串名稱[長度] = {'字元串1','字元串2',....,'字元串n',''};

  • 注:

  • []中的長度可以省略不寫;

  • 採用第二種方式最後一個元素必須是'',表示結束;

  • 第二種方式不能寫中文!; 輸出字元串時,要使用:printf("%s",字元數組名);或puts(字元數組名);

  • 16.字元串函數

  • strlen(s):獲取字元串s的長度;

  • strcmp(s1,s2):比較字元串;比較的時候會把字元串轉換成ASCII碼再進行比較,返回結果為0表示s1和s2的ASCII碼值相等,返回結果為1表示s1比s2的ASCII碼大,返回結果為-1表示s1比s2的ACSII碼小;

  • strcpy(s1,s2):字元串拷貝;s2會取代s1中的內容;

  • strcat(s1,s2)將s2拼接到s1後面;注意:s1的length要足夠才可以!

  • atoi(s1)將字元串轉為整數!

  • 17.多維數組

    數據類型 數組名稱[常量表達式1]...[常量表達式n];

    多維數組的初始化與一維數組的初始化類似也是分兩種:

  • 數據類型 數組名稱[常量表達式1][常量表達式2]...[常量表達式n] = {{值1,..,值n},{值1,..,值n},...,{值1,..,值n}};

  • 數據類型 數組名稱[常量表達式1][常量表達式2]...[常量表達式n]; 數組名稱[下標1][下標2]...[下標n] = 值;

  • 多維數組初始化要注意以下事項:

  • 採用第一種始化時數組聲明必須指定列的維數。因為系統會根據數組中元素的總個數來分配空間,當知道元素總個數以及列的維數後,會直接計算出行的維數;

  • 採用第二種初始化時數組聲明必須同時指定行和列的維數。

  • 18.多維度數組的遍歷

    使用嵌套循環

    注意:多維數組的每一維下標均不能越界!

    19.結構體

    C 數組允許定義可存儲相同類型數據項的變數,結構是 C 編程中另一種用戶自定義的可用的數據類型,它允許您存儲不同類型的數據項。

    結構用於表示一條記錄,假設您想要跟蹤圖書館中書本的動態,您可能需要跟蹤每本書的下列屬性:

  • Title

  • Author

  • Subject

  • Book ID

  • 定義結構

    為了定義結構,您必須使用 struct 語句。struct 語句定義了一個包含多個成員的新的數據類型,struct 語句的格式如下:

  • struct tag {

  • member-list

  • member-list

  • member-list

  • ...

  • } variable-list ;

  • tag 是結構體標簽。

    member-list 是標準的變數定義,比如 int i; 或者 float f,或者其他有效的變數定義。

    variable-list 結構變數,定義在結構的末尾,最後一個分號之前,您可以指定一個或多個結構變數。下面是聲明 Book 結構的方式:

  • struct Books

  • {

  • char title[50];

  • char author[50];

  • char subject[100];

  • int book_id;

  • } book;

  • 在一般情況下,tag、member-list、variable-list 這 3 部分至少要出現 2 個。以下為實例:

  • //此聲明聲明了擁有3個成員的結構體,分別為整型的a,字元型的b和雙精度的c

  • //同時又聲明了結構體變數s1

  • //這個結構體並沒有標明其標簽

  • struct

  • {

  • int a;

  • char b;

  • double c;

  • } s1;


  • //此聲明聲明了擁有3個成員的結構體,分別為整型的a,字元型的b和雙精度的c

  • //結構體的標簽被命名為SIMPLE,沒有聲明變數

  • struct SIMPLE

  • {

  • int a;

  • char b;

  • double c;

  • };

  • //用SIMPLE標簽的結構體,另外聲明了變數t1、t2、t3

  • struct SIMPLE t1, t2[20], *t3;


  • //也可以用typedef創建新類型

  • typedef struct

  • {

  • int a;

  • char b;

  • double c;

  • } Simple2;

  • //現在可以用Simple2作為類型聲明新的結構體變數

  • Simple2 u1, u2[20], *u3;

  • 訪問結構成員

    為了訪問結構的成員,我們使用成員訪問運算符(.)。成員訪問運算符是結構變數名稱和我們要訪問的結構成員之間的一個句號。您可以使用 struct 關鍵字來定義結構類型的變數。下面的實例演示了結構的用法:

  • #include <stdio.h>

  • #include <string.h>

  • //來源公眾號:C語言與CPP編程


  • struct Books

  • {

  • char title[50];

  • char author[50];

  • char subject[100];

  • int book_id;

  • };


  • int main( )

  • {

  • struct Books Book1; /* 聲明 Book1,類型為 Books */

  • struct Books Book2; /* 聲明 Book2,類型為 Books */


  • /* Book1 詳述 */

  • strcpy( Book1.title, "C Programming");

  • strcpy( Book1.author, "Nuha Ali");

  • strcpy( Book1.subject, "C Programming Tutorial");

  • Book1.book_id = 6495407;


  • /* Book2 詳述 */

  • strcpy( Book2.title, "Telecom Billing");

  • strcpy( Book2.author, "Zara Ali");

  • strcpy( Book2.subject, "Telecom Billing Tutorial");

  • Book2.book_id = 6495700;


  • /* 輸出 Book1 信息 */

  • printf( "Book 1 title : %s ", Book1.title);

  • printf( "Book 1 author : %s ", Book1.author);

  • printf( "Book 1 subject : %s ", Book1.subject);

  • printf( "Book 1 book_id : %d ", Book1.book_id);


  • /* 輸出 Book2 信息 */

  • printf( "Book 2 title : %s ", Book2.title);

  • printf( "Book 2 author : %s ", Book2.author);

  • printf( "Book 2 subject : %s ", Book2.subject);

  • printf( "Book 2 book_id : %d ", Book2.book_id);


  • return 0;

  • }

  • 學好C++才是入職大廠的敲門磚! 當年要是有這課,我的C++也不至於這樣

    已失效

    20.共用體

    共用體是一種特殊的數據類型,允許您在相同的內存位置存儲不同的數據類型。您可以定義一個帶有多成員的共用體,但是任何時候只能有一個成員帶有值。共用體提供了一種使用相同的內存位置的有效方式。

  • #include <stdio.h>

  • #include <string.h>


  • union Data

  • {

  • int i;

  • float f;

  • char str[20];

  • };


  • int main( )

  • {

  • union Data data;


  • printf( "Memory size occupied by data : %d ", sizeof(data));


  • return 0;

  • }

  • 21.指針

  • #include <stdio.h>


  • int main ()

  • {

  • int var = 20; /* 實際變數的聲明 */

  • int *ip; /* 指針變數的聲明 */


  • ip = &var; /* 在指針變數中存儲 var 的地址 */


  • printf("Address of var variable: %p ", &var );


  • /* 在指針變數中存儲的地址 */

  • printf("Address stored in ip variable: %p ", ip );


  • /* 使用指針訪問值 */

  • printf("Value of *ip variable: %d ", *ip );


  • return 0;

  • }

  • 22.文件讀寫

    寫入文件

  • #include <stdio.h>


  • int main()

  • {

  • FILE *fp = NULL;


  • fp = fopen("/tmp/test.txt", "w+");

  • fprintf(fp, "This is testing for fprintf... ");

  • fputs("This is testing for fputs... ", fp);

  • fclose(fp);

  • }

  • 讀取文件

  • #include <stdio.h>


  • int main()

  • {

  • FILE *fp = NULL;

  • char buff[255];


  • fp = fopen("/tmp/test.txt", "r");

  • fscanf(fp, "%s", buff);

  • printf("1: %s ", buff );


  • fgets(buff, 255, (FILE*)fp);

  • printf("2: %s ", buff );


  • fgets(buff, 255, (FILE*)fp);

  • printf("3: %s ", buff );

  • fclose(fp);


  • }

  • C語言與C++學習路線

    23.排序演算法

    十大經典排序演算法(動態演示+代碼)

    24.查找演算法

    九種查找演算法

    25.面試知識

    C語言與C++面試知識總結

    26.字元串操作

    字元串操作的全面總結

    27.C語言常用標准庫解讀

    C語言常用標准庫解讀

    28. C語言最常用的貪心演算法

    C語言最常用的貪心演算法就這么被攻克了

    29. 常見的C語言內存錯誤及對策

    常見的C語言內存錯誤及對策

    30. C語言實現面向對象的原理

    C語言實現面向對象的原理

    31. C語言/C++內存管理

    看完這篇你還能不懂C語言/C++內存管理?

    32. 再談C語言指針

    再談指針:大佬給你撥開 C 指針的雲霧

    C語言函數指針之回調函數

    C語言指針詳解(文末有福利)

    33. C語言預處理命令

    長文詳解:C語言預處理命令

    34. C語言高效編程與代碼優化

    C語言高效編程與代碼優化

    35. C語言結構體

    C語言之結構體就這樣被攻克了!值得收藏!

    36. 原碼, 反碼, 補碼 詳解

    原碼, 反碼, 補碼 詳解

    37. C語言宏定義

    簡述C語言宏定義的使用

    38. c語言之共用體union、枚舉、大小端模式

    c語言之共用體union、枚舉、大小端模式

8. 如何學好C語言

在初學C語言時,可能會遇到有些問題理解不透,或者表達方式與以往數學學習中不同(如運算符等),這就要求不氣餒,不明白的地方多問多想,鼓足勇氣進行學習,待學完後面的章節知識,前面的問題也就迎刃而解了,這一方面我感覺是我們同學最欠缺,大多學不好的就是因為一開始遇到困難就放棄,曾經和好多同學談他的問題,回答是聽不懂、不想聽、放棄這樣三個過程,我反問,這節課你聽過課嗎?回答又是沒有,根本就沒聽過課,怎麼說自己聽不懂呢?相應的根本就沒學習,又談何學的好?
學習C語言始終要記住「曙光在前頭」和「千金難買回頭看」,「千金難買回頭看」是學習知識的重要方法,就是說,學習後面的知識,不要忘了回頭弄清遺留下的問題和加深理解前面的知識,這是我們學生最不易做到的,然而卻又是最重要的。學習C語言就是要經過幾個反復,才能前後貫穿,積累應該掌握的C知識。
那麼,我們如何學好《C程序設計》呢?
一.學好C語言的運算符和運算順序
這是學好《C程序設計》的基礎,C語言的運算非常靈活,功能十分豐富,運算種類遠多於其它程序設計語言。在表達式方面較其它程序語言更為簡潔,如自加、自減、逗號運算和三目運算使表達式更為簡單,但初學者往往會覺的這種表達式難讀,關鍵原因就是對運算符和運算順序理解不透不全。當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則顯得十分重要。在學習中,只要我們對此合理進行分類,找出它們與我們在數學中所學到運算之間的不同點之後,記住這些運算也就不困難了,有些運算符在理解後更會牢記心中,將來用起來得心應手,而有些可暫時放棄不記,等用到時再記不遲。
先要明確運算符按優先順序不同分類,《C程序設計》運算符可分為15種優先順序,從高到低,優先順序為1 ~ 15,除第2、3級和第14級為從右至左結合外,其它都是從左至右結合,它決定同級運算符的運算順序.
二.學好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程序設計》教學大綱中,只要求我們掌握一些簡單的演算法,在掌握這些基本演算法後,要完成對問題的分析就容易了。如兩個數的交換、三個數的比較、選擇法排序和冒泡法排序,這就要求我們要清楚這些演算法的內在含義
結語:當我們把握好上述幾方面後,只要同學們能克服畏難、厭學、上課能專心聽講,做好練習與上機調試,其實C語言並不難學

9. 怎麼能更好的掌握c語言編程

嗯,掌握C語言其實並不難,大家叫難也都是為了考試或者自己有更深的研究,很多大學的大學生計算機基礎都教的是C語言,可見還是很容易入門的,
熟練掌握C語言,看國內
譚浩強編寫的《C語言程序設計》就完全沒有問題。學C,憑記憶學是很難掌握的,最好要上機寫代碼。把例子程序自己動手敲出來,自己印象深刻。
對電腦不熟悉還是個問題,那你就首先要熟悉電腦,這是沒有什麼書可以幫你的,平時玩玩小游戲,多接觸電腦,就會了。
不用看其他的亂七八糟的東西,現在計算機的書,C語言的書特別多,又亂又雜,初學者看一本就好了,多了不好。