題目
先來說一下題目所表示的意思吧。
這個題目非常坑爹,我讀了一段時間才懂他在講什麼。a1=p之前的a的數量,a2是pt中間的a的數量,a3是t之後a的數量。a1,a2,a3必須滿足a3=a1*a2的關係才可以。
下面說一下這道題可能會出現的錯誤
1.誤解題目的意思
2.忘記判斷是否有pat之外的字元
3.忽略pt中間沒有a的情況
4.多個p或者多個t的錯誤情況忘記考慮
5.字串的長度不超過100指的是除了』\0』外最多可以有100個字元,所以字串的長度要定義為101,若是小於101,則會出現「段錯誤」的情況
6.scanf讀取待判斷字串的數量之後忘記getchar()來讀取走緩衝區中的回車鍵,這樣會造成第一次使用gets讀取字串時直接獨奏回車的情況
下面附上**
我是通過p,t所在字串的位置來確定a1,a2,a3的數量,再通過與字串的長度進行比較來判斷是否可以通過的。
#include
#include
intpd
(char
* p)
;int
main()
}intpd(
char
* p)
else
if(p[i]
=='t'
)else
if(p[i]
!='a'
) other++
; i++;}
while
(p[i]
!='\0');
if(len != find_t +
1+ find_p *
(find_t - find_p -1)
|| p !=
1|| other !=
0|| t !=
1|| find_t - find_p <=1)
else
printf
("yes\n");
}
PAT乙級 1003 我要通過
考察了分而治之的思想。題目的表述讓我聯想起表示式的bnf描述 乙個數是表示式 在表示式兩邊加個括號也是表示式 兩個表示式相加也是表示式 接下來你全懂了 實際上就是按照題目要求,將檢查指標細分,以求達到庖丁解牛 逐個擊破的效果。源 c include include 得到 答案正確 的條件是 字串中必...
1003 我要通過(PAT 乙級 )C語言
得到 答案正確 的條件是 1 字串中必須僅有 p a t這三種字元,不可以包含其它字元 2 任意形如 xpatx 的字串都可以獲得 答案正確 其中 x 或者是空字串,或者是僅由字母 a 組成的字串 3 如果 apbtc 是正確的,那麼 apbatca 也是正確的,其中 a b c 均或者是空字串,或...
PAT乙級考試 1003 我要通過!
題目 思路錄入資料 由於給出的字串數量不多,建立乙個二維陣列儲存原始的字串,錄入字串時,注意把每行最後的 n替換為 0,方便後續的判斷 再建立乙個陣列儲存結果用於列印。判斷字串是否符合要求 前兩個條件很好理解,這裡不再贅述 對於第三個條件,我們設串中 p 前面的 a 有l個,p 和 t 中間的 a ...