服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - 用C语言实现圣诞树(简易版+进阶版)

用C语言实现圣诞树(简易版+进阶版)

2022-07-22 10:32Zhanduanwangfeng C/C++

大家好,本篇文章主要讲的是用C语言实现圣诞树(简易版+进阶版),感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览

前言

圣诞节快到了,这是我到csdn度过的第一个圣诞节,也是我学习计算机的第一个圣诞节,为了让它更有意义,我呕心沥血,自己打了两版初学者版,再在网上找了一版进阶版,都十分精美,废话少说,代码奉上:

初学者版:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include<stdio.h>
#include<windows.h>
#include<string.h>
void color(int x)
{
    if(x>=0 && x<=15)
       setconsoletextattribute(getstdhandle(std_output_handle), x);
    else
       setconsoletextattribute(getstdhandle(std_output_handle), 7);
}
void set_christmastree(char *p){
    int i,j,n=5,s;
    color(2);
    printf("\n");
    for(i=1;i<=n;i++){
     if(i==1){
        for(j=1;j<=i;j++){
           for(s=1;s<=n+11-j;s++){
               printf(" ");
           }
           for(s=1;s<=2*j-1;s++){
               printf("*");
           }
           printf("\n");
       }
    }
    else{
       for(j=i;j<=i+1;j++){
           for(s=1;s<=n+11-j;s++)
           {
               printf(" ");
           }
           for(s=1;s<=2*j-1;s++)
           {
                if(s==n-3){
                  color(11);
                  printf("%c",p[0]);
                  color(2);
                  continue;    
                }
                if(s==n-1){
                  color(5);
                  printf("%c",p[1]);
                  color(2);
                  continue;    
                }
                if(s==n+1){
                  color(4);
                  printf("%c",p[2]);
                  color(2);   
                  continue;
                }
                if(s==n+3){
                  color(1);
                  printf("%c",p[3]);
                  color(2);
                  continue;
                }
                if(s==n+5){
                    color(12);
                    printf("%c",p[4]);
                    color(2);
                    continue;
                }
               printf("*");
           }
           printf("\n");
       }
     }
   }
   color(6);
   for(s=1;s<=n+11;s++)
   {
       if(s==n+9)
       {
          printf("|||||\n");
          color(15);
          printf("             %c%c%c%c%c",p[5],p[5],p[5],p[5],p[5]);
          continue;
       }
       printf(" ");
   }
   printf("\n");
   for(s=1;s<=36;s++)
   {
       if(s==n+11)
       {
       printf("v");
       continue;
       }
       printf("=");
   }
}
int main(){
    int t=0;
    color(11);
    printf("首先祝这个电脑前的小可爱圣诞快乐(~ ̄▽ ̄)~");printf("\n");
    printf("接下来有几个选项需要您的选择,你需要我的作者给您画的圣诞树还是自己做一个呢?");
    printf("\n");
    printf("看作者的选0,如果想自己做呢选1,祝您开心o(*^@^*)o");
    printf("您的选择是:");
    scanf("%d",&t);
    if(t==0){
      char l[6]="happyu",m[100]="merry christmas.";
      set_christmastree(l);
      color(3);
      printf("\ni want to say:\n");
      puts(m);
      printf("made by zhanduanwanfeng.");
    }
    if(t==1){
        char k[6],w[100]="merry christmas.";
        printf("请选择您要隐藏的字符,只有六个字符哦,可以有特殊含义(imissu,iloveu等哦)后面还可加一句你想说的话,与前面字符用空格隔开,字符间不要加空格哦>_<:");
        scanf("%s",k);
        gets(w);
        set_christmastree(k);
        color(3);
        printf("\ni want to say:\n");
        puts(w);
        printf("made by zhanduanwanfeng.");
    }
    return 0;
}

这是效果图:

用C语言实现圣诞树(简易版+进阶版)

 用C语言实现圣诞树(简易版+进阶版)

初学者版2

比前一个多了雪花,复杂了些。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#include<stdio.h>
#include<windows.h>
#include<string.h>
void color(int x)
{
    if(x>=0 && x<=15)
       setconsoletextattribute(getstdhandle(std_output_handle), x);
    else
       setconsoletextattribute(getstdhandle(std_output_handle), 7);
}
void set_christmastree(char *p){  //打印圣诞树和雪景的函数
    int i,j,n=5,s,y=0;
    color(2);
    printf("\n");
    for(i=1;i<=n;i++){
        y++;
     if(i==1){  //第一层是一个*,之后都是梯形
        for(j=1;j<=i;j++){
           for(s=1;s<=36;s++){
            if((s<=n+11-j)||(s>=17)){
               if(s%(i+3)==i){  //雪景
                  color(15);
                  putchar('*');
                  color(2);
                  }
               else
               printf(" ");
            }
            else if(s==n+11){
                putchar('*');
            }
       }
           printf("\n");
       }
    }
    else{
       for(j=i;j<=i+1;j++){  //打印梯形
           for(s=1;s<=36;s++)
           {
              if((s<=n+11-j)||(s>=n+11+j)){
               if(s%(i+3)==i){  //雪景
                  color(15);
                  putchar('*');
                  color(2);
                  }
               else
               printf(" ");
              }
              else{
                if(s==n+2+y){   //这几个if函数都是用来打印圣诞树上的变色字符
                  color(11);
                  printf("%c",p[0]);
                  color(2);
                  continue;    
                }
                else if(s==n+4+y){
                  color(5);
                  printf("%c",p[1]);
                  color(2);
                  continue;    
                }
                else if(s==n+6+y){
                  color(4);
                  printf("%c",p[2]);
                  color(2);   
                  continue;
                }
                else if(s==n+8+y){
                  color(1);
                  printf("%c",p[3]);
                  color(2);
                  continue;
                }
                else if(s==n+10+y){
                    color(12);
                    printf("%c",p[4]);
                    color(2);
                    continue;
                }
                else
                printf("*");
              }
           }
           printf("\n");
       }
     }
   }
   color(6);
   for(s=1;s<=34;s++)  //树桩
   {
       if(s==n+9){
          color(15);
          printf("*  *  *  *  *");
          color(6);
          printf("|||||");
          color(15);
          printf(" *  *  *  *  * \n");
          printf("*  *  *  *  *%c%c%c%c%c *  *  *  *  *  ",p[5],p[5],p[5],p[5],p[5]);
          continue;
       }
       /*else{
         color(15);
         printf("* ");
         //color(6);
        }*/
    }
    printf("\n");
    for(s=1;s<=34;s++){
       if(s==n+11){
        printf("v");
        continue;
       }
       else
       printf("=");
   }
}
int main(){
    int t=0;
    color(11);
    printf("首先祝这个电脑前的小可爱圣诞快乐(~ ̄▽ ̄)~");printf("\n");
    printf("接下来有几个选项需要您的选择,你需要我的作者给您画的圣诞树还是自己做一个呢?");
    printf("\n");
    printf("看作者的选0,如果想自己做呢选1,祝您开心o(*^@^*)o");
    printf("您的选择是:");
    scanf("%d",&t);
    if(t==0){
      char l[6]="happyu",m[100]="merry christmas.";
      set_christmastree(l);
      color(3);
      printf("\ni want to say:\n");
      puts(m);
      printf("made by zhanduanwanfeng.");
    }
    if(t==1){
        char k[6],w[100]="merry christmas.";
        printf("请选择您要隐藏的字符,只有六个字符哦,可以有特殊含义(imissu,iloveu等哦)后面还可加一句你想说的话,与前面字符用空格隔开,字符间不要加空格哦>_<:");
        scanf("%s",k);
        gets(w);
        set_christmastree(k);
        color(3);
        printf("\ni want to say:\n");
        puts(w);
        printf("made by zhanduanwanfeng.");
    }
    return 0;
}

 这是效果图:

用C语言实现圣诞树(简易版+进阶版)

 用C语言实现圣诞树(简易版+进阶版)

以下是进阶版,更炫:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <windows.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#define pi 3.14159265359
#define t px + scale * r * cosf(theta), py + scale * r * sin(theta)
float sx, sy;
float sdcircle(float px, float py, float r) {
    float dx = px - sx, dy = py - sy;
    return sqrtf(dx * dx + dy * dy) - r;
}
float opunion(float d1, float d2) {
    return d1 < d2 ? d1 : d2;
}
float f(float px, float py, float theta, float scale, int n) {
    float d = 0.0f;
    for (float r = 0.0f; r < 0.8f; r += 0.02f)
        d = opunion(d, sdcircle(t, 0.05f * scale * (0.95f - r)));
    if (n > 0)
        for (int t = -1; t <= 1; t += 2) {
            float tt = theta + t * 1.8f;
            float ss = scale * 0.9f;
            for (float r = 0.2f; r < 0.8f; r += 0.1f) {
                d = opunion(d, f(t, tt, ss * 0.5f, n - 1));
                ss *= 0.8f;
            }
        }
    return d;
}
int ribbon() {
    float x = (fmodf(sy, 0.1f) / 0.1f - 0.5f) * 0.5f;
    return sx >= x - 0.05f && sx <= x + 0.05f;
}
int main(int argc, char* argv[]) {
    int n = argc > 1 ? atoi(argv[1]) : 3;
    float zoom = argc > 2 ? atof(argv[2]) : 1.0f;
    for (sy = 0.8f; sy > 0.0f; sy -= 0.02f / zoom, putchar('\n'))
        for (sx = -0.35f; sx < 0.35f; sx += 0.01f / zoom) {
            if (f(0, 0, pi * 0.5f, 1.0f, n) < 0.0f) {
                if (sy < 0.1f) {
                    putchar('.');
                } else {
                    if (ribbon()) {
                        putchar('=');
                    } else {
                        putchar("............................#j&o"[rand() % 32]);
                    }
                }
            } else {
                putchar(' ');
            }
        }
    sleep(1000);
    printf("\n\n\n");
    for (size_t i = 0; i < 40; i++) {
        putchar(' ');
    }
    //_sleep(5000);
    printf("merry christmas, baby~!\n");
    sleep(500);
    for (size_t i = 0; i < 40; i++) {
        putchar(' ');
    }
    printf("never say die.\n");
    sleep(500);
    for (size_t i = 0; i < 40; i++) {
        putchar(' ');
    }
    printf("2016/12/24, 最爱你的up主\n");
    getchar();
}

效果图就不放了,感兴趣可以试试,很炫哦。

总结

到此这篇关于用c语言实现圣诞树(简易版+进阶版)的文章就介绍到这了,更多相关c语言圣诞树内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/m0_63156954/article/details/122044419

延伸 · 阅读

精彩推荐
  • C/C++利用C++实现最长公共子序列与最长公共子串

    利用C++实现最长公共子序列与最长公共子串

    这篇文章主要给大家介绍了如何利用C++实现最长公共子序列与最长公共子串,文章一开始就给大家简单的介绍了什么是子序列,子串应该比较好理解就不用...

    Treant4082021-04-21
  • C/C++剑指offer之C++语言实现链表(两种删除节点方式)

    剑指offer之C++语言实现链表(两种删除节点方式)

    今天小编就为大家分享一篇关于剑指offer之C++语言实现链表(两种删除节点方式),小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋...

    chenyu_insist8662021-07-21
  • C/C++OpenGL实现3D空间中移动图像

    OpenGL实现3D空间中移动图像

    这篇文章主要为大家详细介绍了OpenGL实现3D空间中移动图像,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    yangchuankai8132021-09-24
  • C/C++C++学习小结之二进制转换

    C++学习小结之二进制转换

    这篇文章主要介绍了C++学习小结之二进制转换的相关资料,需要的朋友可以参考下...

    C++教程网5372021-03-01
  • C/C++C++控制台循环链表实现贪吃蛇

    C++控制台循环链表实现贪吃蛇

    这篇文章主要为大家详细介绍了C++控制台循环链表实现贪吃蛇,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    PPPeyton11712021-09-03
  • C/C++C++实现LeetCode(15.三数之和)

    C++实现LeetCode(15.三数之和)

    这篇文章主要介绍了C++实现LeetCode(三数之和),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...

    Grandyang6572021-11-23
  • C/C++C语言实现顺序表基本操作汇总

    C语言实现顺序表基本操作汇总

    这篇文章主要介绍了C语言实现顺序表基本操作汇总,对学习数据结构的朋友有一定的借鉴价值,需要的朋友可以参考下...

    C语言程序设计11552021-01-23
  • C/C++神奇的c/c++小游戏(提高你的编程兴趣)

    神奇的c/c++小游戏(提高你的编程兴趣)

    本文通过c/c++编写小游戏,可以提高新手们的编程兴趣,接下来我们一起来看看吧...

    恪愚7702021-12-20