| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 577 人关注过本帖
标题:懂的人帮帮忙啊,这个程序
只看楼主 加入收藏
cstudent
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-11-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
懂的人帮帮忙啊,这个程序
/* 本程序实现从字符串s中删除字符c */
#include<stdio.h>
#define MAXSIZE 1000
char squeeze(char s[],char c)
{
     int i,j;
     for(i = j = 0;s[i] != '\0';i++)
     if (s[i] != c)
         s[j++] = s[i];
     s[j] = '\0';
     return s[j];
     
}

int main()
{
    char a[MAXSIZE];
    char b;
    int i = 0;
    while((b = getchar()) != EOF)
   {
     a[i] = b;
     i++;
   }
    squeeze(a,'b');
    while(a[i] != EOF)
    {
               
          putchar(a[i]);
          i++;
    }
    return 0;
}
     
   
    哪里出问题了,运行不像我想的一样啊??怎么改,懂的人说一下,谢谢了


搜索更多相关主题的帖子: include return 字符串 
2011-11-02 15:09
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 楼主 cstudent
问题真多呀

总有那身价贱的人给作业贴回复完整的代码
2011-11-02 15:21
cstudent
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-11-2
收藏
得分:0 
回复 2楼 embed_xuel
那帮忙解决一下啊
2011-11-02 15:24
二点八度天空
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-11-2
收藏
得分:0 
#define MAXSIZE 1000
char squeeze(char s[],char c)
{
     int i,j;
     for(i = j = 0;s[i] != '\0';i++)
     if (s[i] != c)
         s[j++] = s[i];
     s[j] = '\0';
     return s[j];
     
}

int main()
{
    char a[MAXSIZE];
    char b;
    int i = 0;
    while((b = getchar()) != EOF)
   {
     a[i] = b;
     i++;
   }
    squeeze(a,'b');
    i = 0;
    while(a[i] != EOF)
    {
               
          putchar(a[i]);
          i++;
    }
    return 0;
}
2011-11-02 16:15
jcw08120110
Rank: 8Rank: 8
来 自:南京
等 级:蝙蝠侠
帖 子:272
专家分:742
注 册:2009-6-8
收藏
得分:0 
程序代码:
#include<stdio.h>
#define MAXSIZE 1000
void squeeze(char *s,char c) //没必要有返回值;用void
{
     int i,j;
     for(i = j = 0;s[i] != '\0';i++)
     if (s[i] != c)
         s[j++] = s[i];
     s[j] = '\0';
}

int main()
{
    char a[MAXSIZE];
    char b;
    int i = 0;
    while((b = getchar()) != EOF)
   {
     a[i] = b;
     i++;
     if(i==8){a[i]='\0';break;}  //总要想办法终止程序;
   }
    squeeze(a,'b');
    for(int k=0;a[k]!='\0';++k)putchar(a[k]); // 能用for语句就别用while了;这个更容易理解;
    return 0;
}

君生我未生 我生君以老
2011-11-02 16:25
jcw08120110
Rank: 8Rank: 8
来 自:南京
等 级:蝙蝠侠
帖 子:272
专家分:742
注 册:2009-6-8
收藏
得分:0 
程序代码:
#include<stdio.h>
int n;
#define MAXSIZE 1000
void squeeze(char *s,char c)
{
     int i,j,k=n;
     for(i = j = 0;i<k;i++)
     {
         if(s[i] != c)s[j++] = s[i];
         else n--;
     }
     s[j] = '\0'; 
}

int main()
{
    char a[MAXSIZE];
    char b;
    int i = 0;
    while((b = getchar()) != 'A')   //使用大写的A做终止符号!
   {
     a[i] = b;
     i++;n++;
   }
    squeeze(a,'b');
    for(int k=0;k<n;++k)putchar(a[k]);
    return 0;
}
这个程序使用一个全局量n这样阅读更方便 不过我还是不建议这种方案! 如果是C++使用向量再好不过;如果你想不使用全局量 还要数组数量 使用C的话 你可以自己写一个 结构体!  由数组和一个整形数组成!

[ 本帖最后由 jcw08120110 于 2011-11-2 16:51 编辑 ]

君生我未生 我生君以老
2011-11-02 16:46
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 6楼 jcw08120110
如果那个整数不是常数,这个方案就不可行了。他本质上要动态数组,这样无法做到,最终还是要从堆中分配数组空间,没什么实质性的改善。用标准库是最好的方案,原教旨C主义者不爽,就不爽去吧,做自己的事就行了。学编程是求解决问题,不是要卖弄花拳绣腿。

授人以渔,不授人以鱼。
2011-11-02 16:57
jcw08120110
Rank: 8Rank: 8
来 自:南京
等 级:蝙蝠侠
帖 子:272
专家分:742
注 册:2009-6-8
收藏
得分:0 
没必要动态数组 直接数组就可以啊
程序代码:
#include<stdio.h>
#define MAXSIZE 1000
struct Aa{
    char a[MAXSIZE];
    int n;
};
void squeeze(struct Aa &s,char c)
{
     int i,j,k=s.n;
    
     for(i = j = 0;i<k;i++)
     {
         if(s.a[i] != c)s.a[j++] = s.a[i];
         else s.n--;
     }
     s.a[j] = '\0'; 
}

int main()
{
    struct Aa aa;
    char b;
    int i = 0;
    while((b = getchar()) != 'A')
   {
     aa.a[i] = b;
     i++;if(i==1)aa.n=1;else aa.n++;
   }
    squeeze(aa,'b');
    for(int k=0;k<aa.n;++k)putchar(aa.a[k]);
    putchar('\n');
    return 0;
}

君生我未生 我生君以老
2011-11-02 17:11
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
那是浪费。用宏、又用n记录实用长度,不如在数组用特定符号仿字符创的'\0'机制标识结束,不用另设变量记忆。固定数组,无论开辟的空间有多大,都仍然是基于某种极限假设,尽量避免太多的假设。假设太多,出问题的机会就越大。

授人以渔,不授人以鱼。
2011-11-02 17:17
jcw08120110
Rank: 8Rank: 8
来 自:南京
等 级:蝙蝠侠
帖 子:272
专家分:742
注 册:2009-6-8
收藏
得分:10 
这是C不是C++ 如果C++ 你说用动态数组我同意 如果是C 我还是不看好的!使用malloc创建的对象是没办法初始化的!这点和new不同!@ 我很不喜欢创建的时候不初始化的函数! 这就代表危险!~  这里探讨的已经太远离楼主的主题了~~关键看程序用在哪里适合就行! 安全 效率 简单 永远是代码最重要的!~

君生我未生 我生君以老
2011-11-02 17:35
快速回复:懂的人帮帮忙啊,这个程序
数据加载中...
 
   



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

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