原文: https://beginnersbook.com/2015/02/c-program-to-check-if-a-number-is-palindrome-or-not/

如果我们反转数字,它也保持不变,该数字也称为回文数。例如,12321 是回文数,因为如果我们反转它的数字它仍然是相同的。在本文中,我们共享了两个 C 程序来检查输入数字是否为回文数。 1)使用while循环 2)使用递归。

程序 1:使用while循环检查回文

  1. /* Program to check if a number is palindrome or not
  2. * using while loop
  3. */
  4. #include <stdio.h>
  5. int main()
  6. {
  7. int num, reverse_num=0, remainder,temp;
  8. printf("Enter an integer: ");
  9. scanf("%d", &num);
  10. /* Here we are generating a new number (reverse_num)
  11. * by reversing the digits of original input number
  12. */
  13. temp=num;
  14. while(temp!=0)
  15. {
  16. remainder=temp%10;
  17. reverse_num=reverse_num*10+remainder;
  18. temp/=10;
  19. }
  20. /* If the original input number (num) is equal to
  21. * to its reverse (reverse_num) then its palindrome
  22. * else it is not.
  23. */
  24. if(reverse_num==num)
  25. printf("%d is a palindrome number",num);
  26. else
  27. printf("%d is not a palindrome number",num);
  28. return 0;
  29. }

输出:

C 程序:检查数字是否为回文数 - 图1

程序 2:使用递归检查回文

  1. #include<stdio.h>
  2. int check_palindrome(int num){
  3. static int reverse_num=0,rem;
  4. if(num!=0){
  5. rem=num%10;
  6. reverse_num=reverse_num*10+rem;
  7. check_palindrome(num/10);
  8. }
  9. return reverse_num;
  10. }
  11. int main(){
  12. int num, reverse_num;
  13. printf("Enter a number: ");
  14. scanf("%d",&num);
  15. reverse_num = check_palindrome(num);
  16. if(num==reverse_num)
  17. printf("%d is a palindrome number",num);
  18. else
  19. printf("%d is not a palindrome number",num);
  20. return 0;
  21. }

输出:

C 程序:检查数字是否为回文数 - 图2