lonmecy 2017-07-19 09:16 采纳率: 14.3%
浏览 5740
已结题

C语言,如何去除字符串数组中的重复元素

定义char a[6][32]={"AAA","BBB","CCC","CCC","CCC,"DDD"},
如何去除数组a中的重复字符串元素?去百度找了找什么双重循环的方法,但是如果有连续3个数一样就会出问题。有没有哪位大佬给指教一下?如果能提供代码希望能测试一下

  • 写回答

2条回答 默认 最新

  • HappyerMano 2017-07-19 09:56
    关注
     // test1.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    #define STR_NUM 11
    
    bool contain(int num, int flag[], int count)
    {
        for (int i = 0; i < count; ++i)
        {
            if (flag[i] == num)
                return true;
        }
        return false;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        int flag[STR_NUM] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };//标记哪些字符串重复了,重复的取大的索引值
        int i = 0;
    
        char a[STR_NUM][32] = { "AAA", "BBB", "CCC", "CCC", "CCC", "DDD", "DDD", "EEE", "FFF", "DDD", "GGG" };
    
        char res[STR_NUM][32] = {};
    
        for (int n = 0; n < STR_NUM; ++n)
        {
            for (int m = n + 1; m < STR_NUM; ++m)
            {
                if (strcmp(a[n], a[m]) == 0)
                {
                    flag[i++] = m;
                }
            }
        }
    
        //这样循环以后,flag内就存储了重复的字符串的索引
    
        i = 0;
        for (int n = 0; n < STR_NUM; ++n)
        {
            if (!contain(n, flag, STR_NUM))
            {
                strcpy_s(res[i], a[n]);
                cout << "res[" << i << "]:" << res[i] << endl;
                i++;
            }
        }
    
        cin.get();
        return 0;
    }
    
    

    经测试可以实现你的需求

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!