C 字符串中最长的回文及其';s长度

C 字符串中最长的回文及其';s长度,c,C,我有一个程序,它应该遍历一个字符串,识别可能的回文,检查它是否是回文,然后从palindromelength()返回长度,如果不是,则返回-1,并打印出字符串中最长的回文。 程序正在编译,但输出错误 这是我的密码 #include <stdio.h> #include <stdlib.h> #include <string.h> int palindromelength(char *str, int i, int j){ char *start = s

我有一个程序,它应该遍历一个字符串,识别可能的回文,检查它是否是回文,然后从
palindromelength()
返回长度,如果不是,则返回-1,并打印出字符串中最长的回文。 程序正在编译,但输出错误

这是我的密码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int palindromelength(char *str, int i, int j){
    char *start = str;
    char *end  = str + j;
    while(start < end){
        if(*start != *end)
            return -1;
        start++;
        end--;
    }
    return j-i+1;
}
void ispalindrome(char *str){
    int length = 1, max = 1, start =0, i, j;
    for(i=0; i<= strlen(str) -2; i++){
        for(j= 1; j <= strlen(str)-1; j++){
            if(abs(i-j) > 1){
                length = palindromelength(str, i, j);
                if( length> max){
                    max = length;
                    start = i;
                }
            }
        }   
    }
    if(max > 1){
        printf("Largest palindrome is ");
        for( ; start <= j; start++){
            printf("%c", str[start]);
            start++;
        }
    }
    else
        printf("No palindromes in string.");
}

int main(void) {
    char a[50];
    char *a2;
    printf("Enter a string\n");
    scanf("%[^\n]", a);

    int length = strlen(a) + 1;
    a2 = (char*)malloc(length*sizeof(char));
    strcpy(a2, a);
    free (a2);

    char *a3 = &a;
    ispalindrome(a3);

    return 0;
}
#包括
#包括
#包括
int回文长度(char*str,inti,intj){
char*start=str;
char*end=str+j;
while(开始<结束){
如果(*开始!=*结束)
返回-1;
启动++;
结束--;
}
返回j-i+1;
}
无效ispalindrome(字符*str){
int length=1,max=1,start=0,i,j;
对于(i=0;i最大值){
最大值=长度;
开始=i;
}
}
}   
}
如果(最大值>1){
printf(“最大回文是”);

对于(;start我假定int I是字符串的起始索引,int j是结束索引。如果是这样,请仔细查看您的palindromelength()函数的第一行。该函数是否可以从索引0以外的其他位置开始


至于实现isAlindrome()的方法函数,有许多算法可以检查输入是否是回文,我建议您四处看看,找出不同的方法。如果您的方法可行,那就太好了!可能最干净的方法是使用递归,尽管这需要一些思考。

了解如何使用调试器。请在编写下一个调试器之前先学习它er代码行。这是一项基本技能。@ThingyWotsit。我已经开始在我的个人笔记本电脑上学习,但是我忘记了我的笔记本电脑在外地,要到周末才能使用。因为现在我使用的是学校的电脑,如果我没有调试器,我的教授只允许我们使用语法突出显示和编译器。所以我来到这里是为了或者帮助。请告诉你的教授他/她在浪费每个人的时间。他/她应该在接下来的几节课上花在调试上,并允许你使用必要的工具。