问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c++ 判断一个字符串是否是回文 程序怎么写

发布网友 发布时间:2022-04-30 04:15

我来回答

3个回答

热心网友 时间:2023-10-11 22:24

【思路解析】
所谓的回文字符串就是正着念和倒着念是一样的字符串,比如:ABA或ABBA都是回文字符串。判断回文字符串的办法就是成对比较,就是把字符串的第一个字符和倒数第一个字符比较,把第二个字符和倒数第二个比较……,以此类推。所以要写一个判断字符串是否回文的函数要先算出字符串S的字符数n,然后把S[0]和S[n-1-0]比较,S[1]和S[n-1-1]比较,S[2]和S[n-1-2]比较,……,直到把S[n/2]和S[n-1-n/2]比较,只要发现一个不同就可以判断不是回文,否则就是回文。这里要特别说明两点:一是为什么S[0]要和S[n-1]比较而不是S[n]比较呢?因为数组的下标都是从0开始的,也就是说,有6个字符的字符串S,事实上是串下标是从S[0]-S[5],而不是S[6],所以每次比较n要减1。二是为什么最后一个比较是直到S[n/2],而不是到最后一个字符?这是因为字符串的前半段每个字符都是和后半段对应的字符相比较的,比较完了前半段也就比较完了后半面。根据上面这个思路,代码如下:

【程序代码】
#include <iostream>             //控制台操作头文件
#include <string.h>             //字符串操作头文件 

bool Hw(char s[])               //检测是否回文的函数
{int i,n=strlen(s);             //循环变量和字符串长度
 if(n<=1) return false;         //空串或只有一个字符不算回文串
 for(i=0;i<n/2;i++)             //用循环逐个检测
     if(s[i]!=s[n-1-i])         //如果对称位置的字符不一样
        return false;           //结束函数并返回假
 return true;}                  //检测完还没发现不同就返回真
 
int main()                              //主函数
{int i;                                 //循环变量
 char S[255];                           //用于存放字符串的数组
 
 for(;;)                                //弄一个无穷循环 
    {printf("请输入字符串(END结束):");  //显示提示信息
     scanf("%s",S);                     //从键盘输入字符串到S中 
     if(strcmp(S,"END")==0) break;      //如果输入END退出循环
     if(Hw(S))                          //用自定义函数判断是否回文
        printf("这是回文字符串\n\n");   //显示判断结果
     else printf("这不是回文字符串\n\n");}
 printf("\n");                          //输完所有数再空一行
 system("PAUSE");                       //暂停屏幕以便查看显示结果
 return 0;}                             //结束程序
 
【运行结果】
以上程序在DEV C++中运行通过,运行结果截图如下:

热心网友 时间:2023-10-11 22:24

#include <stdio.h>
#include <string.h>
int main (void)
{
char a[20],b[20];
int i,flag;
printf ("please input:");
gets (a);
for (i=0; i<strlen (a)/2; i++)
{
*(b+i) = *(a+strlen (a)-i-1);
if (*(a+i)==*(b+i))
flag = 1;
else
flag = 0;
    }
    if (flag)
printf ("Yes!是回文数\n");
    else
printf ("no!不是回文数\n");
return 0;
}

热心网友 时间:2023-10-11 22:25

指针,从两头跑。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? C++数组判断回文字符串(程序有错误,请求更正) C语言 判断给定字符串是否是回文 使用字符数组编程判断一个字符串是否回文,用数组方法 斯沃琪手表算什么档次 gl是什么品牌的包包 41寸民谣吉他的实际长度是多少厘米? 如何保护小米游戏本的键盘? 3000块钱以下能买什么女包 姬龙雪太阳镜怎么样 请大家介绍一些商场里面常见的女包的牌子,要实用的,不要那些大牌, 姬龙雪的鞋子怎么样? 什么牌子女士包好看 姬龙雪包和蔻弛包那个好 姬龙雪这个牌子的包算什么档次的? asp.net 奇怪现象 Excel工作表密码忘记了怎么打开啊? 老公梦见他出轨了、被老婆知道、两女的厮打在一起、老公在一旁笑。谁给解解梦啊 茶桌旁边空了的是什么用处 茶桌和餐桌高度一样吗 我到底是要买茶几还是茶桌呢,什么叫茶几茶桌 C语言 判断回文字符串 输入一个不含空格、回车的字符串,存入数组string[80],判断该字符串是否是回文? C语言中判断一个字符串是否为回文的问题 什么叫企业战略变革 如何判断一个字符串是不是回文串 时间复杂度o 空间复杂度o 战略变革的概念 用C语言写一个程序判断一个字符串是否是回文 什么是企业战略变革? 荡指什么生肖 战略变革的原因、战略变革的方法和战略变革的管理理论 十二生肖里荡比喻那只? 荡猜什么生肖? 荡猜什么生肖 荡为寒烟比喻什么动物 战略实施与战略变革是什么关系 荡春,是指什么动物 在企业战略管理中,对战略变革的定义 三心二意春心荡是什么动物 怎么可以不当兵 跌荡不羁形容什么生肖动物?