C語言I博客作業08


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

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)。

輸出格式

在一行中輸出相應的最小的sn,其間以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.我覺得重點要轉移到掌握編程的思路和基本算法上來,我發現在刷題的時候有好多題目都是看懂了之后沒有思路,想不到要我怎樣去寫這個題目,我覺得現在我應該去找一些經典例子,想到一個思路,就要按自己思路把它寫完,讓自己了解為什么我要這樣寫。


免責聲明!

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



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