一、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,如果像我這么填,數組下標會越界導致錯誤。太過粗心。