C语言解决回文数、字符问题

我最初想的是从中间往两边比较,但同样要考虑两种情况,十分复杂,因此采用了两边向中间比较,先用strlen函数确定字符串的长度,接着开始比较,每比较一次,左边加1,右边减一继续比较。当左边等于右边或左边小于右边的时候停止比较,一旦发现左右的数值不相等,那么立即将一个变量的值改变并且跳出循环。
最后来到了判断部分,如果上面提到的那个变量的值没有被改变,那么此数为回文数,如果被改变,那么此数不是回文数。

#include<stdio.h>
#include<string.h>
int main()
{
    int b,c,start=0,end,d=1;
    char a[1000];
    gets(a); 
    b=strlen(a);
    end=b-1;
    while(start<end)
    {
    if(a[start]==a[end])
        {
            start++;
            end--;
        }
    else
        {
            d=0;
            break;
        }      
    }
    if(d==0)
    printf("false\n");
    else
    printf("true\n");
    return 0;

封装函数如下

#include<stdio.h>
#include<string.h>
int isPalindrome(char a[])
{
    int b,c,start=0,end,d=1;
    b=strlen(a);
    end=b-1;
    while(start<end)
    {
    if(a[start]==a[end])
        {
        start++;
        end--;
        }
    else
        {
        d=0;
        break;
        } 
    }
     if(d==1)
     {
         return 1;         //当是回文时返回1 
     }
     else
           return 0;          //当不是回文时返回0 
}
int main()
{
    int b;
    char a[1000];
    gets(a); 
    b=isPalindrome(a);
  if(b==1)
       printf("true\n");
  else
       printf("false\n");
    return 0;

至此,回文字符串得以判断,回文数问题得到解决。

无标签
评论区
头像