| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 994 人关注过本帖
标题:删除s1数组里与s2数组相同的字符。有一行代码有点不明白
取消只看楼主 加入收藏
a132266
Rank: 2
等 级:论坛游民
帖 子:86
专家分:20
注 册:2015-3-26
结帖率:66.67%
收藏
 问题点数:0 回复次数:7 
删除s1数组里与s2数组相同的字符。有一行代码有点不明白
/**************************************************************************
    类型:<c程序设计语言(第二版.新版)> 练习 2-4
    名称:lx.c
    author: wubenzhimu
    data:   2012.11.16
    功能:重新编写函数squeeze(s1,s2),将字符串s1中任何与字符串s2中字符匹配
    的字符都删除。
***************************************************************************/

#include <stdio.h>
#define MAXLINE 1000

/* 比较两个字符串,删除匹配的字符 */
void squeeze(char s1[], char s2[]);

int main()
{
    char s1[MAXLINE] = {'a','b','c','d','e','f','g','h','i','k',0};
    char s2[MAXLINE] = {'a','c','e','g','i',0};
   
    squeeze(s1, s2);
    printf("%s\n", s1);
    return 0;
}

void squeeze(char s1[], char s2[])
{
    int i, j, k;
    i = j = k = 0;
   
    while(s2[j] != '\0')
    {
        while(s1[i] != '\0')   
        {
            if(s2[j] != s1[i])         s2[j] 在第2个while 循环里永远是 s2[0]  s2[0] !=s1[0-最后]  
                s1[k++] = s1[i];          s1[k] 记录了 s1[i] 里面去掉s2[0] 的所有字符
            i++;                                       
        }
        s1[k] = '\0';                s1[k] 不是记录了 s1数组里面最后一个元素字符吗。 如果s1[k] 最后一个字符 ='\0' 那不是消失了一个字符      
        i = k = 0;
        j++;
    }
}
搜索更多相关主题的帖子: c程序设计 include 字符串 
2015-05-10 22:48
a132266
Rank: 2
等 级:论坛游民
帖 子:86
专家分:20
注 册:2015-3-26
收藏
得分:0 
s1[k] = '\0';                s1[k] 不是记录了 s1数组里面最后一个元素字符吗。 如果s1[k] 最后一个字符 ='\0' 那不是消失了一个字符
  只是程序运行 正确无比  但是就是不明白这里 有点不懂
2015-05-10 22:49
a132266
Rank: 2
等 级:论坛游民
帖 子:86
专家分:20
注 册:2015-3-26
收藏
得分:0 
坐等坐等  琢磨了一下午了
2015-05-10 22:52
a132266
Rank: 2
等 级:论坛游民
帖 子:86
专家分:20
注 册:2015-3-26
收藏
得分:0 
回复 4楼 传哥
我没学过数据结构 初学C   不过你解释错了啊
删除s1 里面与s2相同的字符


是拿s2[0] 比较s1[i]里面所有的元素
如果不相同的就存储在s1[k]里面 相同的就不存储进来
2015-05-11 01:07
a132266
Rank: 2
等 级:论坛游民
帖 子:86
专家分:20
注 册:2015-3-26
收藏
得分:0 
回复 4楼 传哥
我们联系联系 有问题一起商量商量。


如果按 你说的 取 s1[0]的字符去与  s2的所有字符比较 是行不通的, 因为倘若s1[0]与s2里面的某个相同  但是你怎么去掉s1[0]这个字符呢
2015-05-11 01:09
a132266
Rank: 2
等 级:论坛游民
帖 子:86
专家分:20
注 册:2015-3-26
收藏
得分:0 
回复 4楼 传哥
184235374qq
2015-05-11 01:11
a132266
Rank: 2
等 级:论坛游民
帖 子:86
专家分:20
注 册:2015-3-26
收藏
得分:0 
回复 5楼 ·charles
谢谢 就是这里自己理解的不踏实, 刚才看了你说的  琢磨了下 一下明白了
2015-05-11 01:14
a132266
Rank: 2
等 级:论坛游民
帖 子:86
专家分:20
注 册:2015-3-26
收藏
得分:0 
已经完全明白
2015-05-17 04:51
快速回复:删除s1数组里与s2数组相同的字符。有一行代码有点不明白
数据加载中...
 
   



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

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