C 语言程序反转数字并检查回文数


2022 年 4 月 30 日, Learn eTutorial
1889

回文数是指其数字反转后仍保持不变的数字。为了更好地理解此回文 C 语言程序示例,我们始终建议您学习下面列出的 C 语言编程基础主题

什么是回文数或回文字符串?

这个 C 语言程序解释了如何反转给定数字并检查它是否是回文数。

回文数是指如果我们反向读取它,它仍然是相同的数字,这意味着如果从后向前或从前向后读取,数字或字符串将保持不变。

例如,'121' 是一个回文数。同样,在字符串 'madam' 或 'civic' 的情况下,它们是回文字符串。因此,要检查回文数,我们必须反转该数字中的数字,并检查两者是否相同。

如何在 C 语言中实现回文数检查?

在这个回文 C 语言程序中,我们将变量 'rev' 初始化为。接受数字作为输入后,将数字保存到临时变量中,然后使用 'while 循环' 直到数字大于。然后,要从数字中提取最后一位数字,使用与 '10' 的模运算符来获取数字(余数)。

使用 rev = rev * 10 + digit 将我们得到的余数添加到反转变量中。然后,要从数字中删除最后一位数字,将数字除以 10。最后,比较数字和反转后的数字,并使用 if 条件检查它们是否相同。如果两个数字相同,则打印该数字为回文数。否则,打印不是回文数。

算法

步骤 1: 包含头文件以访问库和内置函数。

步骤 2: 在 C 语言程序中声明和定义变量。

步骤 3: 使用 printfscanf 内置函数接受数字,并将该数字保存在变量中。

步骤 4: 将数字存储在临时变量中,以保持原始数字的安全。

步骤 5: 打开一个 While 循环,直到数字大于以反转数字。

步骤 7: 使用与 10模运算符获取数字的最后一位数字,并将其保存在变量中。

步骤 8: 使用公式 rev * 10 + Digit; 将数字添加到反转数字变量中(我们将数字乘以 10 以使添加的数字位置正确)。

步骤 9: 将数字除以 10 以删除最后一位数字,并继续该循环直到数字为

步骤 10: 使用 if 条件检查数字和反转后的数字是否相同。

步骤 11: 如果该条件匹配,则打印它是回文数,否则打印不是回文数

C 语言源代码

                                          #include <stdio.h>

void main() 
{
  int num, temp, digit, rev = 0;
  printf("Enter an integer\n");
  scanf("%d", & num);
  temp = num;                     /* original number is stored at temp */
  while (num > 0) 
     {
        digit = num;                 /* use mod operator to take the last digit of the number */
        rev = rev * 10 + digit;         /* add the digit to rev *10 to assign the digit to position */
        num /= 10;                            /* divide the number by 10 to remove the last digit */
     }
  printf("Given number is = %d\n", temp);
  printf("Its reverse is  = %d\n", rev);
  if (temp == rev)
    printf("Number is a palindrome\n");               /* check both variables are equal if so it is palindrome else not */
  else
    printf("Number is not a palindrome\n");
}
                                      

输出

RUN 1

Enter an integer
12321

Given number is = 12321
Its reverse is  = 12321
Number is a palindrome

RUN 2

Enter an integer
3456

Given number is = 3456
Its reverse is  = 6543
Number is not a palindrome