題意不重要 兩點: 這一題一開始想用帶空格的字符數組作,後來發現徹底不必(看代碼) 第二點 C++中有堆棧的結構,一開始是用數組作的 易錯之處: visit:一個是forward要清空 一個是先把當前的存進back 再輸入新的當前網頁 #include <iostream> #include <cstdio> #include <cstring> #include <string> #include <stack> using namespace std; string str; stack<string> backward; stack<string> forward; string current = "http://www.acm.org/"; int main() { //freopen("data.in", "rb", stdin); while(cin >> str) { if(str == "QUIT") break; else if(str == "VISIT") { backward.push(current); cin >> current; cout << current << endl; while(!forward.empty()) forward.pop(); } else if(str == "BACK") { if(!backward.empty()) { forward.push(current); current = backward.top(); backward.pop(); cout << current << endl; } else cout << "Ignored" << endl; } else if(str == "FORWARD") { if(!forward.empty()) { backward.push(current); current = forward.top(); forward.pop(); cout << current << endl; } else cout << "Ignored" << endl; } } return 0; }
//////////////////別人的ios
個人:數組
# include <iostream># include <cstdio># include <string># include <cmath>using namespace std;int main(){ string back[101]; string forward[101]; string cur="http://www.acm.org/"; string str; int b=0,f=0; cin>>str; while(str!="QUIT") { if(str=="VISIT") { back[b++]=cur; cin>>cur; f=0; cout<<cur<<endl; } else if(str=="BACK") { if(b==0) { cout<<"Ignored"<<endl; } else { forward[f++]=cur; cur=back[--b]; cout<<cur<<endl; } } else if(str=="FORWARD") { if(f==0) { cout<<"Ignored"<<endl; } else { back[b++]=cur; cur=forward[--f]; cout<<cur<<endl; } } cin>>str; } return 0;}