C語言I博客作業08


這個作業屬於那個課程
這個作業要求在哪里
我在這個課程的目標是
這個作業在那個具體方面幫助我實現目標
參考文獻

1.PTA實驗作業

1.1 整除光棍

這里所謂的“光棍”,並不是指單身汪啦~ 說的是全部由1組成的數字,比如1、11、111、1111等。傳說任何一個光棍都能被一個不以5結尾的奇數整除。比如,111111就可以被13整除。 現在,你的程序要讀入一個整數x,這個整數一定是奇數並且不以5結尾。然后,經過計算,輸出兩個數字:第一個數字s,表示x乘以s是一個光棍,第二個數字n是這個光棍的位數。這樣的解當然不是唯一的,題目要求你輸出最小的解。

提示:一個顯然的辦法是逐漸增加光棍的位數,直到可以整除x為止。但難點在於,s可能是個非常大的數 —— 比如,程序輸入31,那么就輸出3584229390681和15,因為31乘以3584229390681的結果是111111111111111,一共15個1。

輸入格式:

輸入在一行中給出一個不以5結尾的正奇數x(<1000)。
輸出格式:

在一行中輸出相應的最小的s和n,其間以1個空格分隔。

輸入樣例:

31

輸出樣例:

3584229390681 15

1.1.1數據處理:

數據表達:定義了x,s,n;x是用戶輸入的值,s,n通過賦值;它們都是整形變量。
數據處理:

x是一個不以5結尾的正奇數x(<1000),s表示x乘以s是一個光棍,n是光棍的位數;
	while (使初始光棍數/x的余數大於1) {
		逐漸增加光棍的位數
			}
	
	do {
            判斷光棍數%x是否=0;
		如果不是,繼續逐漸增加光棍的位數;

	} while (循環條件為光棍數%x不等於0);

1.1.2實驗代碼截圖

1.1.3 造測試數據

輸入數據 輸出數據 說明
41 271 5 41是被光棍所除的正奇數,271是表示271*41=最小光棍數,5是光棍的位數
17 65359477124183 16 17是被光棍所除的正奇數,65359477124183是表示65359477124183*17=最小光棍數,16是光棍的位數
39 2849 6 39是被光棍所除的正奇數,2849是表示2849*39=最小光棍數,6是光棍的位數

1.1.4 PTA提交列表及說明

我在vs上面運行無誤后復制粘貼。

1.2 爬動的蠕蟲

一條蠕蟲長1寸,在一口深為N寸的井的底部。已知蠕蟲每1分鍾可以向上爬U寸,但必須休息1分鍾才能接着往上爬。在休息的過程中,蠕蟲又下滑了D寸。就這樣,上爬和下滑重復進行。請問,蠕蟲需要多長時間才能爬出井?

這里要求不足1分鍾按1分鍾計,並且假定只要在某次上爬過程中蠕蟲的頭部到達了井的頂部,那么蠕蟲就完成任務了。初始時,蠕蟲是趴在井底的(即高度為0)。

輸入格式:

輸入在一行中順序給出3個正整數N、U、D,其中D<U,N不超過100

輸出格式:
在一行中輸出蠕蟲爬出井的時間,以分鍾為單位。

輸入樣例:

12 3 1

輸出樣例:

11

1.2.1 數據處理

數據表達:定義了N, U, D,sum,time;N, U, D,是用戶輸入值,sum用來記蠕蟲距井口的距離,time用來記錄蠕蟲所爬的時間;N, U, D,sum,time,都是整形變量。
數據處理:


	while (判斷蠕蟲所爬距離與井的高度) {
            分別記錄蠕蟲所爬的距離與時間;
		if (判斷蠕蟲所爬距離與井的高度) {
			分別記錄 蠕蟲所爬的距離-休息時所滑的距離與蠕蟲所爬的距離;	
		}
	}

1.2.2實驗代碼截圖

1.2.3 造測試數據

輸入數據 輸出數據 說明
187 4 2 185 187是井的高度,4是蠕蟲1分鍾所爬的高度,2是蠕蟲休息1分鍾所滑落的高度,185是蠕蟲的頭部到達井的頂部所花的時間
9 2 1 15 9是井的高度,2是蠕蟲1分鍾所爬的高度,1是蠕蟲休息1分鍾所滑落的高度,15是蠕蟲的頭部到達井的頂部所花的時間
46 3 1 45 46是井的高度,3是蠕蟲1分鍾所爬的高度,1是蠕蟲休息1分鍾所滑落的高度,45是蠕蟲的頭部到達井的頂部所花的時間

1.2.4 PTA提交列表及說明

部分正確:我把sum < N錯寫成了sum <= N,忽略了蠕蟲的頭部到達了井的頂部,蠕蟲就完成任務了這一條件,后來我把=刪除后就答案正確了

1.3 求整數的位數及各位數字之和

對於給定的正整數N,求它的位數及其各位數字之和。
輸入格式:
輸入在一行中給出一個不超過10^9
​​的正整數N。

輸出格式:

在一行中輸出N的位數及其各位數字之和,中間用一個空格隔開。

輸入樣例:

321

輸出樣例:

3 6

1.3.1數據處理:

數據表達:定義了變量n, m,count;n是用戶輸入值,m和count通過賦值得到;都是整形數據。
數據處理:

        定義變量
	do {
		通過求余數的方法,計算各位數字之和;
		逐步減少n的位數;
		通過循環累加位數;
	} while (循環的條件是n不為0)
            輸出數據

1.3.2實驗代碼截圖

1.3.3 造測試數據

輸入數據 輸出數據 說明
4323 4 12 4323是輸入的正整數,4是輸入的位數,12是各位數字之和
99999 5 45 99999是輸入的正整數,5是輸入的位數,45是各位數字之和
131 3 5 131是輸入的正整數,3是輸入的位數,5是各位數字之和

1.3.4 PTA提交列表及說明

我在vs上面運行無誤后復制粘貼。

2.代碼互評

同學代碼截圖:

同學代碼截圖:

自己代碼截圖:

1.第一個同學的代碼比我的代碼多定義了一個變量,我認為他的代碼中a完全可以用number取代,另外該同學用的是while循環,我用的是do-while循環,對於這個題目來說只是風格不同而已,沒有很大的差別;
2.第二位同學雖然定義的變量和我的一樣,但我感覺他的代碼比第一位同學的代碼更復雜一些,我認為可以改進的地方有:if可以用while取代,然后再把else改為if(N==0),還有就是他的兩個printf可以合並;
3.總體來說:我們編寫代碼,盡量用最簡單的代碼編出最實用的程序,用自己所學的知識編好代碼,因為每個人都有每個人的習慣,所以編寫代碼時按照自己的思維來寫是最好的。

3.學習總結

3.1 學習進度條

周/日期 這周所花的時間 代碼行 學到的知識點簡介 目前比較迷惑的問題
第八周 17h 121 定義兩個變量,對for循環有更進一步的了解 對於基本知識還是不夠扎實
第九周 20h 178 while循環,定義和調用函數 對於定義和調用函數還是不怎么了解
第十周 18h 143 for循環和if-else語句之間嵌套 讀完題目后大腦里面沒有相應的代碼
第十一周 17h 193 switch可以處理多分支問題 對於編程題不能很快的寫出代碼
第十二周 15h 156 新學了do-while循環,了解了for,while,do-while循環之間的區別,並對在相應環境用最合適的循環有了初步認識 題目做的比較慢,一些基本知識還是不夠扎實

3.2 累積代碼行和博客字數

3.3 學習內容總結和感悟

3.3.1 學習內容總結

3.3.2 學習體會

1.對於自己學到了新的知識感覺很開心,覺得自己以后每天都盡量學到一些知識,自己的作業水平及有關電腦方面的知識一定會提高;
2.做PTA時,我覺得應自己先寫代碼,然后運行,自己實在找不到錯誤,然后再到網上去搜相應的題目,經過對比找到自己的錯誤,這樣自己會一步一步前進;
3.我希望自己在以后的時間里多利用一些零碎時間去學習有關像編程,網頁設計,PS,PR,之類的知識,提高自己的知識儲存量。


免責聲明!

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



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