diff --git a/009_palindrome_number/Makefile b/009_palindrome_number/Makefile new file mode 100644 index 0000000..5036f09 --- /dev/null +++ b/009_palindrome_number/Makefile @@ -0,0 +1,2 @@ +all: + gcc -O2 -o test palindrome_number.c diff --git a/009_palindrome_number/palindrome_number.c b/009_palindrome_number/palindrome_number.c new file mode 100644 index 0000000..4b8d801 --- /dev/null +++ b/009_palindrome_number/palindrome_number.c @@ -0,0 +1,34 @@ +#include +#include +#include + +static int reverse(int x) +{ + int y = 0; + while (x) { + y = y * 10 + x % 10; + x /= 10; + } + return y; +} + +static bool isPalindrome(int x) { + if (x == 0) { + return true; + } + if (x < 0) { + return false; + } + return x == reverse(x); +} + +int main(int argc, char **argv) +{ + if (argc < 2) { + fprintf(stderr, "Usage: ./test number\n"); + exit(-1); + } + + printf("%s\n", isPalindrome(atoi(argv[1])) ? "true" : "false"); + return 0; +}