【发布时间】:2018-10-07 16:29:15
【问题描述】:
我无法解决书中的问题。
问题是:
读取一个单词并向后输出字符串,并向后输出, 如果回文与原件相同,则应打印回文。
另外,不要使用诸如 string.h 之类的库,而应包括 stdio.h 仅限。
所以我创建了下面的代码。
#include <stdio.h>
int main()
{
char str[128];
char temp;
int leng = 0;
char a;
scanf("%s", str);
{
a = str;
}
while(str[leng] != '\0')
leng++;
for (int i = 0; i < leng/2; i++)
{
temp = str[i];
str[i] = str[leng - i - 1];
str[leng - i - 1] = temp;
}
printf("%s\n", str);
{
if (a == str)
printf("palindrome\n");
}
return 0;
}
倒序输出很容易解决,但我在打印回文的过程中阻塞了。我尝试只在输入和输出值相同的情况下打印回文。
但是,我使用的 if (a == str) 是用于比较地址值的代码。 另外,我认为将 strcmp 实现为循环会很有用,但我找不到使用 strcmp 将输入值与输出值进行比较的方法。
有没有办法比较C中的输入和输出值?或者有没有办法只在某些情况下(输入=输出)进行回文打印?
我想知道我是否可以在 C 中准确编码输入值 = 输出值。
注意,当地址值相同时,我的代码会打印回文。所以我还没有看到:(
【问题讨论】:
-
您需要将“是回文”的测试与“打印反向字符串”分开。测试“回文”的一种方法是反向复制字符串,然后查看副本是否与原始字符串相同。另一种方法是比较第一个和最后一个字符 - 如果它们相同,那么从最后一个字符开始的第二个和第二个字符等等,直到你到达中间。然后您可以打印原件和反面(或打印两次原件,因为您现在知道它与反面相同)。
标签: c string loops if-statement