| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 744 人关注过本帖
标题:诚心求教字符串处理相关问题
只看楼主 加入收藏
youfeng243
Rank: 1
等 级:新手上路
帖 子:10
专家分:4
注 册:2010-4-25
结帖率:100%
收藏
已结贴  问题点数:15 回复次数:9 
诚心求教字符串处理相关问题
一道C语言很基础的题,关于字符串处理方面的,题目我直接复制过来
描述

输入一个字符串str和一个过滤字符串s(代表一个过滤表),将str中所有来自过滤表字符都滤除。

输入

输入数据有2行,第一行为str,第二行为s

输出

输出滤除后的字符串。

样例输入

asf$$a sf$$
$a

样例输出

sf sf
该题描述很简单,就是关于字符的过滤,我感觉我自己的代码考虑的应该已经全面了 但是老是wrong answer 不知道哪里没考虑周到,所以诚心求教C语言高手帮我查看代码,麻烦指出代码错误的地方,至于完成问题就请保留给本人自己解决,主要是请帮我检查出该问题中哪些需要考虑的 ,哪些是我未考虑到的,又要用到哪些字符串处理相关的技巧,本人诚心发帖求问,望高手赐教,至于灌水的就免了 ,在此先谢了   代码如下:
#include<iostream>
using namespace std;
int buff[1000];
int A[1000];
int main()
{
    int i;
    int e;
    int j;
    while(1)
    {
        i=0;
        while(1)
        {
            if((e=getchar())==EOF)
                return 0;
            if(e=='\n')
                break;
            buff[i++]=e;
        }
        j=0;
        while(1)
        {
            e=getchar();
            if(e=='\n')
                break;
            A[j++]=e;
        }
        int k;
        int t;
        for(k=0;k<j;k++)
        {
            for(t=0;t<i;t++)
            {
                if(A[k]==buff[t])
                    buff[t]=-1;
            }
        }
        j=0;
        for(k=0;k<i;k++)
        {
            if(buff[k]!=-1)
                A[j++]=buff[k];
        }
        for(k=0;k<j;k++)
            printf("%c",char(A[k]));
        printf("\n");
    }
    return 0;
}
///////////////网址:http://acm.tzc.
谢谢!
搜索更多相关主题的帖子: 诚心 字符 
2010-05-25 08:02
myhnuhai
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:3
帖 子:425
专家分:1725
注 册:2010-3-17
收藏
得分:2 
既然是字符串就应该声明并定义,char数组,不是int数组啊!要去上课了,回来再试试啊!呵呵呵

不要让肮脏的记忆,迷失了原本纯洁的心灵!
2010-05-25 13:10
韩明海
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:253
专家分:749
注 册:2010-4-3
收藏
得分:0 
定义字符串要用char,int浪费空间,你的字符串输入部分是重复的,可以做成一个子函数
2010-05-25 15:02
韩明海
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:253
专家分:749
注 册:2010-4-3
收藏
得分:13 
还有,尽量少用,不用全局变量,定义变量最好要有意义,便于别人理解记忆每个变量是干什么的,
char input_s[100],filtra_s[10],output_s[100];
int number_in;
int number_fil;
int number_out;
int i,j;//一般就是用来for循环计数的
2010-05-25 15:08
youfeng243
Rank: 1
等 级:新手上路
帖 子:10
专家分:4
注 册:2010-4-25
收藏
得分:0 
回复 4楼 韩明海
你们说的都是编程方面的细节,对于我用int 型 主要是方便处理,在接收是我用的是getchar,所以就直接用int型来存取,而且在后面转换输出的时候 我要做标记,如果用char型的话就不能使用负数,我主要是想用负数作为标记,但主要问题都不是这些,问题是 我不知道哪里没考虑全面 而导致提交题目的时候出现wrong answer ,不知道是什么地方没考虑到,
2010-05-25 17:47
韩明海
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:253
专家分:749
注 册:2010-4-3
收藏
得分:0 
      2 #include<stdio.h>
      3 int buff[1000];
      4 int A[1000];
      5 int main()
      6 {
      7     int i;
      8     int e;
      9     int j;
     10     while(1)
     11     {
     12         i=0;
     13         while(1)
     14         {
     15             if((e=getchar())==EOF)
     16                 return 0;
     17             if(e=='\n')
     18                 break;
     19             buff[i++]=e;
     20         }
     21         j=0;
     22         while(1)
     23         {
     24             e=getchar();
     25             if(e=='\n')
     26                 break;
     27             A[j++]=e;
     28         }
     29         int k;
     30         int t;
     31         for(k=0;k<j;k++)
     32         {
     33             for(t=0;t<i;t++)
     34             {
     35                 if(A[k]==buff[t])
     36                     buff[t]=-1;
     37             }
     38         }
     39         j=0;
     40         for(k=0;k<i;k++)
     41         {
     42             if(buff[k]!=-1)
     43                 A[j++]=buff[k];
     44         }
     45         for(k=0;k<j;k++)
     46             printf("%c",(char)A[k]);//改过
     47         printf("\n");
     48     }
     49     return 0;
     50 }
这是我在Linux下运行的,一切正常
2010-05-25 18:03
youfeng243
Rank: 1
等 级:新手上路
帖 子:10
专家分:4
注 册:2010-4-25
收藏
得分:0 
以下是引用韩明海在2010-5-25 18:03:26的发言:

      2 #include
      3 int buff[1000];
      4 int A[1000];
      5 int main()
      6 {
      7     int i;
      8     int e;
      9     int j;
     10     while(1)
     11     {
     12         i=0;
     13         while(1)
     14         {
     15             if((e=getchar())==EOF)
     16                 return 0;
     17             if(e=='\n')
     18                 break;
     19             buff=e;
     20         }
     21         j=0;
     22         while(1)
     23         {
     24             e=getchar();
     25             if(e=='\n')
     26                 break;
     27             A[j++]=e;
     28         }
     29         int k;
     30         int t;
     31         for(k=0;k
感谢你真诚的为我解答 这个问题我在你告诉我之前也独自解决了  最近没上论坛 所以没看到你的恢复 不好意思  好了 现在问题解决了 也要收贴了 谢谢大家
2010-05-27 23:20
super1107
Rank: 2
等 级:论坛游民
帖 子:5
专家分:12
注 册:2010-5-11
收藏
得分:0 
顶顶
2010-05-28 08:38
simen1986
Rank: 2
等 级:论坛游民
帖 子:12
专家分:64
注 册:2010-5-25
收藏
得分:0 
   这个感觉不是最优的算法。
  双for。很费时的。。
2010-05-28 09:45
韩明海
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:253
专家分:749
注 册:2010-4-3
收藏
得分:0 
回复 9楼 simen1986
本人能力有限,非常期待你写一个不费时的。
2010-05-28 12:24
快速回复:诚心求教字符串处理相关问题
数据加载中...
 
   



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

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