C語言I作業08


第4章 循環結構 4.1-4.2 熟悉使用while和do-while結構解決問題

這個作業屬於那個課程 C語言程序設計II
這個作業要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-4/homework/9979
我在這個課程的目標是 學習do-while,while語句。
這個作業在那個具體方面幫助我實現目標 使用循環語句處理循環的題目
參考文獻 C語言程序設計,百度

1.PTA實驗作業

1.1 題目名1
7-3 jmu-c-二進制轉10進制

輸入一組二進制字符,輸出其對應的十進制數。當輸入回車鍵時,輸入結束。若輸入非二進制字符,輸出error input!
輸入樣例1:
11111111
輸出樣例1:
255
輸入樣例2:
34
輸出樣例2:
error input!
1.1.1數據處理
數據表達:char定義字符char ch,int整型定義變量int sum=0
數據處理:

開始
sum←0
while ch=getchar()='\n'
do  IF   ch=='1' THEN 
      do sum←sum*2+1
    ELSE ch=='0' THEN
         sum←sum*2+0
    ELSE 輸出error input!
    END IF 結束
不滿足條件 輸出sum
結束

1.1.2實驗代碼截圖

1.1.3 造測試數據

輸入數據 輸出數據 說明
-1 error input! 輸入值小於0
23 error input! 非二進制字符
101010 42 二進制字符

1.1.4 PTA提交列表及說明

個數/類型 出錯 改正
1 沒有看清楚題目要求,題目要輸入字符型。 重新定義字符ch。
2 while判斷輸入錯誤,不理解換行字符,導致進入死循環。 重新定義輸入字符。
3 if語句賦值與等值比較理解不清楚. 將賦值改為等值比較。

1.2 題目名1

7-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.2.1數據處理
數據表達:整型定義x,s,m,countx=0,s=0,m=0,count=0
數據處理:

開始
 x←0,s←0,m←0,count←0
 輸入 x
 for     i←1 
 do     m←m*10+1
        count←count+1
    IF  m>=x   跳出循環
while 真
    輸出  m/x
    m←m%x
    IF  m←0    跳出循環
    m←m*10+1
    count←count+1
輸出 count
結束

1.2.2實驗代碼截圖

1.2.3 造測試數據

輸入數據 輸出數據 說明
1 1 1 最小光棍數
999 111222333444555666777889 27 輸入最大x
-1 -1 1 x為負數

1.2.4 PTA提交列表及說明

個數/類型 出錯 改正
1/部分正確 其實有蠻多錯誤的,都是運行超時。 不了解最小s,將while語句添加if語句判斷m>=x
2/部分正確 最大s錯誤 我也想知道為什么錯誤了,通過調試也調不出個所以然。還沒有解決。
3/部分正確 最大s錯誤 通過百度,改正我的邏輯思維,不只用一個for語句循環計算第一位除數。解決

2.代碼互評
我的代碼

同學代碼

相同點:同樣使用 getchar 函數接收單個字符。 不同點:1.該同學使用switch語句而我使用if語句判斷,使用switch語句可以避免等值比較與賦值的錯誤。 2.同學代碼后使用 getchar 接收字符改為單個字符,不好理解。


3.學習總結
思維導圖

3.1 學習進度條

這周所花的時間 代碼行 學到的知識點簡介
一周 4個小時 50行 簡單的打印字句
二周 5個小時 85行 提問的智慧
三周 12小時 132行 if-else語句的使用,基本數字的定義,分段函數的計算
四周 6個小時 97行 for循環語句的使用
五周 6個小時 190行 簡單函數的定義和調用,while語句,break終止語句
六周 6個小時 260行 鑲嵌型的for,if-else語句,邏輯運算,字節符的函數表達,switch語句的使用
七周 6個小時 300行 簡單的數組儲存問題,冒泡排序(目前還沒有學懂)
八周 6個小時 310行 簡單的結構體

3.2 累積代碼行和博客字數

3.3 學習內容總結和感悟
3.3.1 學習內容總結

  • 最近學習了一點點結構體大概內容如下:
struct 結構名
{
        成員列表
};
調用方式與函數類似。
  • 字符串的輸出為 %s 而不是 %c

3.3.2 學習體會

  • 學習真的一點點的累計的事情,也希望我能夠堅持吧,在學習新的內容時沒有自己去實踐,所以之后我學習的內容我要自己去查找相關的知識內容,然后實踐自己寫代碼。 😀
  • 感覺算法很神奇,雖然對一些知識不是很了解,但是我會努力的。 💪 💪 💪
  • 學習也是一件很快樂的事情,學習了一些makedown的一些有趣的語法,比如這個笑臉。 😄 😄 😄


免責聲明!

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



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