如何用C语言实现圣诞树
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,这篇文章主要介绍"如何用C语言实现圣诞树",在日常操作中,相信很多人在如何用C语言实现圣诞树问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何用C语言实现圣诞树"的疑惑
千家信息网最后更新 2025年01月24日如何用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安全错误
数据库的锁怎样保障安全
档案网络安全防护制度
富国互联网科技股票基金估值
java软件开发实习计划
军职在线答案网络技术与应用
北京创新网络技术推广排名靠前
丽水专业从事进销存软件开发
怎么架设代理服务器
数据库信息怎么显示屏幕
开通呼死你防护服务器
网络安全国家一流学科
上海信息系统网络安全专业服务
清博指数 新媒体大数据库
兼职软件开发流程
cf手游服务器名称
Google软件开发师
福建语音网络技术优势
管理架构软件开发
江西项目软件开发代理商
网络安全之古城的启示
tomo服务器
计算机网络技术定制职业目标
网络安全意识内容
软件开发编写代码
golang入门数据库
金域服务器地址
数据库安全性的要求
sf数据库
长城宽带能加服务器
永兴学电脑软件开发招生
数据库asp怎么运行