if 和 else if 的执行结果不同求教
在校OJ上做一道密信的题,题目见下Description
这里有一封加密过的信,需要你翻译。
信的内容为一行无空格的小写字符串。
翻译规则如下:
b 代表 ' '
q 代表 ','
t 代表 '!'
m 代表 l
i 代表 e
c 代表 a
a 代表 c
e 代表 i
l 代表 m
Input
输入包含多组测试用例。
每组测试用包含一个长度不超过10000的字符串。
Output
对于每组测试用例,输出翻译后的结果。
Sample Input
pmicsibforgevibliqbscrct
ebmovibyout
Sample Output
please forgive me, sara!
i love you!
下面是我写的代码
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
static char a[10000];
while(gets(a)!=NULL)
{
for (int t=0; t<strlen(a); t++)
{
if (a[t]=='b') a[t]=' ';
if (a[t]=='q') a[t]=',';
if (a[t]=='t') a[t]='!';
if (a[t]=='m') a[t]='l';
if (a[t]=='i') a[t]='e';
if (a[t]=='c') a[t]='a';
if (a[t]=='a') a[t]='c';
if (a[t]=='e') a[t]='i';
if (a[t]=='l') a[t]='m';
}
puts(a);
}
return 0;
}
可是我将示例数据输入之后却发现输出了这个结果
pmicsi forgivi mi, scrc!
看来是仅仅把b换成了空格。
当我把从第二个if开始都加上else之后就正常了……
请教一下这是为什么呢?不胜感激!!!!