C語言II博客做業01

這個做業屬於哪一個課程 https://edu.cnblogs.com/campus/zswxy/CST2020-2
這個做業要求在哪裏 https://edu.cnblogs.com/campus/zswxy/CST2020-2/homework/11757
這個做業的目標 <回顧上學期知識>
學號 <20208978>

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是多少?code

要求:
1.貼出代碼圖片,寫出解題思路,列出測試數據(5分)

解題思路:
遍歷1~N,統計每一個數1出現的個數,相加便獲得全部1的個數。blog

N的值 1的個數
1 1
12 5
100 21
1000 301

2.給出不一樣測試數據的運算時間,若是你的運算時間不變,說明你的測試數據不夠大(5分)
圖片

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

雖然這個方法看似簡單可是計算量比較大若是N的值比較大那麼運算的時間就太長了,第二種方法經過N在不一樣位數都有規律
從而改進,減小了計算量。N是個位數時,N >=1,那麼f(N)= 1;N = 0,f(N)= 0若是要計算百位上1出現的次數,它要
受到3方面的影響:百位上的數字,百位一下(低位)上的數字,百位一上(高位)上的數字。若是百位上數字爲0,百位上可
能出現1的次數由更高位決定若是百位上數字爲1,百位上可能出現1的次數不只受更高位影響還受低位影響。若是百位上數字大
於1(2~9),則百位上出現1的狀況僅由更高位決定,

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




2.3 用本身的語言回答兩個問題,並給出所查閱資料的引用(10分)

1.什麼是文件緩衝系統?工做原理如何?

文件緩衝區即系統在讀寫程序時在內存中開闢的數據源與數據目標中間的一個用於保存完整數據內容的緩衝區域。
目前C語言使用的文件系統分爲緩衝文件系統(標準I/O)和非緩衝文件系統(系統I/O)。緩衝文件系統的特色是:
在內存開闢一個「緩衝區」,爲程序中的每個文件使用,當執行讀文件的操做時,從磁盤文件將數據先讀入內存「緩
衝區」,裝滿後再從內存「緩衝區」依此讀入接收的變量。執行寫文件的操做時,先將數據寫入內存「緩衝區」,待內存
「緩衝區」裝滿後再寫入文件。所以當程序運行時雖然進行了寫數據操做,可是若是寫入的數據沒有裝滿內存中的緩衝區,
就不會將數據寫入到磁盤文件中。當程序運行結束後,系統就會將緩衝區中的數據寫入到磁盤上的文件中,所以就能夠
看到文件中的內容。

2.什麼是文本文件和二進制文件?

1,二進制文件是把內存中的數據按其在內存中的存儲形式原樣輸出到磁盤上存放,也就是說存放的是數據的原形式。

二、文本文件是把數據的終端形式的二進制數據輸出到磁盤上存放,也就是說存放的是數據的終端形式。

2.4 請給出本週學習總結(15分)

1 學習進度條(5分)

周/時間 所花時間 代碼行數 所學知識簡介 目前比較迷茫的問題
第一週 15小時 500 瞭解文件操做 沒講太多目前還沒啥問題

2 累積代碼行和博客字數(5分)

3 學習內容總結和感悟(5分)

1,新的一學期要有新的計劃,要總結上學期的不足,在這學期每次做業要認真完成。
不只只完成老師佈置的任務,還要本身選擇性的學習。勤加練習,多學,多問,多作,
2,其實對編程仍是挺感興趣的,每次作完一個題的成就感,和作題時的思考的感受其實
都挺好的,挺充實的、
相關文章
相關標籤/搜索