C博客作業--指針


一、PTA實驗作業

題目1:字符串串動變化

1. 本題PTA提交列表

2. 設計思路

3.代碼截圖

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

一開始寫成了這樣
小細節導致錯誤,認真讀了一遍代碼后解決

題目2:求子串在母串中最后一次出現的地址

1.本題PTA提交列表

2. 設計思路

int i,k=0,flag=0,count=0,count判斷是否有子串,flag記錄子串出現的下標
for i=0 to s[i]!='\0'
    k=0
    for j=o to t[k]!='\0'
        如果s[j]!=t[k] 不為子串的話
            break
    k++
    如果t[k]=='\0'即為子串的話
        flag=i 記下下標
        count=1 存在子串
如果count!=0  存在子串
    t=&s[flag] t為子串在母串中最后一次出現的地址
    return t
否則 return 0

3.代碼截圖

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

雖說我的代碼一遍就過了,但是我覺得代碼是錯誤的,只是題目沒有考察到這個點
一開始的代碼:
如果s的第一個字符開始就出現子串,還是會返回0. 改正方法:引入count查看是否存在子串

題目3:使用函數實現字符串部分復制

1.本題PTA提交列表

2.設計思路

int i,k=0
for i=m-1 to t[i]!='\0'從題目給定位置開始遍歷
    s[k]=t[i]
    k++
s[k]='\0'添加字符串結束標志

3.代碼截圖

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


由於忘記添加字符串結束標志'\0'導致錯誤,認真的找了一會兒才找到

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

三、閱讀代碼

1.


這是吳軍霖同學PTA中 刪除字符串中的子串的代碼。
功能:刪除字符串中的子串
好處:

  • 總共用了19行代碼,而我這道題用了30行代碼,可見他的代碼十分簡潔
  • 他的代碼用一層do-while實現循環查看字符串是否依然存在未刪減的子串,一層for尋找子串並刪除。刪除子串的方式構思巧妙,通過重構母串數組s來達成刪除子串的目的。效率較高,占用空間也較小。

2.


這道題是老師上課講解的,我重新寫了一遍。
功能:實現字符串的冒泡排序
好處:

  • 代碼量小,我做這道題寫了40多行,而這種方法只要27行,代碼十分簡潔
  • 新增一個頭文件string.h,調用庫函數strcmp和strcpy,減少代碼量的同時,讓代碼可讀性提高很多,看到函數名,就知道要做什么事。而且代碼封裝成函數來寫,使代碼明顯層次感多了起來,也進一步增加了可讀性。

四、本周學習總結

1.自己總結本周學習內容

  • 學習了指針的運用。比如指針偏移: p+i 即能實現。以及指針能夠指向字符串即p="abc" 這樣。
  • 學習了一個頭文件 string.h,該頭文件包含了許多字符串處理函數,例如 strcmp函數,功能為比較兩個字符串大小,格式為strcmp(str1,str2)即比較str1和str2,要注意返回值,一般情況下str1大於str2為1,等於為0,小於為-1。
    strcpy函數,功能為把一個數組中的字符串復制到另一個數組中去,格式為strcpy(str1,str2)即把str2中內容復制到str1中去。
    strcat函數,功能為連接兩個字符串,格式為strcat(str1,str2) ,即將str2連接到str1中。
    strlen函數,功能為計算字符串長度,不包括'\0',格式為strlen(str1) 即計算str1的長度

2.羅列本周一些錯題


這道題的第三個空,我會填成j<* n,答案應為j<* n-1,如果像我這么填,數組下標會越界導致錯誤。太過粗心。


免責聲明!

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



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