C語言I博客作業01


這個作業屬於哪個課程 https://edu.cnblogs.com/campus/zswxy/CST2020-2/
這個作業要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2020-2/homework/11757
這個作業的目標 回顧以往知識,學習文件表達
學號 20208961

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分)

問題一:


解題思路:運用for循環通過不斷累加將n——N范圍內的數依次傳遞給下一個語句,在使用while循環求出n-N范圍內位數唯一的個數。
測試數據:

N num 運算時間
12 5 1.240000

問題二:


解題思路:在問題一的基礎上,使輸入的數N為零,在賦給n一個較大的值在判斷num=n的情況。
測試數據:

max n 運算時間
1 1 1.38000

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

測試數據:

N num 運算時間
196 137 4.111000
28 13 3.358000
3 1 3.262000




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

對於大的數據,用int定義的話好像有點算不出來可以嘗試用long long int定義。算法的話可以嘗試看看這個比較容易懂。
假設 N=abcde,這里 a、b、c、d、e 分別是十進制數 N 的各個數位上的數字。如果要計算百位上出現 1 的次數,它將會受到三個因素的影響:百位上的數字,百位以下(低位)的數字,百
位(更高位)以上的數字。如果百位上的數字為 0,則可以知道,百位上可能出現 1 的次
數由更高位決定,比如 12 013,則可以知道百位出現 1 的情況可能
是 100~199,1 100~1 199,2 100~2 199,…,11 100~11 199,
一共有 1 200 個。也就是由更高位數字(12)決定,並且等於更高
位數字(12)×當前位數(100)。

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

代碼:


運行結果:

文件內容:




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

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

文件緩沖系統:系統會自動的在內存區為每一個正在使用的文件開辟一塊緩沖區,緩沖區的大小一般由各個C的版本規定,一般的為512Byte即0.5K大小。
工作原理:緩沖文件系統是借助文件結構體指針來對文件進行管理,通過文件指針來對文件進行訪問,既可以讀寫字符、字符串、格式化數據,也可以讀寫二進制數據,緩沖文件系統函數一般是由f開頭的函數,如fopen(),fwrite(),fread()。

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

文本文件:是一種計算機文件,它是一種典型的順序文件,其文件的邏輯結構又屬於流式文件。
二進制:包含在 ASCII及擴展 ASCII 字符中編寫的數據或程序指令的文件。計算機文件基本上分為二種:二進制文件和 ASCII(也稱純文本文件),圖形文件及文字處理程序等計算機程序都屬於二進制文件。

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

1 學習進度條(5分)

周/日期 這周所花時間 代碼行數 目前所迷惑的地方
第一周 30h 102 對於存入文件不太懂,對於求運算時間還不太懂

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

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

總結:

感悟:
在這一周的學習過程中發現了許多自己的不足。對於許多知識都比較迷茫比如這周所需要練習的求運算時間和將數據存入文件就不太懂。下學期剛開始總的來說較為懶散,感覺還沒有進入狀態。
要學會自習,后面需要學習的內容越來越難要更加的努力啊。還有覺得要多閱讀其他人的代碼會有很多新的感悟。


免責聲明!

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



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