C语言-判断回文字符串(二)

C语言-判断回文字符串(二)7-2 判断回文字符串 (15分)输入一个字符串,判断该字符串是否为回文。回文就是字符串中心对称,从左向右读和从右向左读的内容是一样的。输入格式:输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。输出格式:输出在第1行中输出字符串。如果它是回文字符串,在第2行中输出Yes,否则输出No。输入样例1:level输出样例1:levelYe…

大家好,又见面了,我是你们的朋友全栈君。

7-2 判断回文字符串 (15 分)

输入一个字符串,判断该字符串是否为回文。回文就是字符串中心对称,从左向右读和从右向左读的内容是一样的。

输入格式:

输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。

输出格式:

输出在第1行中输出字符串。如果它是回文字符串,在第2行中输出Yes,否则输出No。

输入样例1:

level

输出样例1:

level
Yes

输入样例2:

1 + 2 = 2 + 1 =

输出样例2:

1 + 2 = 2 + 1 =
No

这道题刚上一篇博客写的题有点不一样,主要是算法上的不同,需求还是一样,都是判断字符串是不是回文字符串,上次写的博客的那道题是使用数组+指针来判断回文字符串,这道题没给我们限制算法,那么我们就用最原始的方法,直接上数组!!!

先看代码吧

#include<stdio.h>
int main(){
	int i,k,j;
	char line[80];
	
	k = 0;
	
	while((line[k] = getchar()) != '\n'){//读入字符串,以回车符结尾
		k++;//统计输入字符串的长度
	}
	
	i = 0;
	j = k;//保存k值
	
	k = k-1;//k = k-1的意思是,数组的下标最大是k-1
	
	while(i < k){
		if(line[i] != line[k])//字符串比较判断
			break;
		i++;
		k--;
	}
	
	for(int i = 0;i < j;i++){//输出字符串
		printf("%c",line[i]);
	}
	printf("\n");
	
	if(i >= k){打印判断结果
		printf("Yes\n");
	} else{
		printf("No\n");
	}
	
	return 0;
}

这道题的代码就相对比较容易理解一些了。首先是输入,输入以回车符结尾,并统计字符串长度,然后根据字符串长度进行首尾的字符比较。这个代码可能唯一难理解的地方是最后打印判断结果的地方,为什么是i >=k,这个你可以带入一个字符串进行验证一下,再回过头来想想,i是从零开始的,k是从最大下标k-1开始的,如果i<k了,那肯定说明在执行判断的时候因为字符不对影响等而终止了,说以只有当i >=k的时候才能正确判断字符串是不是回文。 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138863.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 完美解决C#中拖动splitContainer分割线时显示虚线问题

    完美解决C#中拖动splitContainer分割线时显示虚线问题完美解决C#中拖动splitContainer分割线时显示虚线问题

    2022年7月18日
  • linux安装siege

    linux安装siegesiege安装笔记本文介绍centos和ubuntu安装方法centos安装下载:[root@siege-4.0.4]#wgethttp://download.joedog.org/siege/siege-4.0.4.tar.gz解压:[root@siege-4.0.4]#tarzxvfsiege-4.0.4.tar.gz打开解压包:…

    2022年10月28日
  • mac电脑卸载软件_docker卸载镜像

    mac电脑卸载软件_docker卸载镜像  在Mac上卸载docker,首先要关闭docker软件,然后进入/usr/local/bin/目录,依次使用如下命令:##1)进入docker的安装目录cd/usr/local/bin/##2)删除与docker相关的文件夹sudorm-rfdocker*sudorm-rfcom.docker.*sudorm-rfhub-tool*sudorm-rfkube*sudorm-rfvpnkit*  如图(1)所示:图(1)完成删除

    2022年8月30日
  • UDP服务recvfrom函数设置非阻塞

    UDP服务recvfrom函数设置非阻塞本文先介绍我查看了的2篇文章,然后介绍linux和windows下的非阻塞设置。最后是非阻塞情况下接收情况的判断。2篇博文其实UDP的非阻塞也可以理解成和TCP是一样的,都是通过socket的属性去做。方法一:通过fcntl函数将套接字设置为非阻塞模式。方法二:通过套接字选项SO_RECVTIMEO设置超时。https://blog.csdn.net/daiyudong20…

    2022年7月23日
  • Unity DrawCall优化「建议收藏」

    Unity DrawCall优化「建议收藏」UnityDrawCall优化一MeshRenderer二SkinnedMeshRenderer三合并要求对比四总结五场景制作建议DrawCall优化合并,也叫批处理,即DrawCallBatching.通过减少Drawcall数提高性能。一MeshRenderer分为DynamicBatching和StaticBatching…

    2022年9月19日
  • python 图像处理库_Python图像处理库

    python 图像处理库_Python图像处理库1.如果没有安装库就先安装库fromPILimportImage2.操作fromPILimportImage#导入库Image.open(‘1.png’)#读取图片im=np.array(Image.open(‘1.png’))#查看图片的gbk的颜色数组b=im[::-1]#改图片gbk数组的排列new_im=Image.fromarray(b.astype(‘uint8’))#

    2022年10月10日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号