永发信息网

怎样判断输入的字符串是否为回文?

答案:2  悬赏:80  手机版
解决时间 2021-01-04 20:45
#include
#include
void main()
{
char str[20],copy[20];
char temp;
char *head,*tail;
printf("Please input a string:\n");
gets(str);
strcpy(copy,str);
head=str;
tail=str+strlen(str)-1;
while(head {
temp=*head;
*head++=*tail;
*tail--=temp;
}
if(strcmp(copy,str)==0)
printf("该字符串为回文。\n");
else
printf("该字符串不是回文。\n");
}
和下面的程序有什么区别?

#include
#include
void main()
{
char s[100],a[100];
char *p=s,*q=s+strlen(s)-1;
char temp;
gets(s);
strcpy(a,s);
while(p {
temp=*p;
*p++=*q;
*q--=temp;
}
puts(s);
if(strcmp(s,a)==0)
printf("该字符串为回文");
else
printf("该字符串不是回文");
}
为什么第一个是对的,而第二个运行时会输出乱码?
最佳答案
哥哥来说下~~~!

为什么第二个程序运行是错的呢?我们看上去几乎是一样的,但是仔细的看我们会发现指向字符串结尾字符的指针(在第一个程序中是指针变量tail,在第二个程序中是指针变量q)在初始化时并没有在同一时候,第一个程序是在输入了字符串数组str之后,再求它的长度然后给指针tail赋值;而第二个程序是在指针变量q定义时候就直接求出字符串数组s的长度然后直接初始化,这时候字符串s还没有输入,即没有确定,兄弟你可能会问,指针变量不是既可以在定义时候初始化,也可以在定义之后,再对它赋值吗?是,这确实没错,那么问题出在哪呢?

分析如下:

第一个程序之所以合理是因为在字符串数组确定之后才求其长度的,是合理的。
而第二个程序之所以不合理是因为在定义字符串数组s的时候没有初始化,然后就直接通过strlen函数求其长度,由于strlen是通过'\0'来确定字符串结束的,而这时由于s不确定,所以没有'\0',通过strlen求得的长度出现异常,就造成了指针变量q指向的位置不对。所以最后puts(s);打出的是乱码,而且会出现内存错误~!

兄弟明白?
全部回答
#include "stdio.h" #include "stdlib.h" #include "string.h" int judger(char a[]) { char *p=a; char *q=a+strlen(a)-1; while(p<=q) { if(*p!=*q) return 0; p++; q--; } return 1; } main() { char str[100]; scanf("%s",str); if(judger(str)) { printf("yes!\n"); } else { printf("no£¡\n"); } system("pause"); } 测试数据: louzhunihao no! 请按任意键继续. . . accepttpecca yes! 请按任意键继续. . . 楼主好运!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
9月份适合去哪里玩?
一个人在一个领域取得成绩已属不易,在多个领
接近中考,完成文后习题(2005年湖北黄冈中考
青藏铁路在建设中采用了“以桥代路”(如图)
读书郎和步步高学习机哪个好
拟人句 月亮在空中洒下光芒。
怎样换算米,分米,厘米,毫米的认识
下列词语中加点字的字音有误的一项是A. 猗郁
贵宾狗吃什么牌子的狗粮好
单选题下列说法中正确的是A.0℃的水放热,温
济源市济源刘斌电料这个地址在什么地方,我要
如图是“探究平面镜成像特点”的情景:两支__
竞彩改期怎么算
你能背起你们班同学吗?你能背起你爸爸吗?他
武汉建安驾校怎么样
推荐资讯
单选题下列说法与改善空气质量关系最为密切的
美姿美容养身会所地址好找么,我有些事要过去
口算我最棒.216÷1000=50×800=0.083×100=1
明朝做官的薪水怎么算
广汽传祺gs4手动挡低配多少钱2017款国产车值
AI-CS3中,求隐藏图层与锁定图层几种情况的快
340是什么材质
祛斑掉珈后擦美容院配的生长因子......
关于深山的诗句
六安市裕安区固镇派出所地址好找么,我有些事
皮肤是由什么组成的?
3D环绕歌曲有那些
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?