C語言II部落格作業01

2022-06-20 10:24:12 字數 3500 閱讀 4856

這個作業屬於哪個課程

這個作業要求在**

homework/11769

這個作業的目標

首先熟悉檔案,對檔案有乙個大概的了解並能夠掌握自己所寫程式執行的時間有乙個較為明確的了解,同時對出現的一些問題進行乙個適當優化

學號<20209124>

例如: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)**如下

(2)解題思路

使用for迴圈對程式進行取值範圍的界定,再在迴圈中嵌入while函式進行運算,通過一系列的操作便可得出num,再呼叫函式clock_t start1,end1,通過雙倍時間的運算,這樣既得出了所取得的1的個數,又通過標頭檔案的定義time函式,使用printf輸出就得出了想要的時間和答案

(3)測試資料

n1的個數91

999300

999999

600000

999999999

900000000

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

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

定義函式time的同時不去呼叫函式,但這樣做的後果就是乙個無底洞,因為只要給出的數特別大那麼得出的答案就會error,這就需要使用我們的檔案來進行處理了,通過檔案的使用我們可以在資料輸入之前便清楚自己想要什麼,而檔案的使用也只需要我們將其位址填入我們所輸入程式中,通過檔案的方式得出的答案更顯而易見,唾手可得

2.2 將上題中多組測試資料寫入檔案,並給出測試程式以檢測你的**有沒有問題,貼出你的**、執行結果和檔案內容。(5分)

**如下

執行結果

檔案內容

1.什麼是檔案緩衝系統?工作原理如何?

緩衝檔案作業系統

系統會自動的在記憶體區為每乙個正在使用的檔案開闢一塊緩衝區,緩衝區的大小一般由各個c的版本規定,一般的為512byte即0.5k大小。從此盤向記憶體讀資料時,則一次將一些資料從磁碟檔案送記憶體緩衝區(充滿緩衝區),然後再從緩衝區逐個將數送給接收變數(檔案描述符);從記憶體寫資料到磁碟檔案時,現將資料塞滿緩衝區,在一次性將資料從緩衝區送到磁碟檔案。用緩衝區可以一次讀入一批資料,或輸出一批資料,而不是執行一次輸入或輸出函式就去訪問一次磁碟,這樣做的目的是減少對磁碟的實際讀寫次數,因為每一次讀寫都要移動磁頭並尋找磁軌扇區,花費一定的時間。緩衝檔案系統是借助檔案結構體指標來對檔案進行管理,通過檔案指標來對檔案進行訪問,既可以讀寫字元、字串、格式化資料,也可以讀寫二進位制資料,緩衝檔案系統函式一般是由f開頭的函式,如fopen(),fwrite(),fread()。

--csdn部落格

工作原理

緩衝檔案系統規定磁碟與記憶體緩衝區之間的互動由作業系統自動完成,緩衝檔案系統將會自動在記憶體中為被操作的檔案開闢一塊連續的記憶體單元(如512b)作為檔案緩衝區。當要把資料儲存到檔案中時 首先把資料寫入檔案緩衝區,一旦寫滿了512b,作業系統自動把全部資料寫入磁碟乙個扇區,然後把檔案緩衝區清空,新的資料繼續寫入到檔案緩衝區,當要從檔案讀取資料時,系統首先自動把乙個扇區的檔案匯入檔案緩衝區,供c程式逐個讀入資料,一旦512b資料都被讀入,系統自動把乙個扇區的內容匯入檔案緩衝區,供c程式繼續讀入新資料。

--2.什麼是文字檔案和二進位制檔案?

文字檔案

文字檔案是一種計算機檔案,它是一種典型的順序檔案,其檔案的邏輯結構又屬於流式檔案,並且文字檔案是指以ascll碼的方式儲存的檔案

二進位制檔案

二進位制檔案是指包含在ascll碼以及擴充套件ascll字元中編寫的資料或程式指令的檔案

--搜狗百科

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

1 學習進度條(5分)

周/日期

這週所花的時間

**行學到的知識點簡介

目前比較迷惑的問題

第一周3.1-3.7

12h420

學會用檔案進行**書寫並回顧複習以往資料型別和表示式

檔案的使用

2 累積**行和部落格字數(5分)

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

學習內容總結

感悟1.新學期,新挑戰,這一學期我們不再按照以前的規矩學習,而是從後面的檔案開始學,先學大件,再往前學習它的小件,這表示剛開始我們寫作業所遇到的困難也會加大了,我們也只有克服,經歷過乙個多月的寒假,對於上學期的知識也忘了很多,我們也必須加強學習,不然就會落下很遠很遠了

2.任重而道遠,通過這一次的作業,我對這句話又有了重新的深刻理解,我們都是新手,第一次接觸檔案我感覺還是很棘手的,果然程式設計師不是那麼好當的

3.當然這學期我又有了新的期待,人不能只著眼於當下,更應該放眼未來,往更好的方向發展,往更多的方向發展,三百六十行,行行出狀元,加油

4.**的變化層出不窮,大腦也在飛速運轉,還未搞懂的,網上的資料也很多,必須需要加強學習,對於學過的,未學過的,都要加強鞏固,課堂上所學到的永遠只是皮毛,真的核心,還得要自己去挖掘

5.大學的知識不只是c語言,還有很多很多語言,同時還有各種各樣的科目等,對於其它的科目也得付出努力,專業課固然重要,非專業課也不能落下

6.以全新的狀態迎接新的一學期,加油吧

C語言II部落格作業01

這個作業屬於哪個課程 c語言程式設計 這個作業要求在 作業要求 這個作業的目標 回顧資料型別和表示式,學習檔案操作 學號20208988 例如 n 2,寫下1,2。這樣只出現了1個 1 n 12,我們會寫下1,2,3,4,5,6,7,8,9,10,11,12。這樣,1的個數是5。問題是 1.寫出乙個...

C語言II部落格作業01

這個作業屬於哪個課程 這個作業要求在 homework 11752 這個作業的目標 1.讓我們初步了解測試程式 2.讓我們了解並且學會運用檔案 3.複習之前學過的內容 學號20209154 第6章 回顧資料型別和表示式,第12章 檔案 例如 n 2,寫下1,2。這樣只出現了1個 1 n 12,我們會...

C語言II部落格作業01

這個作業屬於哪個課程 這個作業要求在 homework 11752 這個作業的目標 學習檔案,回顧資料型別和表示式,設計程式來自動輸入資料 學號 20209155 第6章 回顧資料型別和表示式,第12章 檔案 例如 n 2,寫下1,2。這樣只出現了1個 1 n 12,我們會寫下1,2,3,4,5,6...