| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 640 人关注过本帖
标题:把n个字符串中相同的字符串删除到只剩一个,并把剩余字符串全部移到前面。要 ...
只看楼主 加入收藏
billjyc
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2011-12-15
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:1 
把n个字符串中相同的字符串删除到只剩一个,并把剩余字符串全部移到前面。要求:使用二维数组
大家看看有什么问题
#include<stdio.h>
#include<string.h>
#define row 5
#define col 20
#define n 5

void shanchu(char list[row][col]);

int main(){
  char abc[row][col];
  int index;

  printf("input the %d strings:\n",n);
  for(index=0;index<row;index++){
    printf("input string %d:",index);
    scanf("%s",abc[index]);
  }
  shanchu(abc);
}

void shanchu(char list[row][col]){
  int i,j=0,k=0,t=0;

  for(j=0;j<row;j++){
    for(i=j+1;i<=row-1;i++)
      if(strcmp(list[j],list[i])==0)
      {
        strcpy(list[i],list[i+1]);
      }
  }
  while(k<row-1){
    if(strcmp(list[k],list[k+1])!=0)
      k=k+1;
    else
      break;

  }
    for(t=0;t<k;t++)
      printf("%s\n",list[t]);
}
搜索更多相关主题的帖子: include 字符串 
2011-12-16 17:29
墨清扬
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:294
专家分:817
注 册:2011-10-4
收藏
得分:5 
for(i=j+1;i<=row-1;i++)里i=row-1时,i+1会越界
for(t=0;t<k;t++)里,应该是t<=k,因为k肯定和k-1不同
更重要的错误,是用复制后一个字符串上前的方法可能导致出现三个或更多连续的字符串,在接下来的遍历中无法全部去掉多余的,所以再后来用k检查时会提前跳出,忽略了后面的没输出过的字符串,比如输入asd asd zxc zxc vbn只输出asd zxc。
一个修改的方法是讲相同的字符串置为空,后期把空的用后面的字符串代替

酱油实习生
2011-12-16 19:36
快速回复:把n个字符串中相同的字符串删除到只剩一个,并把剩余字符串全部移到前 ...
数据加载中...
 
   



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

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