Измените порядок вашего теста. Если вы сначала поместите самый длинный регистр, тогда, если и n% 3, и n% 5 == 0, он будет напечатан. В противном случае это может быть одно или другое.
if (n%3 == 0 && n%5 == 0)
{
printf("\n 3"); // You might want this to be printf("3\n"); instead
}
else if... // other cases.
Другой способ сделать это, если вы действительно хотите сохранить порядок, - это проверить на отдельных случаях, что оба они не верны, ie :
if (n%3 == 0 && n%5 != 0)
{
// Only a multiple of 3
}
else if (n%5 == 0 && n%3 != 0)
{
// Only a multiple of 5
}
else if (n%3 == 0 && n%5 == 0)
{
// Multiple of 3 and 5
}