C:检查3位数字是否是回文

时间:2016-01-17 13:24:47

标签: c function if-statement palindrome

所以我写了一个程序,该程序从用户那里得到一个3位数的数字并检查它是否是回文:

#include <stdio.h>
#include <stdlib.h>
int isPalindromic(char q, char w, char e); 
int main()
{
    int res;
    char a,b,c;

    printf("Give me a three digit number\n");
    scanf("%c %c %c", &a, &b, &c);
    res = isPalindromic(a,b,c);

    if (res == 1)
       printf("damn son that's palindromic how u do dat u a haker!!!\n");
    else
        printf("B O O O  L O S E R\n");

    system("pause");
    return 0;   
}

int isPalindromic(char q, char w, char e)
{
   int result;
   if (q == e)               
       result = 1;
    else
        result = 0;
    return result;                     
}

由于懒惰,我想把每个数字作为一个字符而不是一个整数,然后isPalindromic函数将第一个数字与第三个数字进行比较。

它就像一个魅力,但它有任何弱点或某事吗? 我做错了什么?

1 个答案:

答案 0 :(得分:0)

你可以通过编写一个检查任何字符串是否为回文的函数来使程序更通用:

int ispal(const char *s)
{
    int start, mid, end;

    mid = strlen(s) / 2;
    end = strlen(s) - 1;

    for (start = 0; start < mid; ++start, --end)
        if (s[start] != s[end])
            return 0;      /* not palindrome */

     if (start == mid)
         return 1;         /* palindrome */
}

然后,您可以检查用户输入是否是3位数字(isdigitstrlen),并且只有当它是,将其作为输入传递给ispal函数。这种通用方法允许您的应用程序在将来更具可扩展性。

编辑:不要使用system("pause"),因为并非所有系统都支持pause命令。