C语言 字符数组 回文判断

主要的思想是:

第一个与最后一个比较是否相同,以此类推。

每轮循环让前面的往后进,后面的往前进;

如果是回文,那么循环是可以走完的,最后j>=i;

如果中间出现了不相等的情况,直接跳出循环,最后j不满足j>=i的条件

以i与j的大小关系来判断是否是回文;

回文判断的代码如下:

#include<stdio.h>
int main(void){
	int i,j;
	char a[80];
    while((a[i++]=getchar())!='\n');
    a[--i]='\0';
   j=0;
   i=i-1;
    while(j<i){
   	if(a[j]!=a[i]) {
   		break;
	}
   	i--;
   	j++;
   }
   if(j>=i) 
      printf("YES");
   else 
      printf("NO");
return 0;
}

利用回文判断简单说一下字符数组需要注意的点

当不知道该字符数组需要存储多少个字符时可以使用

方法一:

int i=0;
a[i]=getchar();
while(a[i]!='\n'){
   i++;
   a[i]=getchar();
}

 先获得一个字符,由此进入循环,循环跳出的条件是输入回车;

方法二:

int i=0;
while((a[i]=getchar())!='\n'){
i++;
}
a[i]='\0';

虽然看起来不明显,但是a也是从a[0]开始存储的,对此有疑问的同学可以在循环后加上

printf("%d",s[0]);  测试一下;

想代码更加简洁的同学也可以这样写:

int i=0;
	char a[i];
    while((a[i++]=getchar())!='\n')
    a[--i]='\0';

对于方法二做一些说明:

对于\n:

这里的\n可以理解为循环结束的标志,也就是输入结束的标志,无论后面再输入多少字符都不会再存储到数组中;

当然,这个结束的标志也可以换成别的字符,但是我们在运行窗口会发现输入回车之后会直接显示出结果,根本就没有输入多余字符的机会,这是由于在C语言中,使用DOS窗口输入数据时,长度满足函数要求且按下了回车键才能结束本次输入。如果长度满足(没有超出)没有按下回车键,系统会继续等待输入直到按下回车键。这同时也是我们将结束标志换成别的字符后依然需要按下回车键后才能显示输出结果的原因。

测试实例:

为了看起来比较明显,这里将结束标志换成0;

这里输入的字符 在0后面的都没有输入到字符数组中。 

对于最后一位的\n换成\0:

\n是输入结束的标志,并不是需要存储的字符,所以将其替换成字符串结束符\0.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值