Это небольшая забавная проблема.
Я собрал быстрое и простое решение:
#include <stdio.h>
int main(void)
{
int a, b;
int d[10]={0};
scanf("%d %d", &a, &b);
while(a)
{
d[a%10] = 1;
a /= 10;
}
while(b)
{
if (d[b%10]) d[b%10]=2;
b /= 10;
}
for(a=0;a<10;++a) if (d[a]==2) printf("%d ", a);
return 0;
}
Ссылка на IDE Один код
Вот краткая версия, в которой не используются массивы:
#include <stdio.h>
int main(void)
{
int a, b, c;
scanf("%d %d", &a, &b);
while(a)
{
c = b;
while(c)
{
if (c%10 == a%10)
{
printf("%d ", c%10);
break;
}
c /= 10;
}
a /= 10;
}
return 0;
}
Эта версия работает медленнее, чем моя первая, и не печатает числа в порядке возрастания.