| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3145 人关注过本帖
标题:求助高手写一个判断输入是否为回文的C程序
只看楼主 加入收藏
kidd218
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2008-10-28
收藏
 问题点数:0 回复次数:4 
求助高手写一个判断输入是否为回文的C程序
问题的要求比较复杂

要求写3个函数,main, strip,reverse

strip函数的功能就是把你输入的东西变成标准形式(只包括小写字母或者数字),比如:输入The quick fox! 就转换为 thequickfox

reverse函数的空能就是把strip的输出结果颠倒,比如 hello would转换成 olleh

main函数的功能就是判断strip函数和reverse的输出结果是否相同,如果相同,比如:1234321则输出:是回文,否则输出:不是回文。

请高手指教!谢谢
搜索更多相关主题的帖子: 回文 判断 
2008-11-04 11:02
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
strip:修剪+大写转小写
reverse:前后下标依次向中间扫描

倚天照海花无数,流水高山心自知。
2008-11-04 11:50
fantasy_______
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2008-9-21
收藏
得分:0 
我以前写的,要求和你的不太一样,给你参考下吧,用栈实现的
/*该程序实现回文字符串的判断,两个字符创用'&'链接,'@'结束
'@'之后的字符将被忽略,'@'号可以省略,但链接符'&'不能省略
例如:abc&cba      将被判断为  满足条件
      abc&cba@     将被判断为  满足条件
      abc&cba@fjs  将被判断为  满足条件
      abc&cb       将被判断为  不满足条件
      abc&cb@a     将被判断为  不满足条件
      abccba       将被判断为  不满足条件
*/

#include <stdio.h>
#include <malloc.h>
#define MAXSIZE 50
#define OK 1
#define ERROR 0


typedef struct//定义一个栈
{
    char elem[MAXSIZE];
    int top;
}seqstack;


int judge()
{
    seqstack *x=(seqstack *)malloc(sizeof(seqstack));//创建一个栈
    x->top=-1;//栈置为空
    char ch;
    printf("请输入字符串:");
    ch=getchar();//输入一个字符(注:getchar()的用处是获取一个字符,但是在用户输入enter之前会把所有的字符存入缓存区,包括enter)
    while(ch!='&')//循环遇到&结束
    {
        if (ch=='\n')//根据题意,在遇到'&'之前如果用户输入了enter,则enter的之前的字符串一定不是回文字符串,直接返回ERROR
            return ERROR;
        x->top++;//否,则入栈
        x->elem[x->top]=ch;
        ch=getchar();//读取下一个字符(注:此时不需要用户输入,直接从缓存区读取字符)
    }
    //至此为止,所有'@'之前的字符均入栈,'&'则被存放在变量ch中
    ch=getchar();//获取'ch之后的'第一个字符
    while (ch!='@')//循环遇到'@'结束
    {
        if (ch==x->elem[x->top])//如果当前字符与栈顶字符相同,则出栈
        {
            x->top--;
        }
        else
            return ERROR;//不同,则说明不符合回文的条件,返回错误提示
        if (x->top==-1)//当栈空时,说明所有栈内的字符均已出栈
        {
            ch=getchar();//此时,获取下一个字符
            if (ch=='\n'||ch=='@')//若这个字符不是'@'或'\n',说明有多余的字符,例如这种情况:abc&cbaa,此时显然不满足回文条件
                return OK;
            else
                return ERROR;
        }
        ch=getchar();//从缓存区获取下一个字符
            
    }
}

int main()
{
    int a;
    a=judge();
    if (a==OK)
        printf("满足条件!!");
    else
        printf("不满足条件!!");
    getchar();
    return 0;

}
2008-11-04 12:13
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
给你个dp的最长字序列的提示
#include <iostream>
using namespace std;
int main()
{
    char *a="abcd";
    char *b="cabcd";
    int c[5][6];
    memset(c,0,120);
    for(int i=0;i<4;i++)
        for(int j=0;j<5;j++)
        {
            if(a[i]==b[j])
            {
                c[i+1][j+1]=c[i][j]+1;
            }
            else
                c[i+1][j+1]=c[i+1][j]>=c[i][j+1]?c[i+1][j]:c[i][j+1];
        }

    for(i=0;i<5;i++)
    {   
        for(int j=0;j<6;j++)
        printf("%4d",c[i][j]);
        printf("\n");
    }
    system("pause");
    return 0;
}

[[it] 本帖最后由 sunkaidong 于 2008-11-4 14:25 编辑 [/it]]

学习需要安静。。海盗要重新来过。。
2008-11-04 13:09
iamah
Rank: 1
等 级:新手上路
威 望:1
帖 子:69
专家分:0
注 册:2008-10-31
收藏
得分:0 
3#

栈!!!

2008-11-04 19:18
快速回复:求助高手写一个判断输入是否为回文的C程序
数据加载中...
 
   



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

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