C語言II部落格作業01

2022-06-20 09:30:14 字數 2539 閱讀 8489

這個作業屬於哪個課程

這個作業要求在**

homework/11769

這個作業的目標

《學會測試資料和改進**,還有學會檔案呼叫》

學號<20209130>

第6章 回顧資料型別和表示式,第12章 檔案

例如: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的所有整數,所以一開始就利用for迴圈來作為計數器得到1到n之間的所有整數,再然後題目要求算出1到n之間所有整數裡的「1」的個數,首先想到利用分支結構進行判斷,但使用後還不能得到答案,之後又可以想到把計數器所得到的數的位數拆分,逐個判斷是否為「1」,所以由此可以想到再次使用迴圈進行拆分,最後**就可以得到最終答案了。

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

測試資料

運算結果

運算時間11

0.419000s91

0.876000s

999300

1.611000s

99999

50000

2.15000s

9999999

7000000

3.402000s

999999999

900000000

33.368000s

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

為了減少運算時間可以儘量減少定義變數,優化演算法,盡可能的進行簡化,應該就可以減少運算時間。改進就是不進行迴圈的巢狀,而是把裡面的迴圈單獨放開,作為乙個函式進行呼叫,應該在資料大的時候就可以減少運算時間。

改進的演算法如下

執行結果

檔案內容

檔案緩衝系統:它是系統專門為正在使用的檔案開闢的區域,正在使用的檔案的訪問一般都在這個區域,大小一般為512b,可以更好的提公升效率。

工作原理:從磁碟向記憶體讀資料時會先從磁碟檔案取資料送到緩衝區,在送到記憶體,從記憶體向磁碟寫資料時也是一樣,會中間經過緩衝區,而且輸送資料時是一批批進行,而不是進行一次輸入或輸出就訪問一次磁碟。

緩衝檔案系統和非緩衝檔案系統

文字檔案:存入檔案的編碼是以字元方式寫入檔案的,那麼這個檔案就是文字檔案。

二進位制檔案:存入檔案的編碼是以二進位制介面方式寫入檔案的,那麼這個檔案就是二進位制檔案。

文字檔案和二進位制檔案主要是windows下的概念,unix/linux並沒有區分這兩種檔案。

文字檔案與二進位制檔案

周/日期

這週所花的時間

**行學到的知識點簡介

目前比較迷惑的問題

第一周30h

350檔案的概念,檔案的基本呼叫,測試資料

對測試程式還不怎麼熟

學習內容總結

感悟1、乙個寒假回來,還是忘了很多東西,雖說基本的知識點還記得,但如何靈活運用這些知識點就有點跟不上了,現在要盡快找回上個學期那個狀態。

2、這個學期開學的學習總的來說還是效率低了些,開始越來越懶了,拖延症感覺已經到晚期了,還是不能這樣,下一周一定要克服這個缺點。

3、有一點點好的地方就是對於函式的呼叫熟練了一些,上個學期我對於函式就是很不熟練,現在開始熟悉函式的使用了。

4、希望下週好的地方能夠繼承,壞的地方能夠擯棄,然後慢慢提公升自己,讓自己回歸甚至超越上個學期的狀態,繼續加油!!!!

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...