1. 程式人生 > >C博客第02次作業---循環結構

C博客第02次作業---循環結構

思路 *打印 eat 一個 strong can 做出 不容易 只有一個

1. 本章學習總結

1.1 思維導圖

技術分享圖片

1.2 本章學習體會及代碼量

1.2.1 學習體會

  • 通過了本章的學習,我學到了C語言中的循環結構,並且通過作業,如PTA,課堂派,能夠鞏固對循環結構的認識,並且能夠較好的運用到題目中。
  • 本章學習學到了while語句,do-while語句,以及break語句和continue語句,而且通過做作業後能夠較好的使用這些語句,感到非常開心。
  • 學習C語言並沒有想象中的那麽恐怖,做什麽事都是要慢慢來,沒有一時就可以都學會的。每當做出一道題,都會有很大的成就感,這樣也就更有動力去學習,也更有動力去深入了解C語言編程
  • 通過本章的學習還學到了偽代碼的編寫方法,每當做題前最好是先寫一遍偽代碼整理思路,寫完偽代碼之後再編程效果會更好。

1.2.2 代碼累計

技術分享圖片

2. PTA總分

2.1 PTA中循環結構2次題目集的排名得分

技術分享圖片
技術分享圖片

2.2 我的總分:

  • 循環結構(單層):175分
  • 循環的嵌套:115分
  • 總分:290分

3. 實驗作業

3.1 PTA題目1

  • 輸入一組二進制字符,輸出其對應的十進制數。當輸入回車鍵時,輸入結束。若輸入非二進制字符,輸出error input!

    3.1.1 算法分析

  • int sum=0存放十進制數 x=0判斷是否輸入非法字符
  • char op=‘0’進入循環
  • while(op!=‘\n‘)
    scanf ("%c",&op)
    if(op==‘\n‘) break;
    if(op!=‘0‘&&op!=‘1‘) x=1 break
    else sum=2*sum+op-‘0‘
  • end while
  • if(x==1) printf ("error input!")
    else printf ("%d",sum)

3.1.2 代碼截圖

技術分享圖片

3.1.3 測試數據

技術分享圖片
技術分享圖片

3.1.4 PTA提交列表及說明

技術分享圖片

  • Q1:一開始沒有定義x來判斷是否有輸入非法字符,跳出的輸入非法字符的階段時會有sum的輸出。
  • A1:後來運用老師教的可以用flag來解決此問題,用上之後就解決了問題。
  • Q2:一開始不知道如何解決輸入字符如何變成數字。
  • A2:後來運用老師教的op-‘0’可以字符轉化成數字解決了問題。

3.2 PTA題目2

  • 在商業和科學研究中,人們經常需要對數據進行分析並將結果以直方圖的形式顯示出來,這會大大增加這些數據的直觀性,也便於數據的分析與對比。下面以顧客對餐飲服務打分為例,輸入一個正整數repeat (0<repeat<10),做repeat次下列運算:
    輸入一個正整數n(1≤n≤20),表示有n個學生被邀請來給自助餐廳的食品和服務質量打分,分數劃分為1~5這5個等級(1表示最低分,5表示最高分),試統計調查結果,並用*打印出如下形式的統計結果直方圖。

    3.2.1 算法分析

  • int repeat,n,grade定義次數,人數,分值
  • int x1=0,x2=0,x3=0,x4=0,x5=0,x定義儲存各個分值的人數
  • char op=‘*‘
  • for(i=1;i<=repeat;i++)
    輸入人數n
    for(j=1;j<=n;j++)輸入成績grade
    switch(grade)
    如果輸入1 x1++break
    如果輸入2 x2++break
    如果輸入3 x3++break
    如果輸入4 x4++break
    如果輸入5 x5++break
    end for
    輸出1:令x=0直到x=x1 輸出
    輸出2:令x=0直到x=x2 輸出

    輸出3:令x=0直到x=x3 輸出
    輸出4:令x=0直到x=x4 輸出

    輸出5:令x=0直到x=x5 輸出*
    x1=x2=x3=x4=x5=0從新定義為下一次的表格做準備
    end for

3.2.2 代碼截圖

技術分享圖片
技術分享圖片

3.2.3 測試數據

技術分享圖片

3.2.4 PTA提交列表及說明

技術分享圖片

  • Q1:一開始從x=0開始直到x=x1,結果出現每個表格的每個分值都會有至少一顆星。
  • A1:後來改成x=1開始直到x=x1,結果才正確。
  • Q2:一開始結束的時候沒有定義x1=x2=x3=x4=x5=0,結果第二章表格會被第一張表格的數值影響從而出錯。
  • A2:後來在結尾定義了x1=x2=x3=x4=x5=0才正確。

3.3 PTA題目3

  • 你的程序要讀入一行文本,其中以空格分隔為若幹個單詞,以.結束。你要輸出每個單詞的長度。這裏的單詞與語言無關,可以包括各種符號,比如it‘s算一個單詞,長度為4。註意,行中可能出現連續的空格;最後的.不計算在內。

    3.3.1 算法分析

  • int x=0定義單詞的字母個數,count=0定義有幾個單詞
  • 輸入字符op=‘0’進入循環
  • while(op!=‘.‘) scanf ("%c",&op)
    if(op==‘.‘) 當輸入.時當x!=0且count==0是第一個單詞時輸出x
    如果count!=0不是第一個單詞則輸出空格加x
    如果一開始輸入.時break;
    if(op!=‘ ‘) x++
    if(op==‘ ‘)且x!=0時count++ if(count==1) 輸出x,x從新歸零
    if(count!=1)輸出空格加x,x從新歸零

3.3.2 代碼截圖

技術分享圖片
技術分享圖片

3.3.3 測試數據

技術分享圖片

3.3.4 PTA提交列表及說

技術分享圖片
技術分享圖片

  • Q1:這段代碼寫了很長時間,總是有一兩個測試點過不去。
  • A1:加上一個count後,解決了只有一個單詞時的問題。
  • Q2:還有一個問題就是輸出結果後面不可以有空格。一開始是輸出一個結果之後加上一個空格,結果老是出錯。
  • A2:後面運用了多個嵌套語句終於解決了。

4.代碼互評

4.1 代碼截圖

  • 同學的代碼
    技術分享圖片
    技術分享圖片

  • 我的代碼
    技術分享圖片
    技術分享圖片

4.2 不同之處

  • 同學是使用flag控制輸出,而我是使用count來控制輸出。flag表示是否為第一個單詞,而我的count是計算單詞的個數,當count==1的時候也就是輸出一個單詞的時候,單詞長度x不用加空格。否則需要加空格來控制最後一個單詞輸出後面不會加空格。
  • 同學的代碼與我的都是差不多的思路,都是分為三個情況,一個是輸入.時的情況,一個是輸入空格時的情況,一個是不輸入空格的情況。但是同學的代碼看起來思路比較清楚。
  • 同學的代碼看起來是有經過寫思路之後才開始寫的代碼,而我的是直接開始寫了,缺少了什麽再補什麽,這樣的代碼看起來比較不容易理解,以後會學學同學的方法,先列思路,寫偽代碼,再去做題。

C博客第02次作業---循環結構