Red de conocimiento informático - Material del sitio web - Cómo generar un diamante hueco mediante programación en lenguaje C

Cómo generar un diamante hueco mediante programación en lenguaje C

#include?

/*

De hecho, la idea de imprimir triángulos y rombos es la misma.

Todos buscan Para las reglas de cada línea primero, y luego imprima línea por línea de acuerdo con las reglas.

Por ejemplo, aquí hay un rombo con n=4* en cada lado (la longitud del lado es 4).

C se genera en líneas, por lo que solo necesitamos analizar el contenido que se generará en la i-ésima línea: 0123456

0*

1? *

2?**

3*?*

4?**

5?*?*

6*

Como se puede ver en la imagen de arriba,

la línea 0 debe generar 3 espacios, 1*

la línea 1 debe generar 2 espacios , 1*, 1 espacio, 1*

La segunda línea debe generar 1 espacio, 1*, 3 espacios, 1*

La tercera línea debe generar 0 espacios, 1*, 5 espacios, 1 *

La línea 4 debe generar 1 espacio, 1 *, 3 espacios, 1*

La línea 5 debe generar 2 espacios, 1 *, 1 espacio, 1 *

La línea 6 debe generar 3 espacios, 1 *

Vuelva a leer el patrón obtenido anteriormente, excepto la línea 6. Excepto para la línea 0 y la línea 6, el patrón de otras líneas es el mismo :

Para la línea i, imprima k1 espacio, 1*, k2 espacio, 1*.

Y a partir de la línea 4, es simétrico al patrón anterior, por lo que solo podemos analizar las líneas 0 a 3:

En el i?=?[ 0,?3] fila:

Para la fila i, imprima k1=n-i-1 espacios, 1*, k2=2*i-1 espacios, 1*.

Excepción: El k2=-1 obtenido en la línea 0 es menor que 0, y el espacio y el segundo * no se imprimirán.

Entonces podemos obtener una pequeña función:

*/

void?printline(int?i,?int?n)?{

int?k1?=?n?-?1?-?i;

int?k2?=?2?*?i?-??1;

int?j;

Imprimir espacio k1

for(j=0;?j

printf("????? ????") ;

//Imprime un *

printf("*");

/Si k2 es menor que 0, no No es necesario imprimir el espacio y el * después

if?(k2?>?0)?{

//imprimir k2 espacios

for( j=0;?j

printf("?") ;

printf("*");

}

p>

printf("\n");

}

int?main()

{

const?int?n?=?4;

int?i;

/?Primera impresión 0~n-1

for(i =0;?i

printline(i,?n);

/?Luego imprima n-2~0

para (i=n- 2;?i>=0;?i--)

printline(i,?n);

retorno?