- 數據結構案例教程(C/C++版)
- 于泠 陳波編著
- 1287字
- 2020-10-23 14:23:39
導學問題1:問題中的數據在計算機中如何組織?
【問題1描述】
(1-1)計算某位同學的高等數學、英語及計算機導論3門課程的總分。
(1-2)已知一個班級20名學生的高等數學成績,求全班該門課程的平均分。
(1-3)已知一個班級20名學生的高等數學、英語及計算機導論課程的成績,計算每位同學的總分以及全班3門課程各自的平均分。
(1-4)在問題1-3的基礎上,列出全班成績的排名(列出學號、姓名及分數),見表1-1。
表1-1 學生成績表

(續)

(1-5)假設一個U盤中有3個文件夾,每個文件夾中又有若干文件,如圖1-1所示。

圖1-1 U盤中的文件
請設計一種文件信息存儲方法,當輸入某個文件名稱后,顯示該文件在U盤中的存儲路徑,若U盤中無該文件,則顯示“文件未找到”。
(1-6)某城市中5個地標建筑間有多條道路相通,每條道路長度不同,如圖1-2所示。設計一個道路查詢系統,能讓游客查詢從任一個地標建筑到另一個地標建筑之間的最短路徑。

圖1-2 城市中地標建筑道路圖
【問題1分析】
用計算機解決實際問題時,首先要了解實際問題中需要處理的數據有哪些,在計算機中如何表達并存儲這些數據以及在這些存儲結構上如何對其進行所需的操作。
在問題1-1中,需要處理的數據是3個數值型成績,因此可定義3個普通整型變量用于存儲(考慮到考試成績均為整數),然后對這3個變量求和即可。請讀者在下面的空白框中嘗試用C語言寫出解決問題1-1的變量定義和求和操作相關語句。

在問題1-2中,需要處理的數據是20個數值型成績,因此可用C語言中的一維數組來存儲這些數據,對數組元素求和后再計算平均成績。請嘗試用C語言寫出解決問題1-2的一維數組定義和主要操作語句。

在問題1-3中,需要處理的數據是20名學生3門課程共60個數值型成績,可將這些數據表示成20行3列的形式,其中每行是各學生的成績,每列是各門課的成績,因此可用C語言中的二維數組來存儲這些數據,然后按行求和得到每位學生的總分,按列求和后再計算各門課程的平均分。請嘗試用C語言寫出問題1-3的二維數組定義和主要操作語句。

盡管問題1-4是在問題1-3的基礎上提出的,但需要處理的數據不僅是單純的數值成績,還有學號、姓名這樣的字符型數據。對于表1-1的操作不僅是簡單的數值求和等計算,還需要進行非數值運算——排序等操作。
考慮到每位學生的信息中包含不同的數據類型,C語言提供了結構體數組或鏈表等線性的形式來存儲并處理這些數據。請嘗試用C語言寫出問題1-4的結構體數組定義語句。

說明:書寫上述語句如有困難,請用手機掃描右側的二維碼查看參考語句。

問題1-5和1-6是更加復雜的問題,主要體現在以下兩個方面:
1)計算機處理的對象由數值發展到字符串、圖形、圖像等非數值數據,而且處理的數據量也越來越大。在程序設計時面對這樣的數據,需要解決如何表示這些數據間的結構關系,以及如何在計算機中存儲這些數據。
2)計算機處理的不再只是加、減、乘、除等數值計算,而是排序、信息可視化、求最短路徑等較為復雜的非數值計算。在程序設計時,需要解決如何在問題的數據上進行非數值計算等操作。
以上這些問題正是數據結構這門課程研究的內容。本章1. 1節將介紹數據結構課程的研究內容、數據結構的概念,1.2節將介紹導學問題中涉及的數據結構。
- Software Defined Networking with OpenFlow
- JavaScript全程指南
- TensorFlow Lite移動端深度學習
- 精通搜索分析
- 新編Premiere Pro CC從入門到精通
- Easy Web Development with WaveMaker
- 人人都是網站分析師:從分析師的視角理解網站和解讀數據
- Troubleshooting PostgreSQL
- Mastering Google App Engine
- C++編程兵書
- Arduino計算機視覺編程
- Instant Automapper
- Machine Learning for OpenCV
- UI設計基礎培訓教程(全彩版)
- Learning Jakarta Struts 1.2: a concise and practical tutorial