| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1153 人关注过本帖
标题:求助:用指针检查是否为回文
只看楼主 加入收藏
给力芬2010
Rank: 2
等 级:论坛游民
帖 子:48
专家分:71
注 册:2011-3-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
求助:用指针检查是否为回文
输入字符串检查是否是回文,不知道拿错了
#include<stdio.h>
#include<string.h>
int palingrome(char *string)
{
    int n,i;
    n=strlen(string);
    if(n%2==0)
    for(i=1;i<=n/2;i++)
   {
        if(*(string+i)==*(string+n-i))
    continue;
    else
    return 0;   
   }
   else
     for(i=1;i<=(n-1)/2;i++)
   {
        if(*(string+i)==*(string+n-i))
    continue;
    else
    return 0;   
   }
   return 1;  
}
int main(void)
{
    char *string;
    int a;
    string=NULL;
    puts("Please input one string:");
    scanf("%s",string);
    a= palingrome(string);
    printf("The final number is %d",a);
    return 0;
   
    }
搜索更多相关主题的帖子: input return 字符串 
2011-03-22 00:41
njkido
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:224
专家分:1184
注 册:2011-3-8
收藏
得分:5 
for(i=1;i<=n/2;i++)  //i不从0开始?
2011-03-22 01:15
newshou
Rank: 2
等 级:论坛游民
帖 子:10
专家分:28
注 册:2010-12-12
收藏
得分:10 
程序代码:
#include<stdio.h>
#include<string.h>
int palingrome(char *string)
{
    int n,mid;
    n=strlen(string);
    for(mid=(n-(n%2))/2;mid<n;mid++)
        {
            if(*(string+mid)!=*(string+n-mid-1))
                return 0;
        }
    return 1;
}
int main(void)
{
    char string[100];
    puts("Please input one string:");
    scanf("%s",string);
    puts(strcat((palingrome(string)?"":"not "),"palindromes"));
    return 0;
}
以上是呕心人的代码... ...
NO.1:string是指针变量,虽然你 string=NULL;给它置空,但是它还是没有指向一个可以存放数据的空间,这是要不得的。应用的时候给它分配一个数据空间。如:string=(char *)malloc(LEN);但是用后,别忘了释放空间
NO.2:正如1楼所说,for(i=1;i<=n/2;i++)  //i不从0开始? 字符串的第一个字符 永远是*(string+0) 最后一个必定是*(string+n-1) 不要问我为什么。。。因为他大爷的我也想问。
NO.3: 第一次 看到如似 printf(palingrome(string)?"":"not "); 这样的代码的时候,我也在想:这TMD。。。还能这样用?灵活很重要。。。

[ 本帖最后由 newshou 于 2011-3-22 02:28 编辑 ]
2011-03-22 02:26
pcbaichi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:486
专家分:1185
注 册:2010-11-13
收藏
得分:0 
论坛里有相同问题

免费赠送河蟹一只
2011-03-22 08:44
常建华
Rank: 2
等 级:论坛游民
帖 子:16
专家分:28
注 册:2011-3-20
收藏
得分:5 
指针string并没有指向任何东西。因此报错。
2011-03-22 09:15
给力芬2010
Rank: 2
等 级:论坛游民
帖 子:48
专家分:71
注 册:2011-3-17
收藏
得分:0 
#include<stdio.h>
#include<string.h>
int palingrome(char *string)
{
    int n,i;
    n=strlen(string);
    if(n%2==0)
    for(i=0;i<=n/2;i++)
   {
        if(*(string+i)==*(string+n-i-))
    continue;
    else
    return 0;   
   }
   else
     for(i=0;i<=(n-1)/2;i++)
   {
        if(*(string+i)==*(string+n-i-1))
    continue;
    else
    return 0;   
   }
   return 1;
   
}
int main(void)
{
    char string[10];
    int a;
    puts("Please input one string:");
    scanf("%s",string);
    a= palingrome(string);
    printf("The final number is %d",a);
    return 0;
   
    }
2011-03-22 15:31
xdzsm
Rank: 2
等 级:论坛游民
帖 子:137
专家分:99
注 册:2010-10-26
收藏
得分:0 
楼上代码第10行

if(*(string+i)==*(string+n-i-))

应该是
if(*(string+i)==*(string+n-i-1))

2011-03-22 15:58
feiyuanyong
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2013-11-24
收藏
得分:0 
不对啊,如果中间有不是字母的怎么办?比如:数判断用户输入的一个字母字符串是否是回文(正读反读一样,不考虑空格、标点和数字)?
2013-11-24 11:23
快速回复:求助:用指针检查是否为回文
数据加载中...
 
   



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

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