自己写时遇到的问题:
1 不知道scanf()函数的局限,即输入字符若有空格则默认输入完成。这道题要输入的是完整的句子,不能用这个;
2 输入数组可能没有默认结束符?不能将输入字符直接和START这样已知的字符进行对比,而应使用strcmp(sign,"START")==0;
3 这个题里用了在487-3279题里用过的方法,就是设置map函数实现对应,找到每个字母对应的字符;
4 遗留问题:标准答案说要用strcat()函数实现拼接,这里不懂为什么直接输出原来的不行》?运行代码也并没有出错?
总体来说虽然是个简单题,但也学到了一点新知识。
代码:
///找对应字母,原文字母用第五个字母替换
char map[27]="VWXYZABCDEFGHIJKLMNOPQRSTU";
int changeToOrig(char pass[])
{
int i=0;
while(i<strlen(pass))
{
if(pass[i]>='A'&&pass[i]<='Z')
pass[i]=map[pass[i]-'A'];
pass[i];
i++;
}
return 0;
}
void main()
{
int n=0,i=0;
char pass[201];
char sign[6];
for(;;)
{
gets(sign);
if(strcmp(sign,"START")==0)
{
gets(pass);
changeToOrig(pass);
printf("%s\n",pass);
}
if(strcmp(sign,"END")==0)
continue;
if(strcmp(sign,"ENDOFINPUT")==0)
break;
}
}