C 语言圣诞树程序
这里我们将讨论一个有趣的问题。在这个问题中,我们将介绍如何随机打印圣诞树。如此,树会像圣诞彩灯一样闪烁。
要打印圣诞树,我们将打印各种大小的金字塔,金字塔之间相邻。作为装饰品,从给定的字符列表中随机打印一个字符。高度和随机性是可以调节的。
这里在生成一棵树后,整个屏幕将被清除,然后再重新生成,这就是它看起来像闪烁的树的原因。
示例
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#define REFRESH_RATE 40000
#define RANDOM_NESS 5 // The higer value indicates less random
void clear_screen() {
system("@cls||clear");
}
void display_random_leaf() {
char type_of_leaves[5] = { '.', '*', '+', 'o', 'O' }; //these are the leaf types
int temp = rand() % RANDOM_NESS;
if (temp == 1)
printf("%c ", type_of_leaves[rand() % 5]); //if temp is 1, then use other leaves
else
printf("%c ", type_of_leaves[1]); //otherwise print *
}
void tree_triangle(int f, int n, int toth) {
int i, j, k = 2 * toth - 2;
for (i = 0; i < f - 1; i++)
k--;
for (i = f - 1; i < n; i++) { //i will point the number of rows
for (j = 0; j < k; j++) // Used to put spaces
printf(" ");
k = k - 1;
for (j = 0; j <= i; j++)
display_random_leaf();
printf("
");
}
}
void display_tree(int h) {
int start = 1, end = 0, diff = 3;
while (end < h + 1) {
end = start + diff;
tree_triangle(start, end, h);
diff++;
start = end - 2;
}
}
void display_log(int n) { //print the log of the tree
int i, j, k = 2 * n - 4;
for (i = 1; i <= 6; i++) {
for (j = 0; j < k; j++)
printf(" ");
for (j = 1; j <= 6; j++)
printf("#");
printf("
");
}
}
main() {
srand(time(NULL));
int ht = 15;
while (1) {
clear_screen();
display_tree(ht);
display_log(ht);
usleep(REFRESH_RATE); //use sleep before replacing
}
}输出

广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP