這個作業屬於哪個課程 | C語言程序設計 |
---|---|
這個作業要求在哪里 | 作業要求 |
這個作業的目標 | 回顧數據類型和表達式,學習文件操作 |
學號 | 20208988 |
2.1 題目:給定一個十進制正整數N,寫下從1開始,到N的所有整數,然后數一下其中出現的所有“1”的個數。
例如:
N=2,寫下1,2。這樣只出現了1個”1“。
N=12,我們會寫下1,2,3,4,5,6,7,8,9,10,11,12。這樣,1的個數是5。
問題是:
1.寫出一個函數f(N),返回1到N之間出現的”1“的個數,比如f(12)=5;
2.滿足條件”f(N)=N“的最大的N是多少?
1.貼出代碼圖片,寫出解題思路,列出測試數據(5分)
解題思路:暴力求解,遍歷1到N。
2.給出不同測試數據的運算時間,如果你的運算時間不變,說明你的測試數據不夠大(5分)
3.思考針對足夠大的數據,如何減少運算時間,並給出在原有算法基礎上的改進算法和改進思路。(10分)
改進思路:改變循環條件,減少遍歷的個數。
改進算法:遍歷時,若循環變量i只有個位數為1,其他各個位均不等於1,則i直接加8再自增,減少循環次數。
2.2 將上題中多組測試數據寫入文件,並給出測試程序以檢測你的代碼有沒有問題,貼出你的代碼、運行結果和文件內容。(5分)
2.3 用自己的語言回答兩個問題,並給出所查閱資料的引用(10分)
1.什么是文件緩沖系統?工作原理如何?
ANSIC 標准采用“緩沖文件系統”處理的數據文件的,所謂緩沖文件系統是指系統自動地在內存中為程序中每一個正在
使用的文件開辟一塊“文件緩沖區”。從內存向磁盤輸出數據會先送到內存中的緩沖區,裝滿緩沖區后才一起送到磁盤
上。如果從磁盤向計算機讀入數據,則從磁盤文件中讀取數據輸入到內存緩沖區(充滿緩沖區),然后再從緩沖區逐
個地將數據送到程序數據區(程序變量等)。緩沖區的大小根據C編譯系統決定。
2.什么是文本文件和二進制文件?
根據數據的組織形式,數據文件被稱為文本文件或者二進制文件。
數據在內存中以二進制的形式存儲,如果不加轉換的輸出到外存,就是二進制文件。
如果要求在外存上以ASCII碼的形式存儲,則需要在存儲前轉換。以ASCII字符的形式存儲的文件就是文本文件。
2.4 請給出本周學習總結(15分)
1 學習進度條(5分)
2 累積代碼行和博客字數(5分)
3 學習內容總結和感悟(5分)
1.回顧上學期所學。
2.了解文本操作。
3.花費大量的時間學習理論知識,是學好C語言的基礎。
4.大量實踐是融會貫通的必要條件。
5.教能更好的發現自己的問題,也能加深理解