定义char a[6][32]={"AAA","BBB","CCC","CCC","CCC,"DDD"},
如何去除数组a中的重复字符串元素?去百度找了找什么双重循环的方法,但是如果有连续3个数一样就会出问题。有没有哪位大佬给指教一下?如果能提供代码希望能测试一下
C语言,如何去除字符串数组中的重复元素
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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 请完成下列相关问题!