从数组中删除元素的重复Val

  • 本文关键字:Val 元素 数组 删除 c
  • 更新时间 :
  • 英文 :


我想写一个C程序,从char数组中删除重复的值。例如,如果我有数组:

char arr[11]={'a','b','c','a','d','b','r','q','q','s','u'};

我想存储没有重复值的新数组。

所以我想要

char b[8]={'a','b','c','d','r','q','s','u'};

到目前为止我所拥有的:

#include <stdio.h>
int main()
{
int n=10;
int count = 0;
int c, d;

char a[7], b[7];

char arr[11]={'a','b','c','a','d','b','r','q','q','s','u'};


for (c = 0; c < n; c++)
{
for (d = 0; d < count; d++)
{
if(arr[c] == b[d])
break;
}
if (d == count)
{
b[count] = arr[c];
count++;
}
}
printf("Array obtained after removing duplicate elements:n");
for (c = 0; c < count; c++)
printf("%dn", b[c]);
return 0;
}

然而,当我运行这个程序时,我得到的是随机数,而不是实际值。

您需要将值打印为字符,而不是十进制数字(%d就是这样做的(。尝试printf("%cn", b[c]);

你看到的打印的整数不是"0";"随机"——它们是这些字符的ASCII码。

printf("%d\n",b[c](;

打印ASCII值。输出为:

97 (ASCII of a)  
98 (ASCII of b)  
99 (ASCII of c)   
100 (ASCII of d)   
114 (ASCII of r)   
113 (ASCII of q)  
115 (ASCII of s) 

解决方案:使用%c打印字符printf("%cn", b[c]);

最新更新