Imprimí un árbol de Navidad sencillo en lenguaje C.

Prefacio

Recuerdo que mi mayor me enseñó a dibujar un árbol de Navidad sencillo cuando era estudiante de primer año, pero parecía tener una vaga impresión de ello, esta vez intenté completarlo de forma independiente. Sistema: win11, software: Dev-C++.

conocimiento básico

Primero, debe utilizar un bucle para intentar imprimir los siguientes gráficos.

Creo que todos pueden completarlo, así que aquí hay solo una breve explicación.

La impresión de un rectángulo de 5*5 se puede resolver directamente usando un bucle de dos niveles. Se generan cinco líneas y cada línea imprime cinco caracteres. Por supuesto, puedes usar putchar o printf para imprimir caracteres. Usa el que quieras. 

#include<stdio.h>
 
int main(){
	for(int i=0;i<5;i++){
		for(int j=0;j<5;j++){
			putchar('*');
		}
		printf("\n");
	}
	return 0;
}

Esto es para ajustar su valor límite. Dado que está imprimiendo un triángulo, su bucle interno no se puede establecer en un valor fijo. Suponiendo que su valor inicial y su condición de juicio son ambos valores fijos, entonces el resultado de cada impresión será el lo mismo, por lo que podemos modificar sus condiciones iniciales o condiciones de juicio para lograr la impresión triangular.

#include<stdio.h>
 
int main(){
	for(int i=0;i<5;i++){
		for(int j=0;j<=i;j++){
			putchar('*');
		}
		printf("\n");
	}
	return 0;
}
#include<stdio.h>
 
int main(){
	for(int i=0;i<5;i++){
		for(int j=5;j>i;j--){
			putchar('*');
		}
		printf("\n");
	}
	return 0;
}

Este es el resultado de agregar espacios basado en el anterior. Puedes ver que la forma vacía es un triángulo compuesto de espacios, y luego simplemente imprime el triángulo nuevamente.

#include<stdio.h>
 
int main(){
	for(int i=0;i<5;i++){
		for(int j=0;j<=i;j++){
			putchar(' ');
		}
		for(int j=5;j>i;j--){
			putchar('*');
		}
		printf("\n");	
	}
	return 0;
}
#include<stdio.h>
 
int main(){
	for(int i=0;i<5;i++){
		for(int j=5;j>i;j--){
			putchar(' ');
		}
		for(int j=0;j<=i;j++){
			putchar('*');
		}
		printf("\n");	
	}
	return 0;
}

En este caso la transformación se basa en la anterior, el cambio de una línea de espacios es 1 y el cambio de una línea de asteriscos es 2.

#include<stdio.h>
 
int main(){
	for(int i=0;i<5;i++){
		for(int j=5;j>i;j--){
			putchar(' ');
		}
		for(int j=0;j<=2*i;j++){
			putchar('*');
		}
		printf("\n");	
	}
	return 0;
}
#include<stdio.h>
 
int main(){
	for(int i=0;i<5;i++){
		for(int j=0;j<i;j++){
			putchar(' ');
		}
		for(int j=2*4;j>=i*2;j--){
			putchar('*');
		}
		printf("\n");	
	}
	return 0;
}

   Esto se combina con el triángulo de salida anterior, imprimiéndolo hacia adelante y luego imprimiéndolo hacia atrás.

#include<stdio.h>
 
int main(){
	for(int i=0;i<6;i++){
		for(int j=5;j>i;j--){
			putchar(' ');
		}
		for(int j=0;j<=2*i;j++){
			putchar('*');
		}
		printf("\n");	
	}
	for(int i=0;i<5;i++){
		for(int j=0;j<=i;j++){
			putchar(' ');
		}
		for(int j=2*4;j>=i*2;j--){
			putchar('*');
		}
		printf("\n");	
	}
	return 0;
}

 árbol de Navidad

Imprimir árbol de Navidad

Una vez que domines la impresión de triángulos, puedes continuar con el siguiente paso. El árbol de Navidad que necesitas imprimir en este artículo es genial o está compuesto de personajes. Se puede dividir en dos triángulos y un rectángulo. .

Está bien, de hecho es un poco feo, pero no importa. Lo que escribas es lo mejor. Puedes ajustar la altura, corto, gordo y delgado del triángulo tú mismo. Ya casi está terminado aquí, pero no está terminado. Todavía. Actualmente, está impreso en el extremo izquierdo. A continuación, debemos moverlo al medio, lo que en realidad es para aumentar la producción de espacios.

#include<stdio.h>
 
int main(){
	for(int i=0;i<6;i++){
		for(int j=5*2;j>i*2;j--){
			putchar(' ');
		}
		for(int j=0;j<=4*i;j++){
			putchar('*');
		}
		printf("\n");	
	}
	for(int i=0;i<6;i++){
		for(int j=5*2;j>i*2;j--){
			putchar(' ');
		}
		for(int j=0;j<=4*i;j++){
			putchar('*');
		}
		printf("\n");	
	}
	for(int i=0;i<6;i++){
		for(int j=0;j<9;j++){
			putchar(' ');
		}
		for(int j=0;j<3;j++){
			putchar('*');
		}
		printf("\n");	
	}
	return 0;
}

 Por supuesto, puede modificar el bucle que genera espacios, pero eso pondrá a prueba su capacidad lógica. La forma más sencilla es generar directamente un rectángulo compuesto de espacios. Es fácil de mover después de escribir, simplemente cópielo y péguelo a continuación. Solo unos pocos ciclos.

#include<stdio.h>
 
int main(){
	for(int i=0;i<6;i++){
		for(int j=0;j<40;j++){
			putchar(' ');
		}
		for(int j=5*2;j>i*2;j--){
			putchar(' ');
		}
		for(int j=0;j<=4*i;j++){
			putchar('*');
		}
		printf("\n");	
	}
	for(int i=0;i<6;i++){
		for(int j=0;j<40;j++){
			putchar(' ');
		}
		for(int j=5*2;j>i*2;j--){
			putchar(' ');
		}
		for(int j=0;j<=4*i;j++){
			putchar('*');
		}
		printf("\n");	
	}
	for(int i=0;i<6;i++){
		for(int j=0;j<40;j++){
			putchar(' ');
		}
		for(int j=0;j<9;j++){
			putchar(' ');
		}
		for(int j=0;j<3;j++){
			putchar('*');
		}
		printf("\n");	
	}
	return 0;
}

encapsulación de funciones 

Luego pensé en cómo mejorarlo. Aquí pensé en imprimir el triángulo dos veces, ¿por qué no encapsularlo en una función? Cuando lo pensé, comencé a hacerlo. Una es que se puede escribir como una función sin parámetros, pero es fijo y no muy flexible, por lo que sigo pensando que sería mejor configurarlo como una función parametrizada.

 Tal vez necesites ajustar este parámetro tú mismo, por supuesto, también puedes calcularlo. Como no soy muy bueno en matemáticas, simplemente lo ajusto a una posición aproximada.

#include<stdio.h>

//打印三角形(距离左边的距离,空格宽倍数,星号宽倍数,高) 
void triangle(int juli,int kong,int xing,int gao);
//打印矩形(距离左边的距离,宽,高) 
void rectangle(int juli,int kuan,int gao);

int main(){
	triangle(26,2,4,6);
	triangle(20,3,6,6);
	rectangle(37,3,7);
	return 0;
}

//打印三角形 
void triangle(int juli,int kong,int xing,int gao){
	for(int i=0;i<gao;i++){
		for(int j=0;j<juli;j++){
			putchar(' ');
		}
		for(int j=gao*kong;j>i*kong;j--){
			putchar(' ');
		}
		for(int j=0;j<=xing*i;j++){
			putchar('*');
		}
		printf("\n");
	}
}

//打印矩形
void rectangle(int juli,int kuan,int gao){
	for(int i=0;i<gao;i++){
		for(int j=0;j<juli;j++){
			putchar(' ');
		}
		for(int j=0;j<kuan;j++){
			putchar('*');
		}
		printf("\n");	
	}
}

Poner el "telón"

Luego pensé en si podría hacer que se moviera y si la nieve se vería mejor, así que hice algunas modificaciones. Para hacer que se mueva, la idea es limpiar la pantalla y mostrarla nuevamente. Los copos de nieve deben generarse aleatoriamente. Sí Si quieres que sea aleatorio, necesitas usar una función de número aleatorio. Entonces, ¿cómo generar nieve? De hecho, puedes colocar una capa de "cortina", y la "cortina" son espacios, por lo que la tarea que queremos Lo que se logra es reemplazar aleatoriamente la parte donde se generarán los espacios, convertirla en un copo de nieve y luego seguir "actualizándola".

 El resultado cuando se extiende el "telón" debería verse así.

#include<stdio.h>

//打印三角形(距离左边的距离,空格宽倍数,星号宽倍数,高) 
void triangle(int juli,int kong,int xing,int gao);
//打印矩形(距离左边的距离,宽,高) 
void rectangle(int juli,int kuan,int gao);
void shengdanshu();//打印圣诞树 
int main(){
	shengdanshu(); 
	return 0;
}
//打印圣诞树 
void shengdanshu(){
	triangle(26,2,4,6);
	triangle(20,3,6,6);
	rectangle(37,3,7);
}
//打印三角形 
void triangle(int juli,int kong,int xing,int gao){
	for(int i=0;i<gao;i++){
		for(int j=0;j<juli;j++){
			putchar('*');
		}
		for(int j=gao*kong;j>i*kong;j--){
			putchar('*');
		}
		for(int j=0;j<=xing*i;j++){
			putchar(' ');
		}
		for(int j=0;j<juli;j++){
			putchar('*');
		}
		for(int j=gao*kong;j>i*kong;j--){
			putchar('*');
		}
		printf("\n");
	}
}

//打印矩形
void rectangle(int juli,int kuan,int gao){
	for(int i=0;i<gao;i++){
		for(int j=0;j<juli;j++){
			putchar('*');
		}
		for(int j=0;j<kuan;j++){
			putchar(' ');
		}
		for(int j=0;j<juli;j++){
			putchar('*');
		}
		printf("\n");	
	}
}

 copo de nieve

Los personajes de los copos de nieve se pueden agregar según su propio diseño. Para facilitar la configuración de la densidad de la nieve, aquí se utiliza una definición macro para facilitar la configuración del usuario.

Enciclopedia srand_Baidu (baidu.com) icono-default.png?t=N7T8https://baike.baidu.com/item/srand/796881?fr=ge_ala

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

//雪花的密度
#define XUE_HUA 27

//打印三角形(距离左边的距离,空格宽倍数,星号宽倍数,高) 
void triangle(int juli,int kong,int xing,int gao);
//打印矩形(距离左边的距离,宽,高) 
void rectangle(int juli,int kuan,int gao);
void shengdanshu();//打印圣诞树 

int main(){
	srand((unsigned)time(NULL));//选取种子文件 
	shengdanshu(); 
	return 0;
}
//打印圣诞树 
void shengdanshu(){
	triangle(26,2,4,6);
	triangle(20,3,6,6);
	rectangle(37,3,7);
}
//打印三角形 
void triangle(int juli,int kong,int xing,int gao){
	for(int i=0;i<gao;i++){
		for(int j=0;j<juli;j++){
			int a=rand()%XUE_HUA;//[0,XUE_HUA)
			if(a==0){
 				putchar('+');
 			}else{
				putchar(' ');
			}
		}
		for(int j=gao*kong;j>i*kong;j--){
			int a=rand()%XUE_HUA;//[0,XUE_HUA)
			if(a==0){
 				putchar('+');
 			}else{
				putchar(' ');
			}
		}
		//打印树的枝叶 
		for(int j=0;j<=xing*i;j++){
			putchar('*');
		}
		for(int j=0;j<juli;j++){
			int a=rand()%XUE_HUA;//[0,XUE_HUA)
			if(a==0){
 				putchar('+');
 			}else{
				putchar(' ');
			}
		}
		for(int j=gao*kong;j>i*kong;j--){
			int a=rand()%XUE_HUA;//[0,XUE_HUA)
			if(a==0){
 				putchar('+');
 			}else{
				putchar(' ');
			}
		}
		printf("\n");
	}
}

//打印矩形
void rectangle(int juli,int kuan,int gao){
	for(int i=0;i<gao;i++){
		for(int j=0;j<juli;j++){
			int a=rand()%XUE_HUA;//[0,XUE_HUA)
			if(a==0){
 				putchar('+');
 			}else{
				putchar(' ');
			}
		}
		//打印树干 
		for(int j=0;j<kuan;j++){
			putchar('*');
		}
		for(int j=0;j<juli;j++){
			int a=rand()%XUE_HUA;//[0,XUE_HUA)
			if(a==0){
 				putchar('+');
 			}else{
				putchar(' ');
			}
		}
		printf("\n");	
	}
}

 "nieve"

"cls" borra la pantalla debajo de la línea de comando, por lo que se debe usar el archivo de encabezado windows.h. Para hacerlo más romántico, no puede borrar la pantalla directamente y generar la pantalla. Debe haber un intervalo, por lo que Suspender se usa aquí para hacerlo dormir. Puede controlar la velocidad usted mismo, recuerde salir después de borrar la pantalla.

árbol de Navidad

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>

//雪花的密度
#define XUE_HUA 27

//打印三角形(距离左边的距离,空格宽倍数,星号宽倍数,高) 
void triangle(int juli,int kong,int xing,int gao);
//打印矩形(距离左边的距离,宽,高) 
void rectangle(int juli,int kuan,int gao);
void shengdanshu();//打印圣诞树 

int main(){
	srand((unsigned)time(NULL));//选取种子文件 
	while(true){
		shengdanshu(); 
		Sleep(800);
		system("cls");
	}
	return 0;
}
//打印圣诞树 
void shengdanshu(){
	triangle(26,2,4,6);
	triangle(20,3,6,6);
	rectangle(37,3,7);
}
//打印三角形 
void triangle(int juli,int kong,int xing,int gao){
	for(int i=0;i<gao;i++){
		for(int j=0;j<juli;j++){
			int a=rand()%XUE_HUA;//[0,XUE_HUA)
			if(a==0){
 				putchar('+');
 			}else{
				putchar(' ');
			}
		}
		for(int j=gao*kong;j>i*kong;j--){
			int a=rand()%XUE_HUA;//[0,XUE_HUA)
			if(a==0){
 				putchar('+');
 			}else{
				putchar(' ');
			}
		}
		//打印树的枝叶 
		for(int j=0;j<=xing*i;j++){
			putchar('*');
		}
		for(int j=0;j<juli;j++){
			int a=rand()%XUE_HUA;//[0,XUE_HUA)
			if(a==0){
 				putchar('+');
 			}else{
				putchar(' ');
			}
		}
		for(int j=gao*kong;j>i*kong;j--){
			int a=rand()%XUE_HUA;//[0,XUE_HUA)
			if(a==0){
 				putchar('+');
 			}else{
				putchar(' ');
			}
		}
		printf("\n");
	}
}

//打印矩形
void rectangle(int juli,int kuan,int gao){
	for(int i=0;i<gao;i++){
		for(int j=0;j<juli;j++){
			int a=rand()%XUE_HUA;//[0,XUE_HUA)
			if(a==0){
 				putchar('+');
 			}else{
				putchar(' ');
			}
		}
		//打印树干 
		for(int j=0;j<kuan;j++){
			putchar('*');
		}
		for(int j=0;j<juli;j++){
			int a=rand()%XUE_HUA;//[0,XUE_HUA)
			if(a==0){
 				putchar('+');
 			}else{
				putchar(' ');
			}
		}
		printf("\n");	
	}
}

Resumir

En general, es amigable para los principiantes y no implica cosas muy complicadas. Sin embargo, cuando aprendí el lenguaje C por primera vez, todavía no lo entendía. He resuelto toda la idea aquí, no solo proporciono el código, sino lo más importante. Creo que puedes dibujar la idea tú mismo. Además del árbol de Navidad, también hay corazones para dibujar. Estos dos son lo que quería completar en mi primer año. En ese momento, realmente estaba buscando códigos por todas partes. He resumido ellos aquí. Está nevando. Está nevando. El clima es muy frío y no hay nieve, así que solo puedo escribir el código. Se lanza una semana antes para Navidad. Los amigos a quienes les guste pueden brindar más apoyo.

Love Equation (¡¿Romance exclusivo para estudiantes de ciencias?!) - Blog de CSDN icono-default.png?t=N7T8https://blog.csdn.net/weixin_64066303/article/details/131351893?spm=1001.2014.3001.5501

Supongo que te gusta

Origin blog.csdn.net/weixin_64066303/article/details/135055507
Recomendado
Clasificación