标题:判断输入的字符串是否是回文!!是如何修改的很急!拜托了
只看楼主
阿贞小朋友
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-3-16
结帖率:100%
 问题点数:0 回复次数:5 
判断输入的字符串是否是回文!!是如何修改的很急!拜托了
#include <stdio.h>
#include <ctype.h>
#define SIZE 81
int main (void)
{
    int i=0,j;//循环变量
    char original[SIZE] ;
    char *p ;
    char ch ;
    printf("Enter a massage :");
    p = original ;
    while((ch = getchar())!='\n')
    {
        
        if(isalpha(ch) != 0)
        {
            ch = tolower(ch);//大写转小写
            *p = ch;
            original[i] = ch;
            i ++ ;
            p++;
        }
        else
            continue;

    }

    for(j=0,p--;p >= &original[0];j++,p--)
    {
        if(original[j] == p )
             continue;
        else
            break ;
    }

   

    if(p<&original[0])
    {
        printf(" Palindrome.\n");   
    }
   
        else
   
            printf(" Not alindrome.\n");
        

    return 0 ;
}


这个代码的编译时通过的,但是判断出来的又问题,所以不知道该怎么修改!

He lived as a devil, eh?  输入句应该打印出 Palindrome.
Madam, i am Adam .        输入句应该打印出NOT Palindrome 。
搜索更多相关主题的帖子: continue original include 字符串 Enter 
2014-04-28 22:20
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
得分:0 
original[j] == p ...


莫问前尘有愧,但求今生无悔
2014-04-28 23:25
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
程序代码:
#include <stdio.h>

bool s(char* source)
{
    char* pb=source;
    while(*source!='\0') source++;
    char* pe=--source;
    while(pb<=pe)
    {
        if(*pb!=*pe) return false;
        pb++;
        pe--;
    }
    return true;
}

int main()
{
    char* s1="ab5cde6edc5ba";
    char* s2="3eru900jsiop";
    bool f;
    f=s(s1);
    if(f==true) printf("%s  是一个回文字符串\n",s1); else  printf("%s  不是一个回文字符串\n",s1);
    f=s(s2);
    if(f) printf("%s  是一个回文字符串\n",s1); else  printf("%s  不是一个回文字符串\n",s2);
    return 0;
}

DO IT YOURSELF !
2014-04-29 09:20
kwxx
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:309
专家分:913
注 册:2009-5-11
得分:0 
程序代码:
#include <stdio.h>
int main (void)
{
    int flag=0;
    char a[100]="He lived as a devil, eh?",c,*i,*j ;

    //gets(a);

    for(i=j=a;c=*i;i++)            //将小写转大写,并去掉“英文字母和空格”以外的字符
    {
        if(c>='a'&&c<='z' )
        {
            *j++=*i-32;
        }
        else if(c>='A'&&c<='Z')
        {
            *j++=*i;
        }
    }
    *j--='\0';


    for(i=a;i<j;i++,j--)   //类似于逆序,比较是否为回文
        if(*i!=*j)
        {
            flag=1;
            break;
        }

    if(flag==0)
        printf(" Palindrome.\n");  
    else
        printf(" Not alindrome.\n");
    return 0 ;
}
2014-04-29 10:09
fjy2shy
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-4-29
得分:0 
#include<stdio.h>
int main(){
    int a,b,c,e,i,j,k;
    int d[120];
    printf("Enter a number:\n");
    scanf("%d",&a);
    e=a;
    for(i=0;;i++)
    { c=a%10;
      b=a/10;
      a=b;
      d[i]=c;
      if(b==0)
       break;
    }
    k=i;
    for(j=0;j<=k;j++,i--)
    { if(d[j]!=d[i])
        break;
      else
       continue;
    }
    if(j>k)
        printf("%d是回文数\n",e);
    else
        printf("%d不是回文数\n",e);
    return 0;
}
2014-04-29 10:26
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
以下是引用fjy2shy在2014-4-29 10:26:59的发言:

#include<stdio.h>
int main(){
    int a,b,c,e,i,j,k;
    int d[120];
    printf("Enter a number:\n");
    scanf("%d",&a);
    e=a;
    for(i=0;;i++)
    { c=a%10;
      b=a/10;
      a=b;
      d=c;
      if(b==0)
       break;
    }
    k=i;
    for(j=0;j<=k;j++,i--)
    { if(d[j]!=d)
        break;
      else
       continue;
    }
    if(j>k)
        printf("%d是回文数\n",e);
    else
        printf("%d不是回文数\n",e);
    return 0;
}


严重跑题

DO IT YOURSELF !
2014-04-29 10:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-430789-1-1.html




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

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