我不确定为什么这段代码不起作用。
例如,此代码应该将字符串中的所有 a 切换为 b,将所有 b 切换为 a 并打印结果。
输入:
abcd
a b
c d
预期输出:
badc
代码:
int main()
{
int n, m, i, j;
scanf("%d %d", &n, &m);
char s[n+1], x[m+1], y[m+1];
scanf("%s", s);
for(i=0; i<m; i++)
{
scanf("%c", &x[i]);
scanf("%c", &y[i]);
}
for(j = 0; j < m; j++)
{
for(i = 0; i<n; i++)
{
if(s[i] == x[j])
s[i] = y[j];
else if(s[i] == y[j])
s[i] = x[j];
}
}
printf("%s", s);
return 0;
}
正如我评论的那样,您需要在这些行中的 %c
之前留一个空格
scanf("%c", &x[i]);
scanf("%c", &y[i]);
防止 %c
格式类型读取先前 scanf
调用留在输入缓冲区中的空白。改为
scanf(" %c", &x[i]);
scanf(" %c", &y[i]);
我是一名优秀的程序员,十分优秀!