| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 575 人关注过本帖
标题:如何删去重复的字符串记录?
只看楼主 加入收藏
winglesswu
Rank: 1
等 级:新手上路
帖 子:92
专家分:0
注 册:2013-1-28
结帖率:71.88%
收藏
已结贴  问题点数:16 回复次数:5 
如何删去重复的字符串记录?
这是之前的记录:
name[ ][]  age[ ]   *n
 -------------------------------
 Homer          45    6
 Marge          22
 Homer          42
 Bart           14
 Marge          21
 Lisa            8
里面有重复的名字,要求把后面重复的记录删去,保留前面的。删去记录后是:
name[ ][]  age[ ]   *n
 ----------------------
 Homer          45    4
 Marge          22
 Bart           14
 Lisa            8
小弟写的该程序,不知道错在哪里,请指正,谢谢。
#include<stdio.h>
#include <string.h>
/*remove duplicate records*/
main()
{
char name[6][31]={"Homer", "Marge", "Homer", "Bart", "Marge", "Lisa"};
int age[6]={45, 33, 22, 38, 29, 8};
int n;
n=removeDuplicates( name[6][31], age[6], &n );
printf("\n%d", n);
}
int removeDuplicates( char name[6][31], int age[6], int *n )
{
int i = 0, j;
 for (i = 0; i < 6; i++)
    {   
        if (strcmp(name[i], name[i + 1])==1)
        {   
            for ( j = i; j < 6; j++)   
            {   
                strcpy(name[j], name[j + 1]);
                strcpy(name[j + 1], " ");
            }   
        }   
    }   

    for (i = 0; i < 6; i++)
        printf("%s\n", name[i]);
*n=i;
return *n;
}
搜索更多相关主题的帖子: 记录 include 字符串 Lisa 
2013-04-14 22:04
helloUJS
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:168
专家分:731
注 册:2013-3-27
收藏
得分:4 
#include <stdio.h>
#include <string.h>
/*remove duplicate records*/
main()
{
char name[6][31]={"Homer", "Marge", "Homer", "Bart", "Marge", "Lisa"};
int age[6]={45, 33, 22, 38, 29, 8};
int n;
int removeDuplicates( char name[][31], int age[],int n );
n=removeDuplicates(name, age,6);/*数组作为函数参数调用时不能将数组元素作为实际参数*/
/*n=removeDuplicates( name[6][31], age[6], &n );这种用法太奇怪了*/
printf("\n%d", n);
}
int removeDuplicates( char name[][31], int age[],int n )/*n表示数据个数*/
{
int i , j,k;
for(i=0; i<n-1; i++)
    for(j=i+1;j<n;j++)
       if(strcmp(name[i],name[j])==0)
          {
           for ( k = j+1; k < n; k++)   
             {   
              strcpy(name[k-1], name[k]);
              age[k-1]=age[k];
             }
           n--;
          }   
for(i = 0; i < n; i++)
    printf("%s   %d\n", name[i],age[i]);
return n;
}
参考一下这个
2013-04-14 23:01
yctchxf
Rank: 6Rank: 6
来 自:盐城
等 级:侠之大者
威 望:2
帖 子:176
专家分:454
注 册:2012-4-10
收藏
得分:4 
建议使用结构体……会比较清晰,这样有点凌乱……
2013-04-14 23:04
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:4 
楼主是在不断地做习题是吧,怎么总是在重复同样的困难?以前别人给你解决了的,都没从中学到经验?

授人以渔,不授人以鱼。
2013-04-14 23:09
tremere
Rank: 6Rank: 6
来 自:火星
等 级:侠之大者
帖 子:223
专家分:432
注 册:2013-3-11
收藏
得分:4 
我是菜鸟,弱弱的问一句
【char name[6][31]={"Homer", "Marge", "Homer", "Bart", "Marge", "Lisa"};
int age[6]={45, 33, 22, 38, 29, 8};】
这是定义数组并直接赋值了吧。这个赋值只能解决你的这一道题吧。

极品菜鸟,来学习啦,啦啦啦啦啦啦啦。。。
2013-04-15 08:57
winglesswu
Rank: 1
等 级:新手上路
帖 子:92
专家分:0
注 册:2013-1-28
收藏
得分:0 
是的,题目就是这么说的。如果普遍的情况呢?该怎么改?
2013-04-15 09:05
快速回复:如何删去重复的字符串记录?
数据加载中...
 
   



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

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