【发布时间】:2013-04-10 08:58:15
【问题描述】:
我尝试编写用于测试字符串是否为回文的程序,但我总是得到输出,因为它不是回文。我的代码有什么问题?
#include <stdio.h>
#include <string.h>
int is_palindrome(int start, int end, char *str)
{
if (str[start] != str[end])
return 0;
else if (start == end)
return 1;
else
return is_palindrome(++start, --end, str);
return 0;
}
int main()
{
char str[20];
int length,start=0,end=length-1;
int result;
printf("Enter the String.\n");
fgets( str, sizeof( str ), stdin );
length = strlen(str);
if(is_palindrome(start,end,str))
printf("It's a palindrome!\n");
else
printf("It's not a palindrome! \n");
return 0;
}
【问题讨论】:
-
在调试器中逐行逐行执行代码。并使用你知道是回文的字符串,最好是短的,这样更快。
-
int length,start=0,end=length-1;长度在此处(还)没有值。 -
length未设置为任何值,因此end是垃圾。 -
我修复了这个问题,仍然得到相同的输出。
-
调试程序时会发生什么?
标签: c function recursion logic