這個作業屬於哪個課程 | https://edu.cnblogs.com/campus/zswxy/CST2020-2 |
---|---|
這個作業要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-2/homework/11757 |
這個作業的目標 | 回顧數據類型和表達式,學會文件存儲 |
學號 | <20208969> |
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分)
滿足條件”f(N)=N“的最大的N是多少?
解題思路:運用已學的for循環設定循環次數用if條件取余計算1到N的個數。
輸入數據 | 輸出數據 |
---|---|
12 | 5 |
100 | 21 |
1000 | 301 |
10000 | 4001 |
100000 | 50001 |
1000000 | 600001 |
10000000 | 7000001 |
100000000 | 80000001 |
2.給出不同測試數據的運算時間,如果你的運算時間不變,說明你的測試數據不夠大(5分)
輸入數據 | 輸出數據 | 運算時間 |
---|---|---|
12 | 5 | 0.9717s |
100 | 21 | 0.9915s |
1000 | 301 | 1.068s |
10000 | 4001 | 1.322s |
100000 | 50001 | 1.128s |
1000000 | 600001 | 1.256s |
10000000 | 7000001 | 2.078s |
100000000 | 8000001 | 6.639s |
2.2 將上題中多組測試數據寫入文件,並給出測試程序以檢測你的代碼有沒有問題,貼出你的代碼、運行結果和文件內容。(5分)
2.3 用自己的語言回答兩個問題,並給出所查閱資料的引用(10分)
1.什么是文件緩沖系統?工作原理如何?
**文件緩沖系統:**在進行文件操作時,系統自動為每一個文件分配一塊文件內存緩沖區(內存單元),C程序對文件的所有操作就通過對文件緩沖區的操作來完成。當程序要向磁盤文件寫人數據時,先把數據存人緩沖區,然后再由操作系統把緩沖區的數據真正存人磁盤。若要從文件讀入數據到內存,先由操作系統把數據寫人緩沖區,然后程序把數據從緩沖區讀人到內存1對於非緩沖文件系統,文件緩沖區不是由系統自動分配,而需要編程者在程序中用C語句實現分配。標准ANSI C中規定采用緩沖文件系統。
**工作原理:**程序要操作磁盤文件的數據,必須要借助緩沖區。緩沖文件系統規定磁盤與內存緩沖區之間的交互由操作系統自動完成。程序要處理數據,只需要跟內存緩沖區打交道即可。
2.什么是文本文件和二進制文件?
**文本文件:**文本文件是以字符ASCI碼值進行存儲與編碼的文件,其文件的內容就是字符。C語言源程序是文本文件,其內容完全由ASCII碼構成,通過“記事本”等編輯工具可以對文件內容進行查看、修改等。從文件的邏輯結構上看,C語言把文件看作數據流,並將數據按順序以一維方式組織存儲,它的表現形式非常像錄音磁帶,在帶足夠長的前提下,錄音長短可以任意,錄音和放音過程是順序進行的。這正好與數據文件的動態存取和操作順序一致。根據數據存儲的形式,文件的數據流又分為字符流和二進制流,字符流稱為文本文件( 或字符文件),二進制流稱為二進制文件。
**二進制文本:**二進制文件是存儲二進制數據的文件。C程序的目標文件和可執行文件是二進制文件,它包含的是計算機才能識別的機器代碼,如果也用編輯工具打開,將會看到稀奇古怪的符號,即通常所說的亂碼。例如對於整數1234, 如果存放到文本文件中,文件內容將包含4個字節: 49、 50、51、52,它們分別是'1'、'2'、'3'、'4 '的ASCII碼值;如果把整數1234存放到二進制文件中去,文件內容將為1234對應的二進制數0x04D2,共兩個字節。
所查閱資料為《C語言程序設計》及百度百科。
2.4 請給出本周學習總結(15分)
1 學習進度條(5分)
2 累積代碼行和博客字數(5分)
3 學習內容總結和感悟(5分)
1.需要多加練習,很多學習內容經過假期的洗刷有了一種熟悉的陌生感。希望自己調整好狀態,積極地投入到學習中。
2.開學的第一堂專業課就感到學習難度升級了,學習內容更多了,需要多回顧上學期的視頻,並多看書多理解。
3.新的學期又開始了,需要多做准備了。