這個作業屬於那個課程 |
這個作業要求在哪里 |
我在這個課程的目標是 |
這個作業在那個具體方面幫助我實現目標 |
參考文獻 |
1.PTA實驗作業
jmu-c-二進制轉10進制
輸入一組二進制字符,輸出其對應的十進制數。當輸入回車鍵時,輸入結束。若輸入非二進制字符,輸出error input!
輸入樣例
11111111
輸出樣例
255
輸入樣例
34
輸出樣例
error input!
1.1.1數據處理
數據表達:
我用了整形變量sum,flag,字符型變量number,sum為轉換之后的和,flag用於判斷輸入的是不是1或0,number為輸入的字符型1或0,來儲存二進制
數據處理:
定義變量sum來放轉化后的值,flag來判斷是不是二進制的數1或0,number用來放每個字符
while (number!='\n')
{
輸入number對應的字符
if number=='\n' then end while
if number!='0'或者'1' then flag=0 end while
else sum=sum*2+number-'0'
end while
}
if flag=0 then 輸出error input!
else 輸出sum
1.1.2實驗代碼截圖
1.1.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
11111 | 31 | 二進制11111轉換成十進制為31 |
1010101 | 85 | 二進制1010101轉換成十進制為85 |
3355 | error input! | 3355不是二進制 |
1.1.4 PTA提交列表及說明
提交列表說明
在dev c++上我出現過一下錯誤
答案錯誤:將輸出error input!寫在了循環內並且直接return結束了,使得每次輸出都是error input!,后來將其移到循環外才得以正確
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,time,sum,n為井的深度,u為蠕蟲一分鍾爬的距離,d為休息時下滑的距離,time為爬出井的總時間,sum為蠕蟲爬行的距離。
數據處理:
定義n,u,d,來分別代表井深,蠕蟲每分鍾爬行的距離和休息時下滑的距離,time用來統計時間,sum用來判斷蠕蟲爬行距離的變化
分別輸入井深,蠕蟲每分鍾爬行的距離和休息時下滑的距離
while(1)
{
sum+=u
time++
if sum>n-1 then end while
sum-=d
time++
}
end while
輸出時間time
1.2.2 實驗代碼截圖
1.2.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
15 4 3 | 23 | 如果井深為15寸,蠕蟲每分鍾爬行4寸,休息時下降3寸,則需要23分鍾才能爬上去 |
10 5 2 | 5 | 如果井深為10寸,蠕蟲每分鍾爬行5寸,休息時下降2寸,則需要5分鍾才能爬上去 |
9 5 4 | 9 | 如果井深為9寸,蠕蟲每分鍾爬行5寸,休息時下降4寸,則需要9分鍾才能爬上去 |
1.2.4 PTA提交列表及說明
提交列表說明
部分正確:在while的后面寫了一個終止條件,導致和循環體有矛盾,導致一部分錯了,后來將其改為1才正確
1.3 整除光棍
這里所謂的“光棍”,並不是指單身汪啦~ 說的是全部由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.3.1數據處理
數據表達:
我用了整形變量x,d,i,n,字符型數組s[100],x為輸入的數字,d為光棍數,i累計光棍的個數,n為數組的下標,s[1000]用於累計d/x的每一個位
數據處理:
定義x為輸入的值,d為光棍數,i為光棍的個數,n為數組的下標,數組s[1000]用於收集光棍數除以x的值
輸入x的值
while(1)
{
i++
if n!=0或者d/x!=0 then s[n++]='0'+d/x
d=d%x
if d=0 then s[n]='\0' 輸出字符串s和i end while
d=d*10+1
}
end while
1.3.2實驗代碼截圖
1.3.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
43 | 2583979328165374677 21 | 所得的光棍數除以43為2583979328165374677且光棍的個數為21 |
21 | 5291 6 | 所得的光棍數除以21為5291且光棍的個數為6 |
1.3.4 PTA提交列表及說明
提交列表說明
部分正確:前面想着先將光棍數計算出來在來計算除后的數和光棍的個數,發現循環的次數太多了,使得運行超時,后來逆向思維從前面除起,一邊除一遍記錄,才得以解決
2.代碼互評
(彭傑)同學的代碼
我的代碼
1.他的代碼是先判斷距井口的距離是否大於零來判斷循環是否結束,在后面判斷距離井口的距離和一分鍾內爬的距離的大小,如果能爬上去則只加一分鍾,不能則再加上休息的時間,后面來判斷是否需要加上休息的距離,最后輸出時間
2.我的代碼是用一個sum變量來記錄爬行的距離,如果sum加一分鍾爬行的距離大於井口到其頭部的距離則跳出循環,否則爬行的距離減去休息下降的距離,時間再加一分鍾
3.相比之下,他的代碼比我跟通俗易懂一些,他是整體思想,而我是一步一步來寫的,下次寫代碼可以利用他的這種想法
(孫夢姣)同學的代碼
我的代碼
1.她的代碼是按從左到右開始計算的,每次輸出一個位的商,每次除完就將s賦值s/x的余數再將其乘十加1,相對於我們算除法的時候調下一位下來,直到s/x等於0為止,如果s%x=0了說明除盡了,再將光棍的個數輸出出來,剛開始我是看不懂她i的作用是干嘛的,但是我認為沒有必要用變量i,后來將她的代碼敲出來再將i去除掉,發現是一樣的,證明我的想法是正確的。
2.我的代碼是按照平時計算除法的那種方式來計算的,i是每次循環調用的1的個數,每次除出一個數就記錄一個數放在s數組內,隨后將d賦值d/x的余數再將其乘十加1,相對於我們算除法的時候調下一位下來最后當d=0的時候就將數組最后一個數賦值字符串的終止符號,再輸出字符串便是所要的商,和光棍的個數i。
3.總的來說他的代碼和我的代碼思路是相同的,但是她的數據無法儲存起來,只能依次輸出,但是我的可以,相比之下我的代碼更好一些,
3.學習總結
3.1學習進度條
周/日期 | 這周所花的時間 | 代碼行 | 學到的知識點簡介 | 目前比較迷惑的問題 |
---|---|---|---|---|
第六周 | 25小時 | 434行 | 常用的數學函數,if-else語句,for語句,自定義函數 | 自定義函數不會用一個算法來運算多個式子 |
第七周 | 8小時 | 142行 | 二分支結構和用char輸入字符 | 對於字符型的代碼有點看不懂,getchar與putchar還不明白怎么運用 |
第八周 | 12小時 | 343行 | 多分支結構,switch語句 | switch語句用得有點混亂,搞不清什么時候該結束 |
第九周 | 14個半小時 | 503行 | 自定義函數的用法,怎樣用一個算法來運算多個式子 | if語句的嵌套不明白是怎樣分支的 |
第十周 | 8個半小時 | 181 | do-while,while循環語句和continue語句 | continue不知道怎么去運 |
第十一周 | 28個小時 | 1246 | 一維數組和二維數組的基本運用 | 數組用的不夠熟練,老是犯錯 |
第十二周 | 10個小時 | 391 | 學會了整形數組字,浮點型數組和符型數組,學會了結構體struct的運用 | struct的嵌套容易搞混變量 |
3.2 累積代碼行和博客字數
時間 | 博客字數 | 代碼行數 |
---|---|---|
第四周 | 645 | 0 |
第五周 | 645 | 0 |
第六周 | 1275 | 434 |
第七周 | 2523 | 576 |
第八周 | 3371 | 938 |
第九周 | 5414 | 1441 |
第十周 | 6930 | 1622 |
第十一周 | 9584 | 2868 |
第十二周 | 13222 | 3259 |
3.3 學習內容總結和感悟
3.3.1 學習內容總結
3.3.2 學習體會
1.這周自己學習了數組和結構體,數組是基本會用了,但是結構體還只是會最基本的而已,敲書上的結構體嵌套的時候不明白代碼的意思,看的不是很懂,不過在刷題的過程中將結構體數組和混合結構體學會了。
2.越到后面問問題的人就幾乎沒有了,我不知道是我的原因還是他們已經會了,我也不知道這是好事還是壞事,我有點困擾,因為我覺得可能是我自己的問題,可能是我自己哪里出了問題。
3.我覺得重點要轉移到掌握編程的思路和基本算法上來,我發現在刷題的時候有好多題目都是看懂了之后沒有思路,想不到要我怎樣去寫這個題目,我覺得現在我應該去找一些經典例子,想到一個思路,就要按自己思路把它寫完,讓自己了解為什么我要這樣寫。