寻找下一个最小的回文,无限循环

时间:2015-07-11 06:18:53

标签: c arrays debugging

我正在编写一个代码来查找下一个最小的回文(整数)。我(必须)使用数组来处理如下的数字:

personDTOToPerson()

输出结果是无限循环。 对于例如对于输入45,输出必须为55,但结果为0000000 .. 请告诉我我错在哪里。

1 个答案:

答案 0 :(得分:0)

识别回文并不难:

int is_palindrome(int a[], int max) {
    for (int i = 0; i < max/2; i++) {
        if (a[i] != a[max-i-1]) {
            return 0;
        }
    }
    return 1;
}

增加值并不困难:

void next_value(int a[], int max) {
    int i = max - 1;
    a[i]++;
    while (i > 0 && a[i] > 9) {
        a[i] = 0;
        a[i-1]++;
        i--;
    }
}

很容易显示值:

void show(int a[], int max) {
    for (int i = 0; i < max; i++) {
        printf("%d", a[i]);
    }
    printf("\n");
}

有了这种支持,找到最小的以下回文是微不足道的:

void check_pal(int a[], int max) {
    while (!is_palindrome(a, max)) {
        next_value(a, max);
    }
    show(a, max);
}

顺便说一下,我会调用函数find_pal而不是check_pal