#include <iostream>
using namespace std;
int main()
{
char ch;
char str[85];
int i;
for (i = 0; i < 85; i++)
str[i] = '\0';
i = 0;
while ((ch = cin.get()) != '#')
{
str[i] = ch;
i++;
if (ch == '\n')
{
for (int j = 0; j <= i; j++)
{
switch(str[j])
{
case ' ':
cout << "%20";
break;
case '!':
cout << "%21";
break;
case '$':
cout << "%24";
break;
case '%':
cout << "%25";
break;
case '(':
cout << "%28";
break;
case ')':
cout << "%29";
break;
case '*':
cout << "%2a";
break;
default:
cout << str[j];
break;
}
}
for (int j = 0; j < 85; j++)
str[j] = '\0';
i = 0;
}
}
return 0;
}
// Wrong Answer. But I do not know why..
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char str[85];
int i;
int len;
for (i = 0; i < 85; i++)
str[i] = '\0';
while (cin.getline(str, 85))
{
len = strlen(str);
if (len == 1 && str[0] == '#')
break;
for (i = 0; i < len; i++)
{
switch(str[i])
{
case ' ':
cout << "%20";
break;
case '!':
cout << "%21";
break;
case '$':
cout << "%24";
break;
case '%':
cout << "%25";
break;
case '(':
cout << "%28";
break;
case ')':
cout << "%29";
break;
case '*':
cout << "%2a";
break;
default:
cout << str[i];
break;
}
}
cout << endl;
for (i = 0; i < 85; i++)
str[i] = '\0';
}
return 0;
}
// The true one. I do not know why...
杭电OJ-ACM steps 1.2.4
记录原因是第一段代码是Wrong Answer,而第二段Accepted。从我自己测试的结果来看,至少在terminal上呈现的结果是一样的,我暂时不知道这是为什么。我的猜测的输入的缓冲,字符,字符串,一行输入的问题。