本書從程序開發(fā)的基本概念及C語(yǔ)言基礎(chǔ)開始講解,包含程序及算法的基本概念,C語(yǔ)言開發(fā)工具Visiual Studio2022的安裝及使用,以及C語(yǔ)言的程序結(jié)構(gòu),幫助讀者理解程序開發(fā),掌握開發(fā)工具的使用以及C語(yǔ)言程序的結(jié)構(gòu)。然后依次講解數(shù)據(jù)類型和變量,了解數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式;講解輸出和輸入語(yǔ)句,掌握人與機(jī)器之間的數(shù)據(jù)交換方式;講解運(yùn)算符和表達(dá)式,掌握程序中數(shù)據(jù)最基本的處理方式;講解條件語(yǔ)句,理解程序中的分支結(jié)構(gòu);講解循環(huán)語(yǔ)句,理解程序中的循環(huán)結(jié)構(gòu);講解函數(shù),理解封裝和重用的思維。針對(duì)嵌入式開發(fā)和物聯(lián)網(wǎng)開發(fā),本書擴(kuò)展了字符串、指針、預(yù)處理和內(nèi)存管理、結(jié)構(gòu)體、枚舉、共用體以及位運(yùn)算等C語(yǔ)言開發(fā)高級(jí)知識(shí),讓讀者更加深入的學(xué)習(xí)C語(yǔ)言的高級(jí)操作,也為后期學(xué)習(xí)嵌入式或物聯(lián)網(wǎng)開發(fā)打下堅(jiān)實(shí)的基礎(chǔ)。
本書依據(jù)最新的C語(yǔ)言教學(xué)要求和標(biāo)準(zhǔn),結(jié)合作者教學(xué)實(shí)踐經(jīng)驗(yàn),精心設(shè)計(jì)了涵蓋C語(yǔ)言核心知識(shí)點(diǎn)的內(nèi)容體系。全書共分15個(gè)單元,內(nèi)容包括:程序及C語(yǔ)言簡(jiǎn)介,變量、常量和數(shù)據(jù)類型,輸入輸出語(yǔ)句,運(yùn)算符與表達(dá)式,條件語(yǔ)句,循環(huán)語(yǔ)句,一維數(shù)組,函數(shù),字符數(shù)組和字符串,指針,預(yù)處理和內(nèi)存管理,結(jié)構(gòu)體、枚舉及共用體,位運(yùn)算等。本書采用理論結(jié)合實(shí)踐、任務(wù)驅(qū)動(dòng)的方式進(jìn)行闡述。通過(guò)學(xué)習(xí)本書,學(xué)生可有效完成基本的實(shí)踐任務(wù)。
李英,云南林業(yè)職業(yè)技術(shù)學(xué)院,副教授,云南大學(xué)軟件工程碩士,國(guó)家高級(jí)程序員。自2003年7月到云南林業(yè)職業(yè)技術(shù)學(xué)院工作至今,一直從事計(jì)算機(jī)教學(xué)工作。教授課程名稱:程序設(shè)計(jì)基礎(chǔ)、C#程序設(shè)計(jì)與WinForm基礎(chǔ)、網(wǎng)絡(luò)數(shù)據(jù)庫(kù)基礎(chǔ)、JavaScript核心技術(shù)等。在教學(xué)過(guò)程中,曾獲得校級(jí)微課比賽一等獎(jiǎng),課堂教學(xué)能手獎(jiǎng),教學(xué)示范獎(jiǎng),云南省職業(yè)院校教學(xué)能力比賽二等獎(jiǎng)等。所做多媒體課件曾獲第三屆實(shí)踐教學(xué)大賽貳等獎(jiǎng)!冻绦蛟O(shè)計(jì)基礎(chǔ)》參加全國(guó)生態(tài)文明信息化教學(xué)成果遴選,獲三等獎(jiǎng)。主編《C語(yǔ)言程序設(shè)計(jì)》,副主編《程序邏輯及C語(yǔ)言編程》等教材。指導(dǎo)學(xué)生所做微課件獲全國(guó)二等獎(jiǎng)。指導(dǎo)學(xué)生參加職業(yè)院校技能大賽,多次獲一等獎(jiǎng)、二等獎(jiǎng)、三等獎(jiǎng)。申志強(qiáng),邵陽(yáng)職業(yè)技術(shù)學(xué)院,信息技術(shù)學(xué)院書記,計(jì)算機(jī)專業(yè),從事計(jì)算機(jī)科學(xué)與技術(shù)方面教學(xué)與科研。向魏,計(jì)算機(jī)科學(xué)與技術(shù)專業(yè),現(xiàn)任足下科教集團(tuán)技術(shù)總監(jiān)。主持參與德克特信息技術(shù)有限公司跟職業(yè)教育相關(guān)的軟件著作權(quán)登記包括:教學(xué)評(píng)估系統(tǒng)、產(chǎn)教融合系統(tǒng)、AI人才需求大數(shù)據(jù)分析平臺(tái)、成長(zhǎng)系統(tǒng)等;擔(dān)任重慶市第三屆“渝創(chuàng)渝新”中華職業(yè)教育創(chuàng)新創(chuàng)業(yè)大賽決賽高職組大賽評(píng)委;主持重慶市人社局“虛擬現(xiàn)實(shí)工程技術(shù)人員”新職業(yè)培訓(xùn)標(biāo)準(zhǔn)和考核標(biāo)準(zhǔn)的開發(fā),承擔(dān)了重慶市中華職教社重點(diǎn)立項(xiàng)的課題研究;擔(dān)任重慶市“巴渝工匠”杯互聯(lián)網(wǎng)信息技術(shù)職業(yè)技能競(jìng)賽,擔(dān)任大賽裁判員。
單元1 程序及C語(yǔ)言簡(jiǎn)介 / 11.1 程序、算法和流程圖 / 21.1.1 程序的概念 / 21.1.2 算法簡(jiǎn)介 / 31.1.3 算法的表示方法 / 4【任務(wù)1】繪制微信轉(zhuǎn)賬功能的流程圖 / 61.2 常用的C語(yǔ)言開發(fā)工具 / 81.2.1 C-Free軟件簡(jiǎn)介 / 81.2.2 Visual Studio軟件簡(jiǎn)介 / 8【任務(wù)2】安裝Visual Studio 2022軟件 / 91.3 C語(yǔ)言的程序結(jié)構(gòu) / 13【任務(wù)3】輸出自己的座右銘 / 14智慧之光 / 17小結(jié) / 18作業(yè) / 18單元2 變量、常量和數(shù)據(jù)類型 / 192.1 基本數(shù)據(jù)類型 / 202.1.1 數(shù)據(jù)類型概述 / 202.1.2 整型 / 222.1.3 浮點(diǎn)型 / 242.1.4 字符型 / 252.1.5 數(shù)組類型 / 26【任務(wù)1】分析學(xué)生各項(xiàng)個(gè)人信息的數(shù)據(jù)類型 / 272.2 常量、變量的概念及命名規(guī)則 / 282.2.1 常量簡(jiǎn)介 / 282.2.2 變量簡(jiǎn)介 / 282.2.3 變量及常量的命名規(guī)范 / 29【任務(wù)2】設(shè)計(jì)學(xué)生各項(xiàng)個(gè)人信息的變量或常量名稱 / 292.3 變量、常量的定義及使用 / 302.3.1 變量的聲明及調(diào)用 / 302.3.2 常量的聲明 / 31【任務(wù)3】定義變量或常量存儲(chǔ)學(xué)生個(gè)人信息 / 33智慧之光 / 34小結(jié) / 34作業(yè) / 34單元3 輸入 輸出語(yǔ)句 / 363.1 printf() 函數(shù) / 373.1.1 基本輸出 / 373.1.2 格式化輸出 / 383.1.3 C 語(yǔ)言中的轉(zhuǎn)義字符 / 39【任務(wù)1】輸出學(xué)員管理系統(tǒng)的菜單 / 403.2 scanf() 函數(shù) / 423.2.1 scanf() 函數(shù) / 423.2.2 rewind() 函數(shù) / 45【任務(wù)2】接收輸入的個(gè)人信息并輸出 / 463.3 getchar() 與putchar() 函數(shù) / 483.3.1 getchar() 函數(shù) / 483.3.2 putchar() 函數(shù) / 48【任務(wù)3】獲取用戶輸入的題目選項(xiàng)并輸出 / 49智慧之光 / 51小結(jié) / 52作業(yè) / 52單元4 運(yùn)算符與表達(dá)式 / 544.1 算術(shù)運(yùn)算符與關(guān)系運(yùn)算符 / 554.1.1 算術(shù)運(yùn)算符 / 554.1.2 關(guān)系運(yùn)算符 / 57【任務(wù)1】計(jì)算學(xué)生的平均分和總分 / 584.2 賦值運(yùn)算符及復(fù)合賦值運(yùn)算符 / 604.2.1 賦值運(yùn)算符 / 604.2.2 復(fù)合賦值運(yùn)算符 / 61【任務(wù)2】設(shè)計(jì)一套加密算法 / 624.3 自增自減運(yùn)算及條件運(yùn)算符 / 634.3.1 自增自減運(yùn)算符 / 634.3.2 條件運(yùn)算符 / 64【任務(wù)3】獲取學(xué)生成績(jī)的最低分的科目并輸出 / 654.4 邏輯運(yùn)算符及運(yùn)算符的優(yōu)先級(jí) / 674.4.1 邏輯運(yùn)算符 / 674.4.2 運(yùn)算符的優(yōu)先級(jí) / 674.4.3 類型轉(zhuǎn)換 / 69【任務(wù)4】完成學(xué)生評(píng)優(yōu) / 70智慧之光 / 71小結(jié) / 72作業(yè) / 72單元5 條件語(yǔ)句1 / 735.1 if 單分支語(yǔ)句及if...else 雙分支語(yǔ)句 / 745.1.1 條件分支語(yǔ)句概述 / 745.1.2 if 語(yǔ)句 / 745.1.3 if...else 語(yǔ)句 / 75【任務(wù)1】完成學(xué)生信息錄入檢查 / 765.2 if...else if...else 語(yǔ)句 / 77【任務(wù)2】完成學(xué)生成績(jī)?cè)u(píng)級(jí) / 795.3 if 語(yǔ)句嵌套使用 / 80【任務(wù)3】完成學(xué)生獎(jiǎng)學(xué)金評(píng)定 / 83智慧之光 / 85小結(jié) / 85作業(yè) / 86單元6 條件語(yǔ)句2 / 886.1 switch 語(yǔ)句的基本語(yǔ)法及執(zhí)行流程 / 896.1.1 switch 語(yǔ)句的基本語(yǔ)法 / 896.1.2 switch 語(yǔ)句的執(zhí)行流程 / 90【任務(wù)1】對(duì)例6.1 的程序進(jìn)行調(diào)試 / 916.2 switch 語(yǔ)句的基本應(yīng)用 / 94【任務(wù)2】完成教務(wù)系統(tǒng)功能頁(yè)面切換 / 966.3 if 語(yǔ)句與switch 語(yǔ)句的區(qū)別 / 98【任務(wù)3】制作簡(jiǎn)易計(jì)算器 / 98智慧之光 / 100小結(jié) / 101作業(yè) / 101單元7 循環(huán)語(yǔ)句1 / 1037.1 while 語(yǔ)句 / 1047.1.1 while 語(yǔ)句的語(yǔ)法規(guī)則 / 1047.1.2 while 語(yǔ)句的執(zhí)行流程 / 104【任務(wù)1】完成教務(wù)系統(tǒng)登錄功能 / 1057.2 do...while 語(yǔ)句 / 1077.2.1 do...while 語(yǔ)句的語(yǔ)法規(guī)則 / 1077.2.2 do...while 語(yǔ)句的執(zhí)行流程 / 107【任務(wù)2】制作猜數(shù)字游戲 / 1097.3 break 語(yǔ)句和continue 語(yǔ)句 / 1107.3.1 break 語(yǔ)句 / 1107.3.2 continue 語(yǔ)句 / 113【任務(wù)3】?jī)?yōu)化學(xué)生成績(jī)錄入功能 / 114智慧之光 / 115小結(jié) / 115作業(yè) / 116單元8 循環(huán)語(yǔ)句2 / 1188.1 for 循環(huán)語(yǔ)句的基本用法 / 1198.1.1 for 語(yǔ)句的語(yǔ)法規(guī)則 / 1198.1.2 for 語(yǔ)句的執(zhí)行流程 / 119【任務(wù)1】計(jì)算班級(jí)語(yǔ)文成績(jī)平均分 / 1208.2 在for 循環(huán)語(yǔ)句中使用break 和continue / 121【任務(wù)2】統(tǒng)計(jì)班級(jí)語(yǔ)文及格率 / 1228.3 for 循環(huán)語(yǔ)句的嵌套使用 / 124【任務(wù)3】計(jì)算班級(jí)學(xué)生總分的平均分 / 126智慧之光 / 129小結(jié) / 129作業(yè) / 129單元9 一維數(shù)組 / 1319.1 數(shù)組的定義及初始化 / 1329.1.1 數(shù)組簡(jiǎn)介 / 1329.1.2 使用數(shù)組的優(yōu)點(diǎn) / 1339.1.3 數(shù)組的存儲(chǔ)機(jī)制 / 1339.1.4 定義數(shù)組 / 1339.1.5 初始化數(shù)組 / 1349.1.6 引用數(shù)組元素 / 135【任務(wù)1】統(tǒng)計(jì)班級(jí)滿分人數(shù) / 1369.2 數(shù)組的應(yīng)用 / 137【任務(wù)2】獲取班級(jí)成績(jī)最高分和最低分并計(jì)算差值 / 1409.3 數(shù)組排序算法 / 1419.3.1 冒泡排序算法 / 1419.3.2 選擇排序算法 / 1439.3.3 冒泡排序和選擇排序的區(qū)別 / 145【任務(wù)3】對(duì)班級(jí)學(xué)生成績(jī)進(jìn)行降序排列 / 146智慧之光 / 147小結(jié) / 148作業(yè) / 148單元10 函數(shù) / 15010.1 函數(shù)基礎(chǔ) / 15110.1.1 函數(shù)的概念 / 15110.1.2 使用函數(shù)的優(yōu)點(diǎn) / 15210.1.3 函數(shù)分類 / 15210.1.4 函數(shù)的三大特征 / 15310.1.5 函數(shù)定義 / 15310.1.6 函數(shù)調(diào)用 / 15510.1.7 參數(shù)的類型 / 15610.1.8 函數(shù)原型聲明 / 157【任務(wù)1】用函數(shù)實(shí)現(xiàn)成績(jī)錄入 / 15810.2 局部變量和全局變量 / 16010.2.1 局部變量 / 16010.2.2 全局變量 / 161【任務(wù)2】錄入成績(jī)后完成成績(jī)處理 / 16210.3 函數(shù)的遞歸調(diào)用 / 16510.3.1 遞歸調(diào)用的基本思想 / 16510.3.2 遞歸調(diào)用的特點(diǎn) / 165【任務(wù)3】計(jì)算斐波那契數(shù)列第N 項(xiàng)的值 / 166智慧之光 / 167小結(jié) / 168作業(yè) / 168單元11 字符數(shù)組和字符串 / 17011.1 字符串的定義與初始化 / 17111.1.1 字符數(shù)組的定義 / 17111.1.2 字符數(shù)組的初始化 / 17211.1.3 字符串簡(jiǎn)介 / 17311.1.4 字符串與字符數(shù)組的區(qū)別 / 174【任務(wù)1】完成字符串的手動(dòng)拼接 / 17411.2 字符串的輸入 輸出 / 17611.2.1 標(biāo)準(zhǔn)輸入/輸出 / 17611.2.2 fgets() 和fputs() 函數(shù) / 176【任務(wù)2】將大乘法口訣表輸出到文件中保存 / 18011.3 常用的字符串處理函數(shù) / 181【任務(wù)3】實(shí)現(xiàn)教務(wù)系統(tǒng)學(xué)生登錄 / 186智慧之光 / 187小結(jié) / 188作業(yè) / 188單元12 指針 / 18912.1 指針基礎(chǔ) / 19012.1.1 指針的概念 / 19012.1.2 指針變量 / 19112.1.3 指針的使用 / 19112.1.4 指針運(yùn)算 / 19212.1.5 空指針 / 195【任務(wù)1】使用指針實(shí)現(xiàn)交換兩個(gè)學(xué)生的成績(jī) / 19512.2 指針在數(shù)組中的應(yīng)用 / 19612.2.1 數(shù)組指針 / 19612.2.2 指針數(shù)組 / 198【任務(wù)2】使用指針實(shí)現(xiàn)選擇排序 / 19912.3 指針在函數(shù)中的應(yīng)用 / 20012.3.1 數(shù)組傳遞 / 20012.3.2 傳遞指針 / 20112.3.3 指針函數(shù) / 20212.3.4 函數(shù)指針 / 203【任務(wù)3】教務(wù)系統(tǒng)成績(jī)管理模塊功能實(shí)現(xiàn) / 204智慧之光 / 206小結(jié) / 206作業(yè) / 207單元13 預(yù)處理和內(nèi)存管理 / 20813.1 預(yù)處理命令 / 20913.1.1 預(yù)處理器簡(jiǎn)介 / 20913.1.2 預(yù)處理符號(hào) / 21013.1.3 宏定義 / 21013.1.4 條件編譯 / 217【任務(wù)1】封裝常用輸入功能函數(shù)為頭文件 / 22013.2 內(nèi)存管理分區(qū) / 22313.2.1 內(nèi)存分區(qū)簡(jiǎn)介 / 22313.2.2 動(dòng)態(tài)內(nèi)存的申請(qǐng)和分配 / 22413.2.3 野指針 / 227【任務(wù)2】動(dòng)態(tài)分配學(xué)生成績(jī)數(shù)組 / 22813.3 堆和棧 / 22913.3.1 堆 / 22913.3.2 棧 / 22913.3.3 棧和堆的區(qū)別 / 230【任務(wù)3】錄入并輸出班級(jí)名單 / 230智慧之光 / 232小結(jié) / 233作業(yè) / 233單元14 結(jié)構(gòu)體、枚舉及共用體 / 23414.1 結(jié)構(gòu)體 / 23514.1.1 結(jié)構(gòu)體定義 / 23514.1.2 結(jié)構(gòu)體變量 / 23714.1.3 結(jié)構(gòu)體數(shù)組 / 24214.1.4 結(jié)構(gòu)體指針 / 245【任務(wù)1】完成教務(wù)系統(tǒng)成績(jī)排名 / 24714.2 枚舉 / 24914.2.1 枚舉簡(jiǎn)介 / 24914.2.2 枚舉類型的定義 / 24914.2.3 枚舉變量的聲明 / 24914.2.4 枚舉變量的使用 / 250【任務(wù)2】學(xué)生認(rèn)證考試結(jié)果狀態(tài)管理 / 25114.3 共用體 / 252【任務(wù)3】完成教務(wù)系統(tǒng)教師和學(xué)生信息管理 / 254智慧之光 / 258小結(jié) / 258作業(yè) / 258單元15 位運(yùn)算 / 25915.1 進(jìn)制與進(jìn)制之間的轉(zhuǎn)換 / 26115.1.1 進(jìn)制簡(jiǎn)介 / 26115.1.2 常用的幾種進(jìn)制 / 26115.1.3 進(jìn)制之間的轉(zhuǎn)換 / 26315.1.4 二進(jìn)制的算術(shù)運(yùn)算的特點(diǎn) / 26415.1.5 原碼、反碼、補(bǔ)碼 / 265【任務(wù)1】實(shí)現(xiàn)十進(jìn)制轉(zhuǎn)換為二進(jìn)制 / 26615.2 按位與和按位或運(yùn)算 / 26815.2.1 位運(yùn)算簡(jiǎn)介 / 26815.2.2 按位與運(yùn)算 / 26815.2.3 按位或運(yùn)算 / 269【任務(wù)2】編寫函數(shù)檢查一個(gè)數(shù)是否是2 的次冪 / 26915.3 按位異或和按位取反運(yùn)算 / 27015.3.1 按位異或運(yùn)算 / 27015.3.2 按位取反運(yùn)算 / 271【任務(wù)3】設(shè)計(jì)一套帶密鑰的加密算法 / 27115.4 左移和右移運(yùn)算 / 27315.4.1 左移運(yùn)算 / 27315.4.2 右移運(yùn)算 / 273【任務(wù)4】計(jì)算一個(gè)整數(shù)的二進(jìn)制表示中1 的個(gè)數(shù) / 27415.5 置位和清零 / 27515.5.1 置位運(yùn)算 / 27515.5.2 清零運(yùn)算 / 275【任務(wù)5】完成權(quán)限管理 / 275智慧之光 / 278小結(jié) / 279作業(yè) / 279附錄A ASCII 字符集 / 280附錄B 常用的庫(kù)函數(shù) / 282