Esta es mi solución:
Animaos a publicar vuestros códigos. El ejercicio es interesante.
			Código (c) [Seleccionar] 
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void printchars(int __char, int ntimes) {
    for(int i = 0; i < ntimes; ++i)
        putchar(__char);
}
int main()
{
    int N;
    int nspaces;
    int nasterisks;
    scanf("%d", &N);
    
    nspaces = N * 2 - 1;
    
    nasterisks = 1;
    for(int i = 0; i < N; ++i) {
        printchars(' ', nspaces);
        printchars('*', nasterisks);
        --nspaces;
        nasterisks += 2;
        putchar('\n');
    }
    
    nasterisks = 1;
    for(int i = 0; i < N; ++i) {
        printchars(' ', nspaces);
        printchars('*', nasterisks);
        printchars(' ', (N - i) * 2 - 1);
        printchars('*', nasterisks);
        --nspaces;
        nasterisks += 2;
        putchar('\n');
    }
    
    return 0;
}Animaos a publicar vuestros códigos. El ejercicio es interesante.