Cómo generar un diamante hueco mediante programación en lenguaje C
/*
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? * p>
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> 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?