PAT乙级1033
1033 舊鍵盤打字 (20 分)
1 #include<bits/stdc++.h> 2 using namespace std; 3 string bad,n; 4 int main() 5 { 6 getline(cin,bad); 7 getline(cin,n); 8 int len=n.length(); 9 for(int i=0;i<len;i++) 10 { 11 if(bad.find(toupper(n[i]))!=string::npos) 12 continue; 13 if(isupper(n[i])&&bad.find('+')!=string::npos) 14 continue; 15 cout<<n[i]; 16 } 17 return 0; 18 }
舊鍵盤上壞了幾個鍵,于是在敲一段文字的時候,對應的字符就不會出現。現在給出應該輸入的一段文字、以及壞掉的那些鍵,打出的結果文字會是怎樣?
輸入格式:
輸入在 2 行中分別給出壞掉的那些鍵、以及應該輸入的文字。其中對應英文字母的壞鍵以大寫給出;每段文字是不超過 10?5?? 個字符的串。可用的字符包括字母 [a-z, A-Z]、數字 0-9、以及下劃線 _(代表空格)、,、.、-、+(代表上檔鍵)。題目保證第 2 行輸入的文字串非空。
注意:如果上檔鍵壞掉了,那么大寫的英文字母無法被打出。
輸出格式:
在一行中輸出能夠被打出的結果文字。如果沒有一個字符能被打出,則輸出空行。
輸入樣例:
7+IE. 7_This_is_a_test.輸出樣例:
_hs_s_a_tst1 #include<bits/stdc++.h> 2 using namespace std; 3 string bad,n; 4 int main() 5 { 6 getline(cin,bad); 7 getline(cin,n); 8 int len=n.length(); 9 for(int i=0;i<len;i++) 10 { 11 if(bad.find(toupper(n[i]))!=string::npos) 12 continue; 13 if(isupper(n[i])&&bad.find('+')!=string::npos) 14 continue; 15 cout<<n[i]; 16 } 17 return 0; 18 }
注意點:
1.string中find()返回值是字母在母串中的位置(下標記錄),如果沒有找到,那么會返回一個特別的標記npos。(返回值可以看成是一個int型的數)
2.int isupper(int c) 檢查所傳的字符是否是大寫字母。
3.toupper()參數小寫變成大寫,否則返回該參數。
4.盡量使用全局函數string類中的getline(),其讀入的第二個參數為string類型,不設置默認是遇到回車停止讀入操作
cin.getline是針對數組字符串的,以指定的地址為存放第一個讀取的字符的位置,依次向后存放讀取的字符,直到讀滿N-1個,或者遇到指定的結束符為止 全局函數的 getline(cin,str);處理后還留有結束符在輸入流中,故需要使用cin.get();//接受最后一個結束符,才能接受后面得輸入值。轉載于:https://www.cnblogs.com/zuiaimiusi/p/10647023.html
總結
- 上一篇: 水面无人艇局部危险避障算法研究 参考文献
- 下一篇: 并发请求多 服务器响应慢 post,从服