這個作業屬於那個課程 |
這個作業要求在哪里 |
我在這個課程的目標是 |
這個作業在那個具體方面幫助我實現目標 |
參考文獻 |
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,之類的知識,提高自己的知識儲存量。