如何用C语言实现圣诞树
发表于:2025-11-18 作者:千家信息网编辑
千家信息网最后更新 2025年11月18日,这篇文章主要介绍"如何用C语言实现圣诞树",在日常操作中,相信很多人在如何用C语言实现圣诞树问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何用C语言实现圣诞树"的疑惑
千家信息网最后更新 2025年11月18日如何用C语言实现圣诞树
这篇文章主要介绍"如何用C语言实现圣诞树",在日常操作中,相信很多人在如何用C语言实现圣诞树问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何用C语言实现圣诞树"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
初学者版:
#include#include #include 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;}
这是效果图:


初学者版2
比前一个多了雪花,复杂了些。
#include#include #include 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;}
这是效果图:
以下是进阶版,更炫:
#include#include #include #include #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语言实现圣诞树"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
圣诞树
语言
学习
雪景
函数
初学者
效果
效果图
更多
梯形
这是
帮助
复杂
实用
接下来
字符
文章
方法
最爱
树桩
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
随机抽样数据库
多台笔记本共用一个服务器
网络安全培训主题班会
网络安全主题个人想法
数据通信与网络技术 韩立刚
服务器未同意离线请求
如何添加网络安全手抄报
英雄联盟国际服亚洲服务器在哪
学不会数据库管理怎么办
软件开发产生纠纷如何起诉
景东县网络安全检查
数据库 物化
2021年陇南市网络安全宣传周
c 访问pg数据库
连接SDE数据库异常错误
服务器怎么改增强安全配置
初中生可以学软件开发吗
怎么学习网络安全攻防
lua数据库连接
jsp文件怎么连接数据库
德州分销软件开发产品
软件开发保密十不准
监控服务器和存储器
dod 服务器
九派网络安全
软件开发组织和角色分工
四川省网络技术
金山区网络技术转让推荐咨询
网络安全对国家产生的影响
软件开发微信群号