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;
}

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值