HDU 2719 The Seven Percent Solution
水题,坑,开始数组给小了,一支PE,后开始用动态delete位置放错,放在while循环里面只申请了一片位置,多次释放会出错,一直WA
一开始的数组
#include <iostream> #include <cstdio> #include <cstring> using namespace std; char str[105]; int main(){ int len,i; while(gets(str)){ if(str[0]=='#') break; len = strlen(str); for(i=0;i<len;i++){ if(str[i]==' ') cout<<"%20"; else if(str[i]=='!') cout<<"%21"; else if(str[i]=='$') cout<<"%24"; else if (str[i]=='%') cout<<"%25"; else if(str[i]=='(') cout<<"%28"; else if(str[i]==')') cout<<"%29"; else if(str[i]=='*') cout<<"%2a"; else cout<<str[i]; } cout<<endl; } return 0; }
动态
#include <iostream> #include <cstdio> #include <cstring> using namespace std; char *str = new char[10000]; int main(){ int len,i; while(gets(str)){ if(str[0]=='#') break; len = strlen(str); for(i=0;i<len;i++){ if(str[i]==' ') cout<<"%20"; else if(str[i]=='!') cout<<"%21"; else if(str[i]=='$') cout<<"%24"; else if (str[i]=='%') cout<<"%25"; else if(str[i]=='(') cout<<"%28"; else if(str[i]==')') cout<<"%29"; else if(str[i]=='*') cout<<"%2a"; else cout<<str[i]; } cout<<endl; } delete [] str; return 0; }
用C++的string类,问题简单些
#include <iostream> #include <string> using namespace std; int main(){ string str; int len,i; while(getline(cin,str)){ if(str[0]=='#') break; len = str.size(); for(i=0;i<len;i++){ if(str[i]==' ') cout<<"%20"; else if(str[i]=='!') cout<<"%21"; else if(str[i]=='$') cout<<"%24"; else if (str[i]=='%') cout<<"%25"; else if(str[i]=='(') cout<<"%28"; else if(str[i]==')') cout<<"%29"; else if(str[i]=='*') cout<<"%2a"; else cout<<str[i]; } cout<<endl; } return 0; }