C語言II博客作業01


這個作業屬於哪個課程 https://edu.cnblogs.com/campus/zswxy/CST2020-2
這個作業要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2020-2/homework/11757
這個作業的目標 <第6章 回顧數據類型和表達式,第12章 文件>
學號 <20208981>

二、本周作業(總分:50分)

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的每個數的個位逐個取余,讀取1的個數;在讀取的同時,判斷“f(n)==n”,不斷覆蓋數據,最后獲得最大的

測試數據:
輸入 1的個數 N
9 1 1
19 12 1
999 300 1
99999 50000 1

2.給出不同測試數據的運算時間,如果你的運算時間不變,說明你的測試數據不夠大(5分)

3.思考針對足夠大的數據,如何減少運算時間,並給出在原有算法基礎上的改進算法和改進思路。

改進算法:開始使用的嵌套函數,使用兩個函數分別用於讀取1的個數和判斷“f(n)==n”,改進算法后,使用一個函數(如上),減少了運算時間
改進思路:對最大的數據不同位數進行分析;

<1> 1位數情況:

可以直接觀察,可以發現,N是個位數時,N >=1,那么f(N)= 1;N = 0,f(N)= 0;

<2> 2位數情況:

個位和十位的數字上都可能有1,我們可以將它們分開來考慮,個位出現1的次數有兩次,十位出現1的次數有4次

<3> 3位數情況:

個位出現1的個數為13,十位出現1的個數為20,百位出現1的個數為24;
。。。依次分析更高位數,詳情見參考文獻:https://blog.csdn.net/sjf0115/article/details/8600599

2.2 將上題中多組測試數據寫入文件,並給出測試程序以檢測你的代碼有沒有問題,貼出你的代碼、運行結果和文件內容。


2.3 用自己的語言回答兩個問題,並給出所查閱資料的引用

1.什么是文件緩沖系統?工作原理如何?

1.目前C 語言所使用的磁盤文件系統有兩大類:一類稱為緩沖文件系統,又稱為標准文
件系統;另一類稱為非緩沖文件系統。
緩沖文件系統的特點是:系統自動地在內存區為每一個正在使用的文件開辟一個緩沖
區。從磁盤向內存讀入數據時,則一次從磁盤文件將一些數據輸入到內存緩沖區(充滿緩
沖區),然后再從緩沖區逐個地將數據送給接收變量;向磁盤文件輸出數據時,先將數據
送到內存中的緩沖區,裝滿緩沖區后才一起送到磁盤去。用緩沖區可以一次讀入一批數據,
或輸出一批數據,而不是執行一次輸入或輸出函數就去訪問一次磁盤,這樣做的目的是減
少對磁盤的實際讀寫次數,因為每一次讀寫都要移動磁頭並尋找磁道扇區,花費一定的時
間。緩沖區的大小由各個具體的C 版本確定,一般為512 字節。
https://blog.csdn.net/wxqian25/article/details/8744277)
2.緩存是指地址在離開處理器后遇到的第一級存儲器層次結構。一般來說下,緩存是位於
處理器和主存之間的存儲器,材質為SRAM,其性能介於寄存器和主存DRAM之間。
https://zhuanlan.zhihu.com/p/73165359)
2.什么是文本文件和二進制文件?
1)文本文件:這類文件以文本的ASCII碼形式存儲在計算機中。它是以"行"為基本結構的
一種信息組織和存儲方式。
2)二進制文件:這類文件以文本的二進制形式存儲在計算機中,用戶一般不能直接讀懂它
們,只有通過相應的軟件才能將其顯示出來。二進制文件一般是可執行程序、圖形、圖像、
聲音等等。
https://www.cnblogs.com/pengwangguoyh/articles/3223072.html)

2.4 請給出本周學習總結

1 學習進度條

周/日期 這周所花的時間 代碼行 學到的知識點簡介 目前比較迷惑的問題
第一周 18h 168 文件的使用 對指針不了解

2 累積代碼行和博客字數

3 學習內容總結和感悟

1.學習了文件的使用,可以存儲一個復雜的數據結構,而不需要向fscanf()一樣,寫多個轉義類型
2.對於C語言的學習還需要更多的主動性,多多刷題
3.對於不懂的知識積極的去探索,多去百度


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM