| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 565 人关注过本帖
标题:请大家帮我看看这个程序错在哪了了!
只看楼主 加入收藏
书生等待
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:280
专家分:689
注 册:2013-2-22
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:5 
请大家帮我看看这个程序错在哪了了!
#include<stdio.h>
//将input数组中的字符复制到output中,如果有重复字符就跳过
int main()
{
    int flag=0;//flag用于在复制每一字符时,检测前面是否已经复制过相同字符
    char input[]="abchdeaefdg";
    char output[100]="";
    output[0]=input[0];
    for(int i=1;input[i]!='\0';i++)
    {
        for(int j=0;output[j]!='\0';j++)
        {
            if(output[j]==input[i])
            {
                flag=1;//前面如果已有相同字符,flag置1
                break;
            }
        }
        if(flag==0)
            output[i]=input[i];
        else
            continue;
    }
    printf("%s\n",output);
    return 0;

}
搜索更多相关主题的帖子: include 检测 
2014-04-27 15:33
书生等待
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:280
专家分:689
注 册:2013-2-22
收藏
得分:0 
现在的运行结果是,程序遇到第一次重复字符以后,就不再复制后面的不重复字符了
2014-04-27 15:34
kwxx
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:309
专家分:913
注 册:2009-5-11
收藏
得分:5 
#include<stdio.h>
//将input数组中的字符复制到output中,如果有重复字符就跳过
int main()
{
    int flag,k;//flag用于在复制每一字符时,检测前面是否已经复制过相同字符
    char input[]="abchdeaefdg";
    char output[100]="";
    output[0]=input[0];
    k=1;
    for(int i=1;input[i]!='\0';i++)
    {
        flag=0;
        for(int j=0;output[j]!='\0';j++)
        {
            if(output[j]==input[i])
            {
                flag=1;//前面如果已有相同字符,flag置1
                break;
            }
        }
        if(flag==0)
            output[k++]=input[i];
        else
            continue;
    }
    printf("%s\n",output);
    return 0;

}
2014-04-27 15:56
书生等待
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:280
专家分:689
注 册:2013-2-22
收藏
得分:0 
回复 3 楼 kwxx
恩,谢谢,明白了,我没有考虑细致,这时候复制的下标,output已经不一样了!
2014-04-27 16:11
未名湖的云
Rank: 3Rank: 3
来 自:安徽
等 级:论坛游侠
帖 子:130
专家分:190
注 册:2012-10-11
收藏
得分:5 
回复 2 楼 书生等待
你的判断出现了错误,
if(flag==0)
    output[j]=input[i];
else
{
    flag = 0;
    continue;
}
flag为1的时候continue要记得设置为0,不然还是会出错,

假使你的output字符串为"abche" ,input字符串为"abcheafd"  在你判断完e后面的a重复之后  需要continue操作,你原来的output[i]=input[i];操作,明天不对了,output下标只是到了4,可是你input字符串的下标是6了,你的output字符串的下标为5的没有值啊,所以后面的无法输出了

flag使用完之后置为0是因为假使上面一步你操作对了,在复制f的时候(循环遍历output字符串,发现没有相同的,在上次的判断结果中你的flag是1)得到的flag结果是1,无法复制了

这样讲解你明白了不?
2014-04-27 16:15
书生等待
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:280
专家分:689
注 册:2013-2-22
收藏
得分:0 
回复 5 楼 未名湖的云
恩,我看到3楼的程序就基本明白了,还是写的程序比较少,难以像你们考虑的很细致全面,谢谢!
2014-04-27 16:24
快速回复:请大家帮我看看这个程序错在哪了了!
数据加载中...
 
   



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

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