內容介紹 | |
![](http://img3m7.ddimg.cn/25/20/29225617-1_u_3.jpg)
開本:16開 紙張:膠版紙 包裝:平裝-膠訂 是否套裝:否 國際標準書號ISBN:9787512434554 作者:李輝勇,孫青,宋友 出版社:北京航空航天大學出版社 出版時間:2021年04月 
" 編輯推薦 ![](http://img54.ddimg.cn/99999990277281134.jpg)
書中示例和題集豐富且具代表性,便於學生自學用。本書為讀者免費提供書中示例和題集的程序源代碼,請掃描本頁“北航科技”的二維碼→關注“北航科技圖書”公眾號→回復“3455”,獲得百度網盤的下載鏈接。 內容簡介 C語言程序設計作為一門實踐性很強的基礎課程,在培養學生計算思維能力方面具有重要作用。本書面向程序設計初學者,以強化計算思維表達能力培養為目標,提高學生解決實際問題的邏輯思維能力。內容彙集了北京航空航天大學“程序設計基礎訓練”和“C語言程序設計”課程組多年實踐教學的程序設計訓練題集與題解分析,難度由淺入深、循序漸進。知識點覆蓋了C語言編程環境與基本方法、基本數據處理、結構化編程、函數及其應用、數組與字符串及應用、指針及其應用、結構與聯合以及I/O和文件操作等,集知識性、趣味性於一體。此外,在北京航空航天大學OnlineJudge(OJ)編程平臺開設了程序設計訓練專版(https://accoding.cn/index),便於使用本書的讀者實踐練習。
本書可作為計算機、軟件等信息類專業程序設計實踐環節的基礎教材,也可以作為非信息類專業學生和程序設計愛好者的程序設計入門及提高訓練教材。 作者簡介 李輝勇,博士,碩士研究生導師。2015年於北京航空航天大學計算機學院獲得工學博士學位。2015年起就職於北京航空航天大學計算機學院。作為主講教師承擔本科生的《程序設計基礎訓練》、《C語言程序設計》、《計算機組成原理實驗》、《嵌入式繫統設計實訓》和《大數據與人工智能實訓》以及研究生的《大數據處理與機器學習算法實訓》等課程。作為課題負責人主持在研課題包括國家自然科學基金、科技創新基金重點項目、軟件開發環境國家重點實驗室自主研究課題以及多項橫向課題。同時作為主要成員參與國家重點研發計劃、國家自然科學基金等課題,部分科研成果已被成果應用信息化建設。在國內外期刊和會議發表論文10餘篇。主要研究方向:智能感知與移動計算、智能硬件、嵌入式並行處理技術等。 目錄 第1章C語言編程環境與基本方法1 1.1C語言程序的基本概念及組成1 1.2常用IDE介紹2 1.3C語言編程的幾個基本步驟6 1.4C語言編程的常見錯誤6 1.5C語言程序調試簡介8 第2章基本數據處理10 2.1本章重難點回顧10 2.1.1基本輸入及格式化輸出10 2.1.2數據類型轉換12 2.1.3const與#define13 2.2精編實訓題集14 題21簡單字符(串)輸出:顏文字表情圖案繪制14 題22簡單字符(串)輸出:轉義符應用14第1章C語言編程環境與基本方法1
1.1C語言程序的基本概念及組成1
1.2常用IDE介紹2
1.3C語言編程的幾個基本步驟6
1.4C語言編程的常見錯誤6
1.5C語言程序調試簡介8
第2章基本數據處理10
2.1本章重難點回顧10
2.1.1基本輸入及格式化輸出10
2.1.2數據類型轉換12
2.1.3const與#define13
2.2精編實訓題集14
題21簡單字符(串)輸出:顏文字表情圖案繪制14
題22簡單字符(串)輸出:轉義符應用14
題23基本輸入輸出及運算:數的向上取整14
題24基本輸入輸出及運算:計算預期收益14
題25基本輸入輸出及運算:計算平均值14
題26基本輸入輸出及運算:計算圓柱體表面積15
題27模運算:簡單取模操作15
題28模運算:數的按位拆分15
題29模運算:數位翻轉15
題210模運算:學號識別碼16
題211模運算:隊列找字母16
題212模運算:火仙草數16
題213數據類型轉換:分數轉小數16
題214位運算:AopBProblem17
2.3題集解析與參考程序17
2.4本章小結23
第3章結構化編程24
3.1本章重難點回顧25
3.1.1邏輯表達式25
3.1.2條件語句常見問題25
3.1.3計數器控制循環27
3.1.4標志控制循環28
3.1.5break和continue語句30
3.2精編實訓題集31
題31邏輯表達式的妙用:名次預測31
題32單分支選擇結構:尋找第二小數31
題33單分支選擇結構:重逢時刻31
題34單分支選擇結構:方程求解32
題35雙分支選擇結構:直線與圓32
題36雙分支選擇結構:溫度轉換32
題37雙分支選擇結構:統計階乘的尾數033
題38雙分支選擇結構:字符大小寫轉換33
題39多分支條件語句:求解分段函數33
題310多分支條件語句:窗口的嵌套34
題311多路選擇的switch語句:簡單計算器35
題312選擇結構的嵌套:交換生條件審核35
題313選擇結構的嵌套:觀影計劃35
題314多路分支選擇結構:方向判斷36
題315while循環(計數器控制):判斷2的冪次數36
題316while循環(標志控制):破譯密碼36
題317dowhile循環(標志控制):士兵站隊37
題318for循環(計數器控制):日歷計算37
題319for循環(計數器控制):求數列的一項38
題320for循環:理財計劃38
題321循環嵌套:尋找完數39
題322循環嵌套:尋找質因數39
題323循環嵌套:等式填空39
題324循環嵌套:短正整數序列40
3.3題集解析及參考程序40
3.4本章小結57
第4章函數及其應用58
4.1本章重難點回顧59
4.1.1遞歸思想59
4.1.2變量的作用域60
4.2精編實訓題集62
題41定義與調用函數:三角形的判斷62
題42定義與調用函數:猜素數62
題43定義與調用函數:cos(x)級數展開式63
題44定義與調用函數:分數相加與化簡63
題45定義與調用函數:星期幾63
題46定義與調用函數:求未遮擋面積63
題47全局變量的使用:熊貓序列64
題48標準庫函數的使用:模擬投骰子64
題49標準庫函數的應用:求極坐標65
題410標準庫函數的應用:求面積65
題411遞歸函數:倒序輸出66
題412遞歸函數:整數劃分66
題413遞歸函數:遞歸漢諾塔67
題414遞歸函數:走迷宮67
題415遞歸函數:Ackermann函數67
題416遞歸函數:送快遞68
題417遞歸函數:二分法解方程68
4.3題集解析及參考程序68
4.4本章小結86
第5章數組與字符串及應用87
5.1本章重難點回顧88
5.1.1字符串和字符數組88
5.1.2二維數組90
5.2精編實訓題集92
題51一維數組應用:進制轉換92
題52一維數組應用:阿狄的冒險92
題53一維數組應用:萌身高差93
題54一維數組應用:賣口罩93
題55一維數組應用:成績平均分94
題56一維數組應用:狐狸捉兔子94
題57一維數組應用:子序列95
題58一維數組應用:孤獨的數95
題59一維數組應用:數組漂移95
題510一維數組應用:統計質數96
題511一維數組應用:火柴拼圖96
題512一維數組應用:約瑟夫問題96
題513一維數組應用:求蓄水量97
題514一維數組素查找97
題515一維數組應用:值排序問題98
題516一維數組應用:集合的加法98
題517一維數組應用:首個出現三次的字母98
題518一維數組應用:字符統計99
題519字符串和字符數組:分子量99
題520字符串和字符數組:字符統計99
題521字符串和字符數組:字符串匹配100
題522字符串和字符數組:字符串糾錯100
題523字符串和字符數組:簡寫字符串的擴展101
題524字符串和字符數組:Excel表的列號101
題525字符串和字符數組:求相反數101
題526二維數組應用:卷積計算102
題527二維數組應用:蛇形矩陣102
題528二維數組應用:遊戲教學103
5.3題集解析及參考程序104
5.4本章小結131
第6章指針及其應用132
6.1本章重難點回顧133
6.1.1指針與數組133
6.1.2常見問題133
6.2精編實訓題集134
題61作為函數參數的指針:成績統計134
題62作為函數參數的指針:矩陣變換135
題63作為函數參數的指針:整數求和136
題64作為函數參數的指針:法解方程136
題65作為函數參數的指針:單詞排序136
題66指向一維數組的指針:字符串替換137
題67指向一維數組的指針:子串逆置137
題68指向一維數組的指針:數的互逆137
題69指針數組的應用:計算並輸出月份138
題610指針數組的應用:單詞集合138
題611指針數組的應用:更遙遠的星期幾139
題612指針數組的應用:輸出文章內容139
題613函數指針實例:有趣的排序問題139
題614函數指針實例:求眾數139
題615函數指針實例:比賽排行榜140
題616函數指針實例:田忌賽馬141
題617函數指針實例:求凸多邊形面積141
6.3題集解析及參考程序141
6.4本章小結165
第7章結構與聯合166
7.1本章難點回顧166
7.1.1結構數組與二維表的對應關繫166
7.1.2單向鏈表167
7.1.3類型定義語句170
7.2精編實訓題集171
題71結構應用:工作DDL171
題72結構應用:數據編碼問題171
題73結構應用:按要求選擇鋼管172
題74結構應用:OJratings172
題75結構應用:尋找愛好相同的人173
題76結構應用:輔導員的生日推送173
題77鏈表應用:再解約瑟夫問題174
題78結構聯合應用:數據表排序174
7.3題集解析及參考程序175
7.4本章小結185
第8章I/O和文件操作186
8.1本章重難點回顧186
8.1.1二進制文件操作186
8.1.2正文文件操作188
8.1.3文件讀寫操作中的定位189
8.1.4標準輸入輸出的重新定向191
8.2精編實訓題集192
題81標準文件操作的I/O函數:分析日期和時間192
題82標準文件操作的I/O函數:由參數確定輸出的小數位數192
題83指定文件的讀寫函數:字符輸入輸出192
題84指定文件的讀寫函數:讀文本內容並顯示193
題85指定文件的讀寫函數:文件復制193
題86指定文件的讀寫函數:成績表格193
題87指定文件的讀寫函數:格式化輸入輸出193
題88文件讀寫函數的使用:日程列表193
題89讀寫操作的定位:求文件長度193
題810讀寫操作的定位:字符統計193
題811讀寫操作的定位:文件倒置輸出193
8.3題集解析及參考程序193
8.4本章小結199
第9章C語言程序設計綜合訓練200
9.1程序設計基本方法200
9.1.1程序設計基本過程200
9.1.2程序性能分析202
9.1.2程序中的錯誤處理205
9.1.3程序的測試205
9.2精編實訓題集206
題91查找指定大小數值206
題92位圖206
題93時間轉換問題207
題94切割木棍207
題95長子序列208
題96簡化比例208
題97組合購物208
題98數的奇偶分解209
題99序列等式209
題910下一個序列209
題911圖片光滑處理210
題912排隊接水210
題913公共前綴搜索211
9.3題集解析及參考程序211
9.4本章小結223
參考文獻224 前言 在面向新工科的人纔培養改革中,要求高等教育培養的人纔具備工程思維、設計思維和數字思維的繫統性計算思維能力,具備融合學科交叉知識解決復雜工程問題的實踐能力。在這樣的人纔培養要求下,程序設計課程不僅僅是計算機、軟件工程等信息類專業的必修基礎課,也必將成為所有工科專業的基礎課程,它的重要性甚至將與數學、物理等傳統的基礎課程相當。通過學習程序設計課程,培養學生的計算思維;在深入理解計算機相關專業知識的基礎上,培養學生解決復雜工程問題的能力,這在面向滿足社會需要和適應智能化技術發展的人纔培養方面具有重要意義。 C語言程序設計作為一門實踐性很強的程序設計基礎課程,在培養學生計算思維能力方面具有重要作用。因此,編寫一本側重培養學生計算思維,以程序設計實踐為主的程序設計類實訓教程對於培養適應工業化、信息化、智能化的新形勢專業人纔尤為重要。本書力求充分結合程序設計課實踐性非常強的特性,以強化計算思維表達能力和良好的代碼書寫習慣培養為目標,突出計算思維訓練,提高學生解決實際問題的邏輯思維能力。本書內容彙集了北京航空航天大學“程序設計基礎訓練”和“C語言程序設計”課程組多年的實踐教學內容,實訓題目由淺入深、循序漸進,有一定的覆蓋面,集知識性、趣味性於一體。本書可以作為計算機、軟件等信息類專業程序設計實踐環節的基礎教材,為後續“數據結構”“算法分析與設計”等課程的學習奠定基礎;也可以作為非信息類專業學生和程序設計愛好者的程序設計入門與提高訓練教材。在面向新工科的人纔培養改革中,要求高等教育培養的人纔具備工程思維、設計思維和數字思維的繫統性計算思維能力,具備融合學科交叉知識解決復雜工程問題的實踐能力。在這樣的人纔培養要求下,程序設計課程不僅僅是計算機、軟件工程等信息類專業的必修基礎課,也必將成為所有工科專業的基礎課程,它的重要性甚至將與數學、物理等傳統的基礎課程相當。通過學習程序設計課程,培養學生的計算思維;在深入理解計算機相關專業知識的基礎上,培養學生解決復雜工程問題的能力,這在面向滿足社會需要和適應智能化技術發展的人纔培養方面具有重要意義。
C語言程序設計作為一門實踐性很強的程序設計基礎課程,在培養學生計算思維能力方面具有重要作用。因此,編寫一本側重培養學生計算思維,以程序設計實踐為主的程序設計類實訓教程對於培養適應工業化、信息化、智能化的新形勢專業人纔尤為重要。本書力求充分結合程序設計課實踐性非常強的特性,以強化計算思維表達能力和良好的代碼書寫習慣培養為目標,突出計算思維訓練,提高學生解決實際問題的邏輯思維能力。本書內容彙集了北京航空航天大學“程序設計基礎訓練”和“C語言程序設計”課程組多年的實踐教學內容,實訓題目由淺入深、循序漸進,有一定的覆蓋面,集知識性、趣味性於一體。本書可以作為計算機、軟件等信息類專業程序設計實踐環節的基礎教材,為後續“數據結構”“算法分析與設計”等課程的學習奠定基礎;也可以作為非信息類專業學生和程序設計愛好者的程序設計入門與提高訓練教材。
本書力求培養學生兩方面的能力,一方面是培養學生掌握C語言的基本概念、各種數據類型、輸入輸出、控制結構、函數、數組、指針、文件等語法及語義基礎的能力;另一方面是通過程序設計訓練,培養學生分析問題、解決問題的能力。幫助學生了解結構化程序設計思想,學習程序設計方法、技巧、風格,從而提升學生程序設計能力,養成良好的編程習慣,獲得良好的程序設計學習起點,為後續學習專業理論和專業高級應用課程提供必要的計算思維和程序設計能力,為專業領域的創新活動奠定堅實的基礎。
本教程共9章。第1章主要介紹C語言編程環境和基礎的程序設計流程,是程序設計的基礎;第2~8章包括C語言的核心知識點及其程序設計要點,每一章主要由本章重難點回顧、精編實訓題集、題集解析與參考程序和本章小結組成。其中,本章重難點回顧以知識結構圖的形式直觀地展現了本章重難點內容,讓讀者一目了然地看清本章知識點以及各知識點間的關聯,並針對本章的重點難點知識進行解析,同時總結常見問題。實訓題集是每章的主要內容,每一個上機題目都是課程組精心編寫、集知識性和趣味性於一體的小案例,可有效提高讀者的編程興趣。題集解析與參考程序包括解題思路與參考例程。第9章是綜合訓練,重在訓練和培養學生分析問題和解決問題的綜合能力。本書共精選140餘道編程題目,基本涵蓋了典型的C語言程序設計基礎知識點和要點,熟練掌握並靈活運用這些例程,對編程基礎能力訓練將有很大幫助。
本書的主要特色之一是基於自主開發的北京航空航天大學OnlineJudge(OJ)繫統(https://accoding.cn/index)開設了程序設計訓練專版,覆蓋了本書所有題目及其擴展題目,方便使用本書的教師和學生實踐練習。此外,OJ上包括了更豐富的課程(包含Python、C語言程序設計,數據結構,算法分析與設計等),題庫中包括的題目數量更加豐富,遠超本書的範圍,涉及的知識面也更加廣闊,難度分布也很寬。讀者在進行本教程的訓練時,可根據需要選擇相應的課程,完成更高級的編程訓練和挑戰。
本書是筆者所在的教學團隊在程序設計類課程多年實踐教學工作基礎上的一個總結。主要編寫人員有:李輝勇、孫青、宋友,課題組任課老師榮欣、劉禹、肖文磊、王君臣、方寧、路新喜、譚火彬、李瑩、任磊、宋曉、陳高翔、李可、鄧志誠、樊江、張勇和謝鳳英,以及歷屆課程助教都參與了本書題目的設計、題解編寫、例程測試等工作,沒有大家的付出,無法完成本書的編寫。在此謹表示誠摯的謝意。
受限於筆者之能力,加之時間倉促,書中難免存在一些不足和錯誤之處,懇請讀者批評指正,使之完善提高。
筆者
2020年10月於北京 | | |