| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3191 人关注过本帖
标题:做一个判断函数, 判断一个字符串正反读都一样
只看楼主 加入收藏
yuantkong
Rank: 2
等 级:论坛游民
威 望:3
帖 子:82
专家分:86
注 册:2016-5-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:14 
做一个判断函数, 判断一个字符串正反读都一样
做一个判断函数, 判断一个字符串正反读都一样, 则输出yes, 不然输出 no

如果用指针字符串来做, 思路是什么?
另外做多个字符串输入反过来后的值, 然后跟正输入的比较???

比较用 strcmp ?
搜索更多相关主题的帖子: 字符串 
2016-05-31 16:37
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
strlen得到字符串长度,然后直接比较大小。第一个和最后一个,第二个和倒数第二个......
2016-05-31 16:41
yuantkong
Rank: 2
等 级:论坛游民
威 望:3
帖 子:82
专家分:86
注 册:2016-5-17
收藏
得分:0 
回复 2楼 grmmylbs
用循环 不就会产生两次比较, 到len 长度结束
for 还是 while ?

2016-05-31 16:50
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
到长度一半
2016-05-31 16:51
yuantkong
Rank: 2
等 级:论坛游民
威 望:3
帖 子:82
专家分:86
注 册:2016-5-17
收藏
得分:0 
回复 4楼 grmmylbs

偶数, 奇数怎么分, 取一半的话
2016-05-31 16:59
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
不用管啊,偶数正好比较,奇数最中间的哪个字母不用比
2016-05-31 17:04
yuantkong
Rank: 2
等 级:论坛游民
威 望:3
帖 子:82
专家分:86
注 册:2016-5-17
收藏
得分:0 
回复 6楼 grmmylbs

函数大概程序为

int panduan(char *p, int len)  //输入的字符串和长度
{
int i=0;
char *q;
q=p+len-1; // q指针指向最后的字符
while(i<len/2)
{
    if(*p+i != *q-i)  //首字符跟最后字符比较, 不同就返回1
    return -1;
    i++;
}
    return 1;     //相同返回1
}
2016-06-01 10:59
yuantkong
Rank: 2
等 级:论坛游民
威 望:3
帖 子:82
专家分:86
注 册:2016-5-17
收藏
得分:0 
回复 6楼 grmmylbs
编译结果是错的 , 总是输入 -1;
判断程序 该怎么设置??
2016-06-01 11:03
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:0 
程序代码:
int panduan(char *p, int len)  //输入的字符串和长度
{
    int i = 0;
    char *q;
    q = p + len - 1; // q指针指向最后的字符
    while (i<len / 2)
    {
        if (*(p + i) != *(q - i))  //首字符跟最后字符比较, 不同就返回1
            return -1;
        i++;
    }
    return 1;     //相同返回1
}
2016-06-01 11:08
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:7 
if(*p+i != *q-i) 改为if(*(p+i) != *(q-i))
用下面函数少一个参数,更符合回文字符性质
int panduan(char *p)
{
    int i,l;
    for(l=0;p[l];l++);  //得到字符长度
    l--;
    if(l<1)return 0; //字符长度小于2个都不算回文字符
    for(i=0;(i<l-i)&&p[i]==p[l-i];i++);
    if (i<l-i)return 0;
    else return 1;  //返回0不是,1是
}

[此贴子已经被作者于2016-6-1 11:26编辑过]


能编个毛线衣吗?
2016-06-01 11:24
快速回复:做一个判断函数, 判断一个字符串正反读都一样
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022420 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved