简单等级leetcode~回文数C语言版

题目描述:

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例

输入: 121
输出: true

C语言答题模板

bool isPalindrome(int x) {

}

解答

由于C语言中没有布尔类型,所以我们要自己定义stdbool.h头文件并导入程序中
stdbool.h头文件如下:

#ifndef __STDBOOL_H
#define __STDBOOL_H

typedef enum{
    false = 0,
    true = !false,
}bool;
#endif

然后把该文件放入安装路径的XXXX\VC98\Include中即可

完整代码

#include <stdio.h>
#include <stdbool.h>

bool isPalindrome(int x) 
{
    int temp,k;
    k = x;
    temp = 0;
    if(x<=0)
       return false;
    while(x)
    {
       temp = temp*10 + x%10;
       x = x /10;
    }
    
    if(k==temp)
       return true;
    else
       return false;
} 

int main()
{
    int m;
    

    scanf("%d",&m);

    if(isPalindrome(m))
    
       printf("%d是回文数\n",m);
    
    else
      printf("%d不是回文数\n",m);
    return 0;
}

另一种方式就是先判断出该整数的位数,然后再接着判断第一位和最后一位是否相同,第二位和倒数第二位是否相同........

#include <stdio.h>
#include <stdbool.h>

bool isPalindrome(int x) 
{
    int a[10];
    int i,j;
    i=0;

    if(x<0)
       return false;

    while(x)
    {
       a[i] = x%10;
       x = x/10;
       i++;
    }

    for(j=0;j<i;j++)
    {
      if(a[j]==a[i-j-1])
      {
        return true;
      }
      else
         return false;
    }

} 

int main()
{
    int m;
    scanf("%d",&m);
    if(isPalindrome(m))
       printf("%d是回文数\n",m);
    else
      printf("%d不是回文数\n",m);
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容