1. 程式人生 > >C語言博客作業--字符數組

C語言博客作業--字符數組

名稱 log 出了 總結 getchar() 做出 1.3 第一個字符 提高效率

一、PTA實驗作業

題目1:統計一行文本的單詞個數

1. 本題PTA提交列表:

技術分享圖片

2. 設計思路

    定義變量sum為存放單詞個數,b存放空格
    定義變量i = 0
    定義字符數組a[1000]存放輸入字母和空格;
    當a[i]=getchar())!=‘\n‘
        如果a[i]!=‘ ‘&&b==‘ ‘
            sum++;
        b存放前一個字符
    end while
    輸出sum

3.代碼截圖

技術分享圖片

4.本題調試過程碰到問題及PTA提交列表情況說明。

技術分享圖片
一開始的思路是這樣的,提交上去多種錯誤,提示段錯誤把數組範圍改大了,其他錯誤一直不知道怎麽辦,後來問了看了做完同學的代碼,他寫的很簡潔,發現自己沒有認真審題,題目說是用空格分隔,那就只要計算每個單詞第一個首字母的個數和即可,方法巧妙。

題目2:刪除字符串中的子串

1. 本題PTA提交列表:

技術分享圖片

2. 設計思路

    定義字符數組s1[80],s2[80];
    定義a存放s1長度,b存放s2長度,i,j,k控制循,flag標記相同字母位置
    輸入第一個字符串s1
    輸入第二個字符串s2
    調用strlen函數分別計算S1、S2字符串的長度a,b
    for  i=0  to i=a-1
        如果第二個字符串第一個字符等於第一個字符串中字符
            flag=0;
            for j=0 to j=b-1
                如果第二個字符串不在第一個字符串中  flag=1;
            如果 flag==0
                字符串s1長度為s1長度減去s2的長度
                for k=i to k=a-1
                                     刪去字符後後面字符往前移動
                s1[a]=‘\0‘;
                                end for

    輸出刪去字母後字符串(考慮不全面思路)

3.代碼截圖

技術分享圖片

4.本題調試過程碰到問題及PTA提交列表情況說明。

不知道如何過最後兩個測試點,技術分享圖片,現在的思路無法實現第一個字符串刪去第二個字符串的內容同時刪去字符間的空格,還是不太有思路,希望得到指點!後續會再找找問題問問同學。

題目3:藏頭詩

1. 本題PTA提交列表:

技術分享圖片

2. 設計思路

    定義字符數組str[4][80]存放詩句,first[80]存放首字
    定義i控制循環
    for i=0 to i=3
        輸入四行詩
    for i=0 to i=3 
        將四行的首字放入數組first中
        給first字符串存入結束符
    輸出首字                                                       

3.代碼截圖

技術分享圖片

4.本題調試過程碰到問題及PTA提交列表情況說明。

百度後才知道怎麽輸出中文,如何做到一個字兩個字符的輸出,還有個錯誤點是技術分享圖片字符串的結束下標多加了1,答案錯誤,可是不知道為什麽deve c輸出答案卻是正確的,翻書驗證下標出錯改正後答案才在PTA通過。

二、截圖本周題目集的PTA最後排名

技術分享圖片

三、同學代碼結對互評

1.互評同學名稱:龔順德

2.我的代碼、互評同學代碼截圖

我的
技術分享圖片

龔順德同學的
技術分享圖片

3.我和同學代碼不同在哪裏?有哪些各自優勢?你更喜歡哪種代碼風格?如果同學代碼有錯的也請幫忙指出來哪裏出問題。

不同:兩個人的思路不一樣。我是用一個二維數組分別存放行數和字符個數,通過遍歷數組比較得到最長字符串,而順德是用兩個數組分別存放字符串和最長字符串,他沒有存放每個數組的長度,而是直接將每次輸入字符串的長度和上一次字符串長度進行比較,較長的字符串保存在數組b裏。我認為他的做法更簡單些,就是代碼的縮進有點奇怪。

四、本周學習總結

1.你學會了什麽?
1.1指針變量如何定義(設計代碼可以用markdown代碼符號渲染)?

  • 類型名 *指針名

1.2 指針加法運算運用在哪種情況,2個指針變量能否相加?

指針加法只運用在地址的偏移,如*p=a+1
兩個指針變量不能相加,否則會出現編譯錯誤

1.3 指針不賦初值,直接使用,會出現什麽情況,請用DEVC驗證,並截圖展示?

無法運行。技術分享圖片
技術分享圖片

1.4 課堂派上關於分離浮點數的整數部分和小數部分那題,請用DEVC驗證實現,並在此貼圖展示,同時說明哪句是指針變量做函數形參,函數實參應該怎麽表示。指針變量做函數形參有什麽用處?

1.5 請把課本的冒泡排序的函數改成指針變量做形參格式,並把代碼寫在底下,註意用markdown語法渲染。

1.6 如何定義一個指針變量指向數組,如何用指針變量表示數組元素?

1.7 如何定義字符指針指向字符串?指針指向字符串後,初始位置在哪裏?

1.8 利用字符指針操作字符串,如設計函數實現字符串連接,請在此貼圖展示代碼。說明指針表示字符的方法好處是什麽?

2.本周你不會內容有什麽?

2.1 課堂派錯題羅列及如何訂正。

2.2 其他不會的?打算怎麽解決

這周PTA寫的很慢思路也不太清晰,需要多閱讀一些好同學的代碼找思路來提高效率。還有就是指針的函數調用格式不太熟悉,如何調用指針經常要翻書確認,需要多加實踐。

3.數組上機考試小結

3.1 那題錯了,請羅列?

6-2排序沒寫出來,7-1.2.3.4有思路但沒寫對

3.2 錯題如何訂正,為什麽錯了?

考完當天就回去在PTA上重做並寫出了正確答案,發現像進制轉換是書上之前的小知識點不該錯;排序考試的時候沒有用三維數組做下去,不然應該可以做出來,也是書上排序方法不熟吧;IP地址的轉換上課講過只有印象,自己沒有運用過考試也不知道怎麽寫,以後代碼要多自己運行試試;倒二可能思路真的比較亂,回來也做了好久才做出來,最後一題題目沒有認真看清思路偏了,以後要多多練習字符串的題目,多看看大佬代碼。

C語言博客作業--字符數組