我在 C 中创建了一个数组,我知道如何打印数组中的每个元素,但无法弄清楚如何不打印重复的元素,或者更准确地说,就像我在标题中问的那样,如何只打印一次所有元素?
例如我的数组是:[a b c d a a b d c c]
我想这样打印:[a b c d]
我认为我应该使用 for 或 while 循环,但我不知道如何使用。几个小时以来,我一直在思考这个问题并进行了一些研究,但找不到任何有值(value)的东西。
最佳答案
给你。
#include <stdio.h>
int main(void)
{
char a[] = { 'a', 'b', 'c', 'd', 'a', 'a', 'b', 'd', 'c', 'c' };
const size_t N = sizeof( a ) / sizeof( *a );
for ( size_t i = 0; i < N; i++ )
{
size_t j = 0;
while ( j != i && a[j] != a[i] ) ++j;
if ( j == i ) printf( "%c ", a[i] );
}
putchar ( '\n' );
return 0;
}
程序输出为
a b c d
或者例如,如果您有一个包含字符串的字符数组,则可以通过以下方式实现相同的方法。
#include <stdio.h>
int main(void)
{
char s[] = { "abcdaabdcc" };
for (const char *p = s; *p != '\0'; ++p )
{
const char *prev = s;
while ( prev != p && *prev != *p ) ++prev;
if ( prev == p ) printf( "%c ", *p );
}
putchar ( '\n' );
return 0;
}
程序输出与上图相同
a b c d
关于arrays - 在 C 中只打印一次数组中的所有元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65944208/