日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言从青铜到王者——基础知识总结

發(fā)布時(shí)間:2025/3/20 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言从青铜到王者——基础知识总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

關(guān)于C語言

C語言簡(jiǎn)介

C 語言是一種通用的高級(jí)語言,最初是由丹尼斯·里奇在貝爾實(shí)驗(yàn)室為開發(fā) UNIX 操作系統(tǒng)而設(shè)計(jì)的。C 語言最開始是于 1972 年在 DEC PDP-11 計(jì)算機(jī)上被首次實(shí)現(xiàn)。在 1978 年,布萊恩·柯林漢(Brian Kernighan)和丹尼斯·里奇(Dennis Ritchie)制作了 C 的第一個(gè)公開可用的描述,現(xiàn)在被稱為 K&R 標(biāo)準(zhǔn)。UNIX 操作系統(tǒng),C編譯器,和幾乎所有的 UNIX 應(yīng)用程序都是用 C 語言編寫的。由于各種原因,C 語言現(xiàn)在已經(jīng)成為一種廣泛使用的專業(yè)語言。

C語言的特點(diǎn)

  • 易于學(xué)習(xí)。
  • 結(jié)構(gòu)化語言。
  • 它產(chǎn)生高效率的程序。
  • 它可以處理底層的活動(dòng)。
  • 它可以在多種計(jì)算機(jī)平臺(tái)上編譯。

金無足赤,人無完人。C語言也有一些缺點(diǎn),指針是C語言的靈魂,然而涉及指針的錯(cuò)誤往往難以察覺。要享受用C語言自由編程的樂趣,就必須承擔(dān)更多的責(zé)任。缺點(diǎn)這塊點(diǎn)到為止,不然又要吐槽了,printf(“鋤禾日當(dāng)午,學(xué)C真他媽苦😢”);

C語言的應(yīng)用范圍

C 語言最初是用于系統(tǒng)開發(fā)工作,特別是組成操作系統(tǒng)的程序。由于 C 語言所產(chǎn)生的代碼運(yùn)行速度與匯編語言編寫的代碼運(yùn)行速度幾乎一樣,所以采用 C 語言作為系統(tǒng)開發(fā)語言。下面列舉幾個(gè)使用 C 的實(shí)例:

  • 操作系統(tǒng)
  • 語言編譯器
  • 匯編器
  • 文本編輯器
  • 打印機(jī)
  • 網(wǎng)絡(luò)驅(qū)動(dòng)器
  • 現(xiàn)代程序
  • 數(shù)據(jù)庫(kù)
  • 語言解釋器
  • 實(shí)體工具

第一個(gè)C語言程序

關(guān)于C語言的有點(diǎn)以及為什么我們要學(xué)習(xí)C語言這里就不多說了,下來我們直接進(jìn)入今天的主題,編寫第一個(gè)C程序。

和學(xué)習(xí)其它語言一樣,先從Hello World開始

關(guān)于編程工具之前介紹了三個(gè),這里就使用其中一個(gè)VS2019,如果還有疑問請(qǐng)看之前的文章。

代碼

#include<stdio.h>int main() { /*主函數(shù)*/printf("hello world!\n"); /*輸出hello world!*/return 0; /*返回*/ }

Ctrl+F5運(yùn)行,運(yùn)行結(jié)果如下:

入門的第一個(gè)程序HelloWorld已經(jīng)完成。
我們來分析一下上面這段代碼:
#include<stdio.h>為文件包含命令,而stdio.h是頭文件,它里面包含里一些程序中需要使用的基本元素,printf()就是其中一個(gè)。

下面定義了一個(gè)main()函數(shù),int為函數(shù)的返回值類型,利用printf()函數(shù)輸出了字符串"hello world",而"\n"是換行符,它在這里的作用是輸出"hello world"后換行。return 0表示返回。

代碼中"/*...*/"是注釋,它的內(nèi)容不參與程序運(yùn)行。C語言中單行注釋也可以用"\\"。

下圖總結(jié)了組成C程序的幾個(gè)部分

該圖片出自

編寫C語言程序的7個(gè)步驟

為了讓大家對(duì)編程有大概的了解,這里將編寫C程序的過程分解成了7個(gè)步驟,當(dāng)然這只是理想狀態(tài)下的,實(shí)際開發(fā)中會(huì)根據(jù)情況循環(huán)或者改進(jìn)一些步驟。這里就不詳細(xì)的介紹每個(gè)步驟了,大家可以通過后續(xù)的文章慢慢理解這幾個(gè)步驟。

編程機(jī)制

我們從兩張圖來分別理解一下windows和unix系統(tǒng)中從源代碼到可執(zhí)行文件的過程

  • Windows
  • Unix

C語言基本算法

算法的基本特性

算法包含兩方面的內(nèi)容:算法設(shè)計(jì)和算法分析

算法設(shè)計(jì)其實(shí)就是針對(duì)某一特定類型的問題而設(shè)計(jì)的一個(gè)實(shí)現(xiàn)過程。算法有以下幾個(gè)特性:

  • 有窮性
  • 確定性
  • 可行性
  • 輸入
  • 輸出

也就是說我們?cè)谠O(shè)計(jì)算法是的滿足上面所說的特性。當(dāng)然算法也是有好有壞的,那么我們?cè)鯓尤ズ饬恳粋€(gè)算法的優(yōu)劣呢?

算法分析其實(shí)就是在衡量一個(gè)算法的優(yōu)劣,通常會(huì)從一下幾個(gè)方面來分析:

  • 正確性
  • 可讀性
  • 健壯性
  • 時(shí)間復(fù)雜度和空間復(fù)雜度
  • 算法的表達(dá)方式

    在描述一個(gè)算法時(shí)通常使用的方法有:自然語言、流程圖、N-S圖等。

    自然語言

    自然語言這種表達(dá)方式通俗易懂,我們通過一個(gè)具體的實(shí)例了解一下。
    需求:任意輸入3個(gè)數(shù),求出其中的最小數(shù)。

    (1) 定義4個(gè)變量分別是a,b,c和min。

    (2) 輸入大小不同的三個(gè)數(shù)分別賦值給a,b,c。

    (3) 判斷a是否小于b,如果小于,則將a的值賦給min,否則將b的值賦給min。

    (4) 判斷min是否小于c,如果小于,則執(zhí)行(5),否則將c的值賦給min。

    (5) 輸出min。

    這種表達(dá)方式的好處就是簡(jiǎn)單易懂,但是當(dāng)遇到復(fù)雜的算法時(shí)自然語言就顯得不是很方便了。

    流程圖

    流程圖就是用一些圖框來代表各種不同性質(zhì)的操作,用流程線來指示算法的執(zhí)行方向。他的特點(diǎn)就是直觀形象,應(yīng)用很廣泛。
    下圖介紹了流程圖的符號(hào)以及含義

    流程圖有三種基本結(jié)構(gòu),即順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。

    • 順序結(jié)構(gòu):順序結(jié)構(gòu)就是簡(jiǎn)單的線性結(jié)構(gòu)

    • 選擇結(jié)構(gòu):選擇結(jié)構(gòu)也稱為分支結(jié)構(gòu)

    • 循環(huán)結(jié)構(gòu):反復(fù)執(zhí)行一系列操作,知道條件不成立時(shí)終止。

    我們?cè)侔焉厦娴男枨笥昧鞒虉D來表示一下

    N-S流程圖

    N-S流程圖是將全部的算法寫在一個(gè)矩形框內(nèi),省去了流程圖中的流程線。下面繼續(xù)看一個(gè)實(shí)例:
    需求:輸入一個(gè)數(shù),判別是否為素?cái)?shù)。

    算法的基本特性和算法的表示介紹到就結(jié)束了。

    數(shù)據(jù)類型

    基本類型

    基本類型就是我們?cè)谑褂肅語言時(shí)最基礎(chǔ)的數(shù)據(jù)類型,包括整形(短整型,基本整型,長(zhǎng)整型)、字符型、浮點(diǎn)型(單、雙精度)以及枚舉類型。

    構(gòu)造類型

    在編程的過程中只使用基本類型是遠(yuǎn)遠(yuǎn)不夠的,為了滿足需求,因此還要使用基本類型之外的類型,構(gòu)造類型就是其中的一種。構(gòu)造類型可以使用基本類型構(gòu)造出新的數(shù)據(jù)類型來滿足實(shí)際開發(fā)中的需求。構(gòu)造類型有3種形式:數(shù)組類型、結(jié)構(gòu)體類型、共用體類型。

    指針類型

    指針是C語言的精華所在,許多編程語言中都支持某種形式的指針,但最著名的是C語言。指針的特殊性在于它的值是一個(gè)內(nèi)存地址。關(guān)于指針后面我們會(huì)詳細(xì)說明。

    空類型

    空類型(void)的主要作用就是限定函數(shù)的返回和限定函數(shù)的參數(shù)。

    為了便于記憶,我將數(shù)據(jù)類型做了一個(gè)簡(jiǎn)單的思維導(dǎo)圖,如下:

    常量

    這塊內(nèi)容就不在用過多的文字贅述了,從下面的思維導(dǎo)圖我們可以直觀的理解。

    關(guān)于符號(hào)常量我們來看一段簡(jiǎn)單的代碼

    #include<stdio.h>#define PI 3.14/*定義符號(hào)常量*/int main() {double r=5.0;/*定義半徑*/double area;/*面積變量*/area = PI*r*r;/*計(jì)算面積*/printf("圓的面積是:%f\n",area);/*打印輸出*/return 0; }

    流程控制語句

    循環(huán)控制語句

    C語言有3種循環(huán)

    • for
    • while
    • do while

    while循環(huán)

    我們先來看下while循環(huán),流程圖如下:

    下來看個(gè)小示例

    do while循環(huán)

    流程圖如下:

    下來看個(gè)小示例

    兩個(gè)小示例的運(yùn)行結(jié)果相同。

    for循環(huán)

    流程圖如下:

    for循環(huán)的執(zhí)行大致可分為4個(gè)步驟

    • 執(zhí)行表達(dá)式1,只執(zhí)行一次
    • 計(jì)算表示式2的值,看其是否為真(非零),如果為真就執(zhí)行循環(huán)體部分,否則直接退出,執(zhí)行for循環(huán)下面的語句
    • 執(zhí)行循環(huán)體
    • 計(jì)算表達(dá)式3的值,然后返回步驟2

    接下來看一個(gè)for循環(huán)的示例

    我們用兩個(gè)for循環(huán)嵌套實(shí)現(xiàn)了九九乘法表

    條件控制語句

    我們先來看個(gè)簡(jiǎn)單的示例:

    #define _CRT_SECURE_NO_WARNINGS#include<stdio.h>int main() {int score;printf("請(qǐng)輸入學(xué)生的數(shù)學(xué)成績(jī):");scanf("%d", &score);if (score < 60 && score >= 0){printf("該學(xué)生的數(shù)學(xué)成績(jī)類別為:差\n");}else if (score < 70 && score >= 60){printf("該學(xué)生的數(shù)學(xué)成績(jī)類別為:及格\n");}else if (score < 80 && score >= 70){printf("該學(xué)生的數(shù)學(xué)成績(jī)類別為:中\(zhòng)n");}else if (score < 90 && score >= 80){printf("該學(xué)生的數(shù)學(xué)成績(jī)類別為:良\n");}else if (score < 100 && score >= 90){printf("該學(xué)生的數(shù)學(xué)成績(jī)類別為:優(yōu)\n");}return 0; }


    這個(gè)示例中使用了關(guān)鍵字if、else if、else等關(guān)鍵字,即循環(huán)語句的關(guān)鍵字,我們來具體看下

    if語句流程圖如下

    if語句用來判定給定條件是否滿足,根據(jù)判斷結(jié)果決定是否執(zhí)行某個(gè)操作。if語句的使用形式如下:

    if else語句流程圖如下:

    多重if語句流程圖如下:

    這里不多解釋了,如有什么不懂可以將示例練習(xí)一遍好好琢磨一下,你會(huì)覺得So easy!

    控制語句示例

    求a,b,c三個(gè)數(shù)中的最大值?

    #define _CRT_SECURE_NO_WARNINGS #include<stdio.h>int main() {int a, b, c;int max1, max2;a = 8;b = 12;c = 10;if (a>b){if (a>c){max1 = a;}else{max1 = c;}}else{if (b>c){max1 = b;}else{max1 = c;}}//三元表達(dá)式max2 = a > b ? (a > c ? a : c) : (b > c ? b : c);printf("the max number is %d\n", max1);printf("the max number is %d\n", max2);return 0; }

    結(jié)果

    如果您覺得本篇文章對(duì)您有幫助就順手點(diǎn)個(gè)贊吧
    更多干貨內(nèi)容請(qǐng)查看我的個(gè)人公眾號(hào):C語言中文社區(qū)。
    C語言中文社區(qū)】是一個(gè)C語言/C++視頻教程、學(xué)習(xí)筆記、電子書、計(jì)算機(jī)二級(jí)資料等專注于C語言/C++編程學(xué)習(xí)者的干貨知識(shí)分享平臺(tái),精選深度文章,分享優(yōu)秀干貨類、技能類的學(xué)習(xí)資源,幫助學(xué)習(xí)中的你。

    總結(jié)

    以上是生活随笔為你收集整理的C语言从青铜到王者——基础知识总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。