回文——递归调用指针(下一个)

回文的意思:首尾相等(回文数_百度百科

一、简单写法

1.定义字符数组:char s[100];

2.gets,puts直接输入输出一串字符

3.外面的while(1),方便反复调试

注意:判断首尾相等

//简单写法 
#include <stdio.h>
int main()
{
	 char s[100];
	 while(1)
	 {
 	 printf("Enter a string : ");
	 gets(s);
	 printf("\n\n");
	 puts(s);
	 
	 //判断首尾是否相等
		int i,n=0,j=1;
	    while(s[n])/*将指针p置位到字符串末尾,并统计字符数*/
	    {
	        n++;
	    }
	    for(i=0;i<n/2;i++)/*循环比较字符*/
	        if(s[i]==s[n-1-i]);/*相同,什么都不作*/
	        else  /*不同,直接跳出循环*/
	        j=0;
		     if(j==0)
				printf("NO\n");
			 else
				printf("YES\n"); 
 	}
 		 return 0; 
}

二、复杂一点(最好学过一点指针和传参)

指针代码+转换公式_jhdragon1314的博客-CSDN博客

可以观察上面判断首尾相等的函数用了两次,可以定义函数,并调用,使主函数中的代码少一点

一、调用函数

1.观察发现:代码将数组s直接传给了函数fun,并将数组s给了指针str,str[n]==s[n]

 

 二、调用函数尽量写在主函数之前,可以直接调用

    如果写在最后,需要在主函数前声明,再调用

三、完整代码

//指针调用 
#include <stdio.h>
int fun(char *str)
{

	int i,n=0;
    while(str[n])/*将指针p置位到字符串末尾,并统计字符数*/
    {
        n++;
    }
    for(i=0;i<n/2;i++)/*循环比较字符*/
        if(str[i]==str[n-1-i]);/*相同,什么都不作*/
        else  /*不同,直接跳出循环*/
         return 0;
      return 1;

}

int main()
{
	 char s[100];
	 
	 while(1)
	 {
 	 printf("Enter a string : ");
	 gets(s);
	 printf("\n\n");
	 puts(s);
	     if(fun(s))
			printf("YES\n");
		 else
			printf("NO\n"); 
 	}

    		 return 0; 
}

若文章有错,欢迎私信告诉,有问题亦可私信提问

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值