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;
    }
    
    

    经测试可以实现你的需求

    评论

报告相同问题?

悬赏问题

  • ¥15 孟德尔随机化结果不一致
  • ¥20 求用stm32f103c6t6在lcd1206上显示Door is open和password:
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法