简单题 dbug几个小时···········
教训
~~~~~
错误代码
#include<stdio.h>
#include<string.h>
char a[10000];
int main()
{
while(gets(a))
{
int len;
len=strlen(a);
for(int i=0; i<len; i++)
{
if(a[i]=='m'||a[i]=='M')
{
if(a[i+1]=='a'||a[i+1]=='A')
{
if(a[i+2]=='r'||a[i+2]=='R')
{
if(a[i+3]=='s'||a[i+3]=='S')
{
if(a[i+4]=='h'||a[i+4]=='H')
{
if(a[i+5]=='t'||a[i+5]=='T')
{
if(a[i+6]=='o'||a[i+6]=='O')
{
if(a[i+7]=='m'||a[i+7]=='M')
{
if(a[i+8]=='p'||a[i+8]=='P')
{
i=i+8;
printf("fjxmlhx");
}
}
}
}
}
}
}
}
}
else
{
printf("%c",a[i]);
}
}
printf("\n");
}
return 0;
}
下面分析错误原因
如果只输入m由于先判断第一个if 进入if 可是后面的又不符合,于是下面的else也无法输出
m这个数相当于让吞了
肯定WA了
AC代码
#include <stdio.h>
#include <string.h>
int main()
{
char a[10000];
int s;
while(gets(a))
{
for(int i=0; i<strlen(a); i++)
{
s=0;
if(a[i]=='m'||a[i]=='M') s++;
if(a[i+1]=='a'||a[i+1]=='A') s++;
if(a[i+2]=='r'||a[i+2]=='R') s++;
if(a[i+3]=='s'||a[i+3]=='S') s++;
if(a[i+4]=='h'||a[i+4]=='H') s++;
if(a[i+5]=='t'||a[i+5]=='T') s++;
if(a[i+6]=='o'||a[i+6]=='O') s++;
if(a[i+7]=='m'||a[i+7]=='M') s++;
if(a[i+8]=='p'||a[i+8]=='P') s++;
if(s==9)
printf("fjxmlhx"),i+=8;
else
printf("%c",a[i]);
}
printf("\n");
}
return 0;
}