最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言零基礎(chǔ)入門(1)

 更新時間:2022年03月11日 16:07:51   作者:RayRings  
這篇文章主要為大家詳細(xì)介紹了C語言零基礎(chǔ)入門的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

1. C語言簡介

1.1 C語言發(fā)展史

C語言是一種廣泛使用的面向過程的計算機程序設(shè)計語言,既適合于系統(tǒng)程序設(shè)計,又適合于應(yīng)用程序設(shè)計。C語言的發(fā)展歷程大致如圖1-1所示:

圖1-1 C語言的發(fā)展歷程

1.2 C語言的特點

C語言是一種通用的程序設(shè)計語言,語言本身簡潔、靈活、表達能力強,被廣泛用于系統(tǒng)軟件和應(yīng)用軟件的開發(fā),并且具有良好的可移植性。

C語言的特點可概括如下:

(1)簡潔、緊湊、靈活。C語言的核心內(nèi)容很少,只有32個關(guān)鍵字,9種控制語句;程序書寫格式自由,壓縮了一切不必要的成分。

(2)表達方式簡練、實用。C語言有一套強有力的運算符,達44種,可以構(gòu)造出多種形式的表達式,用一個表達式就可以實現(xiàn)其他語言可能需要多條語句才能實現(xiàn)的功能。

(3)數(shù)據(jù)類型豐富。數(shù)據(jù)類型越多,數(shù)據(jù)的表達能力就越強。C語言具有多種數(shù)據(jù)類型,如字符型、整型、實型、數(shù)組、指針、結(jié)構(gòu)體和共用體等,可以實現(xiàn)諸如鏈表、棧、隊列、樹等各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。其中的指針類型使得參數(shù)的傳遞簡單并且迅速,同時節(jié)省內(nèi)存空間。

(4)具有低級語言的特點。C語言具有與匯編語言相近的功能和描述方法,如地址運算和二進制數(shù)位運算等,還可以對硬件端口等資源進行直接操作,充分使用計算機的資源。C語言既具有高級語言便于學(xué)習(xí)和掌握的特點,又具有機器語言或匯編語言對硬件的操作能力。因此,C語言既可以作為系統(tǒng)描述語言,又可以作為通用的程序設(shè)計語言。

(5)C語言是一種結(jié)構(gòu)化語言,適合于大型程序的模塊化設(shè)計。C語言提供了編寫結(jié)構(gòu)化程序的基本控制語句,如if-else語句、switch語句、while語句和do-while語句等。C語言是函數(shù)的集合,函數(shù)是構(gòu)成C語言程序的基本單位,每個函數(shù)具有獨立的功能,函數(shù)之間通過參數(shù)傳遞數(shù)據(jù)。程序員可以編寫自己的函數(shù)。同時,不同操作系統(tǒng)的編譯器都為程序員提供了大量的標(biāo)準(zhǔn)庫函數(shù),如輸入/輸出函數(shù)、數(shù)學(xué)函數(shù)和字符串處理函數(shù)等。靈活地使用標(biāo)準(zhǔn)庫函數(shù)可以簡化程序設(shè)計,提高編寫程序效率。

(6)各種版本的編譯器都提供了預(yù)處理命令和預(yù)處理程序。預(yù)處理擴展了C語言的功能,提高了程序的可移植性,為大型程序的調(diào)試提供了方便。

(7)可移植性好。程序從一個環(huán)境不經(jīng)改動或稍加改動就可以移植到另一個完全不同的環(huán)境中運行。這是因為標(biāo)準(zhǔn)庫函數(shù)和預(yù)處理程序?qū)⒖赡艹霈F(xiàn)的與機器有關(guān)的因素與源程序分割開來,使得針對不同的計算機硬件環(huán)境,可以重新定義有關(guān)的內(nèi)容。

(8)生成的目標(biāo)代碼質(zhì)量高。由C源程序編譯和鏈接得到的目標(biāo)代碼的運行效率比用匯編語言編寫的也不過只低10%~20%,可充分發(fā)揮機器的效率。

(9)C語言語法限制不嚴(yán),程序設(shè)計自由度大。C語言程序在運行時不做諸如數(shù)組下標(biāo)越界和變量類型兼容性等檢查,而是由編程者自己保證程序的正確性。C語言幾乎允許所有的數(shù)據(jù)類型的轉(zhuǎn)換,字符型和整型可以自由混合使用,所有類型均可作邏輯型,可自己定義新的類型,還可以把某類型強制轉(zhuǎn)換為指定的類型。實際上,這使編程者有了更大的自主性,能編寫出靈活、優(yōu)質(zhì)的程序,同時也給初學(xué)者增加了一定的難度。所以,只有在熟練掌握C語言程序設(shè)計之后,才能體會到其靈活性。

C語言也存在以下缺點:

(1)程序的錯誤更隱蔽。C語言的靈活性使得用它編寫程序時更容易出錯,而且C的編譯器不檢查這樣的錯誤。與匯編語言類似,需要程序運行時才能發(fā)現(xiàn)這些邏輯錯誤。C語言還會有一些隱患,如將比較的 “==” 寫成賦值 “=” ,雖然語法上沒錯,但這樣的邏輯錯誤往往不易發(fā)現(xiàn),想要找出錯誤往往十分費時。

(2)C語言程序有時會難以理解。C語言語法成分相對簡單,是一種小型語言。但是,其數(shù)據(jù)類型多,運算符豐富且結(jié)合性多樣,使得對其理解有一定的難度。

(3)C語言程序有時會難以修改。考慮到程序規(guī)模的大型化或者巨型化,現(xiàn)在編程語言通常會提供 “類” 和 “包” 之類的語言特性,這樣的特性可以將程序分解成更加易于管理的模塊。然而C語言缺少這樣的特性,維護大型程序顯得比較困難。

1.3算法及其表示

C語言解題時,在程序中有兩方面的描述,即數(shù)據(jù)描述和處理步驟(算法)描述,后者處理前者的數(shù)據(jù)。

算法具有以下特性:

  • 有窮性:算法在執(zhí)行了有限步驟后結(jié)束,并且每一步都可以在有窮的時間內(nèi)完成。      
  • 確定性:算法中每種操作必須有確切的含義,即無二義性。同時,無論如何算法只有唯一的一條執(zhí)行路徑,即相同的輸入只能得出相同的輸出。      
  • 可行性:算法中描述的操作都可以通過已經(jīng)實現(xiàn)的基本操作執(zhí)行有限次數(shù)來實現(xiàn)。      
  • 輸入:有零個或多個輸入,即算法需要的必要信息。      
  • 輸出:有一個或多個輸出,輸出的是與輸入有某些特定關(guān)系的信息。沒有輸出的算法是無意義的。

算法的表示:

1.自然語言描述;    

2.傳統(tǒng)流程圖;    

3.N-S流程圖;    

4.偽代碼。

【例如】求兩個正整數(shù)m和n的最大公約數(shù)(即同時能夠整除m和n的最大正整數(shù))。

1. 自然語言描述

歐幾里得闡述了求兩個數(shù)的最大公約數(shù)的過程——歐幾里得算法

第一步:以n除m,并令r為所得余數(shù)(顯然n>r\geqslant0)。

第二步:若r=0,算法結(jié)束,n即為m和n的最大公約數(shù)。

第三步:置m\leftarrown,n\leftarrowr,返回第一步。

2. 傳統(tǒng)流程圖

圖1-2 求最大公約數(shù)的傳統(tǒng)流程圖

3. N-S流程圖

圖1-3 求最大公約數(shù)的N-S流程圖

4. 偽代碼

算法開始
輸入m,n;
do{
    r←以n除m的余數(shù);
    m←n;
    n←r;
}while(r≠0);
輸出m;
算法結(jié)束

1.4常用算法介紹

1.枚舉法

枚舉法又稱為窮舉法。該方法通過逐一考察問題的所有可能解,找出問題真正的解。枚舉法要求問題的可能解必須是有限的,而且這些可能解是已知的。

【例】給定一個正整數(shù),確定它的整數(shù)立方根是否存在,若存在則找出這個立方根。

算法開始
輸入一個正整數(shù)給n;
x←0;
while(x≤n 且 x*x*x≠n){
    x←x+1;
}
if(x≤n)
    找到n的整數(shù)立方根,輸出x的值;
else
    輸出n的整數(shù)立方根不存在信息;
算法結(jié)束

2.遞推法

遞推法是從已知的初始條件出發(fā),逐次推出中間結(jié)果。在理想狀態(tài)下,每遞推一次,結(jié)果逐漸接近問題的最后解。遞推法在數(shù)值算法中又稱為迭代法。迭代法常用于求近似解的問題,根據(jù)對前一步結(jié)果的誤差的不同處理方法,迭代法又有逼近迭代和試探迭代等不同方法。數(shù)值計算要注意解的穩(wěn)定性問題,即在迭代中每一步的解越來越接近真正的解,否則迭代不會成功。

【例】計算一個正整數(shù)n的階乘。

算法開始
輸入一個正整數(shù)給n;
t←1;
i←1;
while(i≤n){
    t←t*i;
    i←i+1;
}
輸出結(jié)果t
算法結(jié)束

3.遞歸法

一個直接或間接調(diào)用過程(或函數(shù))自身的算法稱為遞歸算法,一個函數(shù)如果調(diào)用自身進行計算則稱該函數(shù)為遞歸函數(shù)。一些問題的算法描述中,遞歸法往往比非遞歸法更加簡潔易懂。

【例】計算一個正整數(shù)N的階乘。

階乘函數(shù)f的遞歸定義為:
f(1)=1                (1!=1,N=1 時)
f(N)=N*f(N-1)         (N!=N*(N-1)!,如果N>1)

除了上面介紹的枚舉法、遞推法和遞歸法外,還有回溯法、貪婪法、分治法、動態(tài)規(guī)劃法等

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!  

相關(guān)文章

  • C++使用alsa庫實現(xiàn)播放聲音文件

    C++使用alsa庫實現(xiàn)播放聲音文件

    這篇文章主要為大家詳細(xì)介紹了Linux系統(tǒng)上C++如何使用alsa庫播放聲音文件,文中示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-04-04
  • C語言經(jīng)典算法例題求100-999之間的“水仙花數(shù)”

    C語言經(jīng)典算法例題求100-999之間的“水仙花數(shù)”

    本文的主要內(nèi)容,設(shè)計一個程序,找出100-999之間的“水仙花數(shù)”,需要的朋友可以參考下
    2015-07-07
  • c++ string的erase刪除方法

    c++ string的erase刪除方法

    這篇文章主要介紹了c++ string的erase刪除方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 構(gòu)建mfc窗體的簡單示例

    構(gòu)建mfc窗體的簡單示例

    這篇文章主要介紹了構(gòu)建mfc窗體的簡單示例,需要的朋友可以參考下
    2014-04-04
  • 深入理解Qt信號槽機制

    深入理解Qt信號槽機制

    信號槽是 Qt 框架引以為豪的機制之一。本文主要介紹了Qt信號槽機制,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C++ 約瑟夫環(huán)問題案例詳解

    C++ 約瑟夫環(huán)問題案例詳解

    這篇文章主要介紹了C++ 約瑟夫環(huán)問題案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C++ Vector迭代器失效問題的解決方法

    C++ Vector迭代器失效問題的解決方法

    最近我學(xué)習(xí)了C++中的迭代器失效問題,迭代器失效問題是非常非常重要的,所以特意整理出來一篇文章供我們一起復(fù)習(xí)和學(xué)習(xí)
    2022-08-08
  • Visual C++中MFC消息的分類

    Visual C++中MFC消息的分類

    標(biāo)準(zhǔn)(窗口)消息:窗口消息一般與窗口內(nèi)部運作有關(guān),如創(chuàng)建窗口,繪制窗口,銷毀窗口,通常,消息是從系統(tǒng)發(fā)到窗口,或從窗口發(fā)到系統(tǒng)
    2012-11-11
  • C語言簡明介紹指針的使用

    C語言簡明介紹指針的使用

    C語言這門課程在計算機的基礎(chǔ)教學(xué)中一直占有比較重要的地位,然而要想突破C語言的學(xué)習(xí),對指針的掌握是非常重要的,本文將具體針對指針的基礎(chǔ)做詳盡的介紹
    2022-06-06
  • C++實現(xiàn)日期類(Date)

    C++實現(xiàn)日期類(Date)

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)日期類的相關(guān)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09

最新評論

潜江市| 都昌县| 太和县| 科尔| 铁岭县| 沅江市| 宿松县| 光山县| 北安市| 贞丰县| 山阴县| 曲水县| 买车| 海南省| 普定县| 利辛县| 新化县| 浪卡子县| 嘉禾县| 平和县| 陆河县| 皮山县| 获嘉县| 屏南县| 颍上县| 方正县| 巴塘县| 德保县| 永康市| 汉川市| 怀远县| 鄂托克旗| 普兰店市| 哈巴河县| 龙口市| 安龙县| 孟州市| 龙里县| 巴彦淖尔市| 镇沅| 松潘县|