這個作業屬於哪個課程 | https://edu.cnblogs.com/campus/zswxy/CST2020-2/ |
---|---|
這個作業要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-2/homework/11757 |
這個作業的目標 | <回顧數據類型和表達式,學習文件操作> |
學號 | <20208962> |
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.貼出代碼圖片,寫出解題思路,列出測試數據
解題思路:
遍歷1到N,逐個取個位數的余數,獲取1的個數,並且不斷覆蓋N的值
輸入 | 輸出 | N |
---|---|---|
9 | 1 | 1 |
999 | 300 | 1 |
2.給出不同測試數據的運算時間,如果你的運算時間不變,說明你的測試數據不夠大
3.思考針對足夠大的數據,如何減少運算時間,並給出在原有算法基礎上的改進算法和改進思路
改進思路:從網上找的資料,針對不同位數進行分析,
一位數,容易看出只有一個1
二位數,需要注意11,它的百位和個位都是1
更高位數參考文獻:https://blog.csdn.net/sjf0115/article/details/8600599
2.2 將上題中多組測試數據寫入文件,並給出測試程序以檢測你的代碼有沒有問題,貼出你的代碼、運行結果和文件內容
2.3 用自己的語言回答兩個問題,並給出所查閱資料的引用
1.什么是文件緩沖系統?工作原理如何?
緩沖文件系統的特點是系統自動地在內存區為每一個正在使用的文件開辟一個緩沖區。從磁盤向內存讀入數據時,則一次從磁盤文件將一些數據輸入到內存緩沖區(充滿緩沖區),然后再從緩沖區逐個地將數據送給接收變量;向磁盤文件輸出數據時,先將數據送到內存中的緩沖區,裝滿緩沖區后才一起送到磁盤去。
文件緩沖系統:系統自動地在內存區為每一個正在使用的文件開辟一個緩沖區。從磁盤向內存讀入數據時,則一次從磁盤文件將一些數據輸入到內存緩沖區(充滿緩沖區),然后再從緩沖區逐個地將數據送給接收變量。(https://blog.csdn.net/icemelody5316/article/details/39783985)
工作原理:從內存向磁盤輸出數據先送到內存中的緩沖區,裝滿緩沖區后一起送到磁盤,如果沒有裝滿內存中的緩沖區,就不會把數據寫入到磁盤文件中。這樣做會減少對磁盤的實際讀寫次數,上。緩沖區的大小由各個具體的C 版本確定,一般為512 字節。
2.什么是文本文件和二進制文件?
文本文件:是一種計算機文件,一種典型的順序文件,以ASCII碼方式(也稱文本方式)存儲的文件,存放的是數據的終端形式。
二進制文件:是基於值編碼的文件,可以根據具體應用,指定某個值是什么意思,存放的是數據的原形式。
1 學習進度條
周/日期 | 所花時間 | 學到的知識 | 目前不懂的問題 |
---|---|---|---|
第一周 | 10h | 文件操作 | 代碼優化的時間 |
2 累積代碼行和博客字數
3 學習內容總結和感悟
1.本周的學習內容沒有老師的詳細講解,布置的作業難度非常大,感覺無從下手
2.越來越認識到提前學習的重要性,有些同學因為自己的提前學習而對這次作業得心應手。
3.涉及的未知領域越來越多,如果不自己去了解根本看不懂
4.應該多去學習並自己練習,累計熟練度和經驗