主题:初学C,麻烦大家帮忙给谢意见!谢啦
xiaosu525
[专家分:0] 发布于 2010-03-30 15:08:00
麻烦写一个函数,删除一个表中所有重复的值,例如将(1,2,2,3,3,2,3,3,5)变成(1,2,3,5),注意:表中元素未必是排序的,且每个值的第一次出现应当保留!
谢谢大家多提意见!
回复列表 (共5个回复)
沙发
eastcowboy [专家分:25370] 发布于 2010-03-30 16:00:00
每遇到一个数,就判断这个数之前是否出现。如果是,则删除,否则保留。
大致写了一下,没有测试。楼主随便看看。
int proc(int count, const int numbers[], int output[])
{
int i, j, k;
if (count <= 0) {
return 0;
}
k = 0;
for (i = 0; i < count; ++i) {
const int current = numbers[i];
// 看第i个数之前是否出现
for (j = 0; j < i; ++j) {
if (numbers[j] == current) {
break;
}
}
if (j == i) { // 如果之前没有出现
output[k] = current;
++k;
}
}
return k;
}
板凳
xiaosu525 [专家分:0] 发布于 2010-03-30 16:04:00
其实我也看不大懂啦!不过还是非常感谢~~~
3 楼
xiaosu525 [专家分:0] 发布于 2010-03-30 17:19:00
不知道还有没有其他的方法啊??除了C函数,比如用数据模块,希望大家多提意见啦~~谢咯
4 楼
liudan319 [专家分:3780] 发布于 2010-03-31 08:39:00
比如你把这些值读到map里面,然后在保存到数组里面……
5 楼
sxm227 [专家分:10] 发布于 2010-03-31 08:53:00
深圳市华信群英科技有限公司与知名通信软件公司正式签订定向输送人才的合作协议
针对想进入IT软件行业的有志人士提供专业的企业内训
实训课程采用“2+3”分段教学模式,分为2个月理论强化和3个月项目实训两个阶段
实训前就签订就业安置协议,岗前实训后入职
不仅学费优惠而且是企业定向培训定向招聘,百分百保证就业
有意向请登录www.szctt.com,或加QQ:1179397962做详细咨询
我来回复