【发布时间】:2016-01-28 14:09:29
【问题描述】:
我不确定为什么这段代码不起作用。
此代码应该例如将字符串中的所有 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与d和d与c切换。 -
这只是一个例子。用户应该将他输入的任何字母切换为另一个字母,反之亦然。
-
你能把每次迭代的东西都打印出来看看有什么吗?
-
您需要在
scanf("%c", &x[i]);这一行中的%c之前有一个空格,因此它读取scanf(" %c", &x[i]);和下一行相同。这是为了去除输入缓冲区中在前一个scanf之后留下的空白。 -
@WeatherVane 你是个天才。非常感谢您的帮助!
标签: c string switch-statement swap letters