在這裡,我們將看到一個有趣的問題。在這個問題中,我們將看到如何隨機列印聖誕樹。因此,樹木會像聖誕樹燈一樣閃爍。
為了列印聖誕樹,我們將列印各種大小的金字塔,一個接一個地放置。對於裝飾葉子,將從給定的字元清單中隨機列印一個字元。高度和隨機性是可調節的。
在生成樹之後,整個螢幕被清除,然後再次生成,這就是為什麼它看起來像是閃爍的樹。
#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("</p><p>"); } } 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("</p><p>"); } } main() { srand(time(NULL)); int ht = 15; while (1) { clear_screen(); display_tree(ht); display_log(ht); usleep(REFRESH_RATE); //use sleep before replacing } }
以上是C語言中的聖誕樹程序的詳細內容。更多資訊請關注PHP中文網其他相關文章!