判断输入的字符串是否为“回文”|回文判断【C语言】
要求判断输入的字符是否为回文(“回文”,即正读反读都是一样的,例如noon, civic, radar或者风扇能扇风 ,奶牛产牛奶等都属于回文)
编写程序:
#include<stdio.h>
#include<string.h>
int main(void){int i, sign=1, length; //符号变量sign char str[10]; //定义一个字符数组 printf("输入长度不超过10的字符串:\n");gets(str); //直接接收一个字符串并存入数组(需先导入string.h) length=strlen(str); //测量所输入字符串的长度 for(i=0; i<length/2; i+=1){ if(str[i]!=str[length-2-i]) //从两端开始比较每一个字符是否相等 sign=0;break; //如果对比时出现不相等情况,使sign置0并立即跳出循环 }if(sign) printf("该字符串是回文"); //通过sign值判断该字符串是否为回文else printf("该字符串不是回文");return 0;
}
输入一个不是回文的字符串:
输入一个是回文的字符串:
========但该程序无法正确判断有中文字符的情况==========
一下程序可以实现对全中文字符串的判断和部分含其他字符的字符串的判断:
#include<stdio.h>
#include<string.h>
int main(void){int i, sign=1, length; //符号变量sign char str[20]; //定义一个字符数组 printf("输入长度不超过10个汉字:\n");gets(str); //直接接收一个字符串并存入数组(需先导入string.h) length=strlen(str); //测量所输入字符串的长度 if(str[i]!=str[length-2-i]&&str[i+1]!=str[length-1-i]){ //从两端开始比较每一个汉字(每两个字节)是否相等 sign=0;break; } //如果对比时出现不相等情况,使sign置0并立即跳出循环 }if(sign) printf("该字符串是回文"); //通过sign值判断该字符串是否为回文else printf("该字符串不是回文");return 0;
}
可以看出我只是修改了程序中对输入的字符串判断的部分。因为中文字符占两个字节(其他字符一般占一个字节),我们将两个连续的字符连起来判断即可。
但这样做也会有缺点,那就是无法对中文字符中又有其他字符的字符串进行正确的判断。
运行上面的代码就会出现下面两种“神奇”的情况:
情况1:有其除中文外的他字符,但正确判断了
情况2:有其除中文外的他字符,判断错误
其实这并不“神奇”,因为我们现在将每两个看成一个字符……点到为止,你可以自行思考。
判断输入的字符串是否为“回文”|回文判断【C语言】相关推荐
- uni判断输入的是否是数字_如何判断输入的字符串是否为数字?
问题阐述 在 C 中,如何判断输入的字符串是否为数字? 专家解答 1.知识点介绍 开发程序时,经常需要判断输入的字符串是否为数字,例如,判断输入的电话号码.货币金额和邮编等.在程序中判断是否为数字的方 ...
- C++【判断字符串回文】编程判断输入的一串字符是否为回文。所谓回文,是指顺读和倒读都一样的字符串,如:“level”,”ABCCBA”。
/*编程判断输入的一串字符是否为回文. 所谓回文,是指顺读和倒读都一样的字符串,如:"level","ABCCBA".*/ #include<iostre ...
- 编写程序判断输入的字符串是否是“回文”
编写程序判断输入的字符串是否是"回文"(顺读和倒读都一样的字符串,称"回文") 下面展示一些 代码及输出结果. 输入:abcba 输出:是回文 // An hi ...
- 输入一个字符串字,如果是“回文”输出“Yes”,否则输出“No”。所谓“回文”,是指顺读和倒读都一样的字符串。
输入一个字符串字,如果是"回文"输出"Yes",否则输出"No".所谓"回文",是指顺读和倒读都一样的字符串. 如: & ...
- python判断输入的字符串是否是回文联
#判断输入的字符串是否是回文联def huiwen(str1):str11=list(str1)str2=reversed(str11)if str11==list(str2):print('是回文联 ...
- swift 判断输入的字符串是否为数字
// 判断输入的字符串是否为数字,不含其它字符 func isPurnInt(string: String) -> Bool { let scan: Scanner = Scanner(stri ...
- C# 判断输入的字符串是否只包含数字和英文字母
/// <summary>/// 判断输入的字符串是否只包含数字和英文字母/// </summary>/// <param name="input"& ...
- JS判断输入的字符串是否是数字(正则表达式)
JS判断输入的字符串是否是数字(正则表达式) if (!checkNumber(gopage_val)) {alert("请输入正确页数(数字)");return false;} ...
- 使用JavaScript代码判断输入的字符串是否含有特殊字符和emoji表情代码实例
使用JavaScript代码判断输入的字符串是否含有特殊字符和emoji表情代码实例 js判断代码 js判断代码 reg = /[~#^$@%&!?%*]/gi; if (reg . test ...
- C# .NET 判断输入的字符串是否只包含数字和英文字母
FROM : https://www.cnblogs.com/ilookbo/p/4828722.html /// <summary>/// 判断输入的字符串是否只包含数字和英文字母/ ...
最新文章
- 2011年5月系统分析师考试
- JS收集:限制输入格式
- lucene 异常 Lock obtain timed out 解决方法
- 我如何看Spring5?
- java开发文档怎么写_程序员该不该写技术文档,怎么写文档,易懂又能提升自己...
- 织梦cms响应式影视传媒模板
- 白国涛:磐基PaaS平台推动中国移动数字化转型
- Linux学习笔记010---CentOS7下安装FTP服务
- java内存溢出模拟_模拟实战排查堆内存溢出(java.lang.OutOfMemoryError: Java heap space)问题...
- 手把手玩转win8开发系列课程(14)
- 一个类的两个接口有同名函数,JAVA如何调用
- 二级Visual Basic语言视频教程
- 微信小程序之自定义计时器
- Nodejs之NestJS之pkg打包
- 自定义 Spring Starter
- 安达智能通过注册:拟募资11.7亿 刘飞与何玉姣夫妇为大专学历
- 印度的软件神话真不能打破吗?
- 使用JMeter 录制脚本
- NC65发布webservice接口开发环境启动服务找不到接口
- 安卓桌面壁纸_火莹视频桌面:好玩的动态桌面壁纸软件,让你的桌面动起来