C/C++圣诞树代码

news2024/12/27 1:10:50

目录

系列文章

写在前面

圣诞节

C语言

圣诞树

写在后面


系列文章

序号目录直达链接
1爱心代码https://want595.blog.csdn.net/article/details/136360684
2李峋同款跳动的爱心https://want595.blog.csdn.net/article/details/139722249
3满屏飘字代码https://want595.blog.csdn.net/article/details/136342476
4大雪纷飞代码https://want595.blog.csdn.net/article/details/140735166
5烟花代码https://want595.blog.csdn.net/article/details/140813777
6黑客帝国字母雨https://want595.blog.csdn.net/article/details/139923742
7樱花树https://want595.blog.csdn.net/article/details/140690893
8奥特曼https://want595.blog.csdn.net/article/details/141123424
9圣诞树https://want595.blog.csdn.net/article/details/141207980

写在前面

虽然小编是个python大佬(很明显是自封的),但是小编刚接触编程学的第一门语言就是C语言!于是小编决定用C语言实现了一棵圣诞树送给大家,感谢大家的喜欢~

圣诞节

圣诞节是西方的重要节日之一,每年12月25日庆祝。它是基督教的一个节日,用于纪念耶稣基督的诞生。圣诞节的起源可以追溯到古罗马时期的康复节和北欧的冬至节,随着基督教的发展,圣诞节逐渐被定为耶稣基督的诞生纪念日。

圣诞节是一个寓意深刻的节日,它象征着和平、爱和希望。在圣诞节之前,许多家庭会在家里挂上装饰物,如树形装饰、彩灯、装饰花环等,以示庆祝。此外,人们还会在圣诞节期间赠送礼物、烹饪美食、唱圣诞歌曲、参加聚会等庆祝活动。

圣诞节也是商业活动的重要时间。在这个节日之前,商家们会推出各种促销活动,吸引消费者购买礼品、美食、装饰品等。此外,圣诞老人也成为了这个节日的一个重要符号,商家们会将他带到商场,给孩子和成年人带来快乐。

总的来说,圣诞节是一个寓意深刻的节日。不仅它是基督教的一个重要节日,更是一个和平、爱和希望的象征。通过参与圣诞节的各种活动,我们可以感受到这些美好品质的重要性,体验到与家人和朋友在一起的欢乐时光。

C语言

C语言是一种高级编程语言,它于1972年由Dennis Ritchie在贝尔实验室开发。C语言的设计目的是为了开发UNIX操作系统。它是一种通用的、基于过程的编程语言,适用于各种领域的软件开发。C语言的设计理念是简洁、高效、可移植和可扩展。

C语言的特点包括:

1.语法简单:C语言的语法与英语类似,易于学习和记忆。

2.高效:C语言可以直接操作内存,而不需要太多的系统资源和时间。

3.可移植:C语言的源代码可以在不同的计算机平台上进行移植,只需要进行少量的修改。

4.可扩展:C语言程序可以很容易地扩展和修改,因为它的模块化结构使得程序员可以添加、删除和修改程序的各个部分。

C语言的应用广泛,特别是在嵌入式系统、操作系统和编译器开发中。此外,C语言还被广泛用于游戏开发、桌面应用程序、网络编程和科学计算。

C语言的学习对于计算机科学和软件工程的学生来说是很重要的。理解C语言的基础原理和编程范例可以帮助学生更好地理解其他高级计算机语言,如C++、Java和Python等。

总之,C语言是一种非常重要的编程语言,它的设计理念和应用广泛性已经使其成为计算机科学的基础知识之一。

圣诞树

下载链接

点击下载

完整程序

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
#define PI 3.14159265359
#define T px+scale*r*cosf(theta),py+scale*r*sin(theta)
char love[20][43] = {
  "111111111111111111111111111111111111111111",
  "111111111111110000111111100001000111111111",
  "110000000000000000011111100011000111111111",
  "110000111001110001111111000110001111111111",
  "111100010000110000111111100011000000000011",
  "111100001000100011111110000100011111100011",
  "100000000000000000001110000100011111000111",
  "100000000000000000011100000000110001000111",
  "100011100011111000110000000000110001111111",
  "111011100011111100111111000111110001111111",
  "111000000000000000111111000110000000001111",
  "111111000111111111111111000110000000000111",
  "111110001111111111111111000100010001000111",
  "111000000000000001111111000000010001100011",
  "111000000011000011111111000000110001100001",
  "110001110000000111111111000001110001110111",
  "100011111000011111111111000111110001111111",
  "111110000000000000011111000111000001111111",
  "111000000111110000011111000111000011111111",
  "111111111111111111111111111111111111111111"
};
void gotoxy(int x, int y) {
  HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);
  COORD pos = { x,y };
  SetConsoleCursorPosition(hout, pos);
}
void SetColor(int color) {
  if (color == 0)color = 0x04;
  HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
  SetConsoleTextAttribute(hCon, color);
}
void showsnow() {
  SetColor(rand() % 16);
  int x = rand() % 120;
  int y = rand() % 40;
  gotoxy(x, y);
  putchar('*');
}
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;
}
int ribbon() {
  float x = (fmodf(sy, 0.1f) / 0.1f - 0.5f) * 0.5f;
  return sx >= x - 0.05f && sx <= x + 0.05f;
}
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.95 - 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 main(int argc, char* argv[]) {
  system("mode con cols=120 lines=42");
  HWND consoleHandle = GetConsoleWindow();
    // 获取系统屏幕分辨率
    int screenWidth = GetSystemMetrics(SM_CXSCREEN);
    int screenHeight = GetSystemMetrics(SM_CYSCREEN);
    // 获取窗口大小
    RECT consoleRect;
    GetWindowRect(consoleHandle, &consoleRect);
    int consoleWidth = consoleRect.right - consoleRect.left;
    int consoleHeight = consoleRect.bottom - consoleRect.top;
    // 计算窗口应该出现的位置
    int win_x = (screenWidth - consoleWidth) / 2;
    int win_y = (screenHeight - consoleHeight) / 2;
    // 使用SetWindowPos函数设置新的窗口位置
    SetWindowPos(consoleHandle, 0, win_x, win_y, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
  srand((int)time(NULL));
  SetConsoleCP(437);
  SetConsoleOutputCP(437);
  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) {
          SetColor(rand() % 16);
          putchar('\3');
        } else {
          if (ribbon()) {
            putchar('=');
          } else {
            SetColor(rand() % 16);
            putchar('\3');
          }
        }
      } else {
        putchar(' ');
      }
    }
  }
  int i, j;
  int x, y = 3;
  for (i = 0; i < 19; i++, y++) {
    x = 60;
    for (j = 0; j < 42; j++, x++) {
      gotoxy(x, y);
      if (love[i][j] == '1') {
        putchar(' ');
      } else {
        SetColor(0x09);
        putchar('*');
      }
    }
  }
  for (n = 0; n++ < 365;) {
    showsnow();
  }
  gotoxy(0, 40);
  getchar();
  return 0;
}

代码分析

这是一个使用C语言编写的圣诞树雪花动画程序。程序的主要功能是在控制台中绘制一个圣诞树图案,并在圣诞树图案下方通过随机生成的雪花效果进行装饰。

程序的主要功能代码如下:
- 通过定义字符数组`love`,在控制台中绘制一个圣诞树图案。
- 通过调用`gotoxy`函数和`putchar`函数,在控制台中输出字符,实现圣诞树图案的显示。
- 通过调用`SetColor`函数和`putchar`函数,设置字符的颜色和输出字符。

程序的主要算法代码如下:
- 定义变量`sx`和`sy`,用于存储当前绘制雪花的位置。
- 定义函数`sdCircle`,用于计算点`(px, py)`到原点`(sx, sy)`的距离减去半径`r`的值。
- 定义函数`opUnion`,用于比较两个值的大小并返回较小的值。
- 定义函数`ribbon`,用于判断当前绘制位置是否在雪花丝带范围内。
- 定义函数`f`,用于递归计算点`(px, py)`在圣诞树图案中的距离。
- 在主函数中,通过循环调用`f`函数和其他函数,绘制圣诞树图案和雪花效果。

程序的运行过程如下:
- 设置控制台窗口的大小和位置。
- 设置控制台的编码格式。
- 解析命令行参数,获取绘制圣诞树图案的次数和缩放比例。
- 通过循环调用`f`函数和其他函数,绘制圣诞树图案和雪花效果。
- 调用`showsnow`函数,随机生成雪花并显示在控制台中。
- 获取用户的输入,并结束程序的运行。

以上是对该程序的详细分析,包括主要功能和算法代码的解释,以及程序的运行过程说明。

运行结果

写在后面

我是一只有趣的兔子,感谢你的喜欢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2041017.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

247.2k star! 超强大的私有化ChatGPT,支持图像识别/文生图/语音输入/文本朗读,个人电脑即可运行!试试吧

今天作者带大家实现一个普通配置电脑即可运行的私有化ChatGPT&#xff0c;支持以下功能&#xff1a; 1.界面体验与ChatGPT官方几乎一样。 2.支持多种开源模型&#xff0c;可以聊天、写代码、识别图片内容等。 3.支持文生图。 4.支持麦克风语音输入聊天。 5.支持自动朗读回…

如何在wordpress当中使用插件WP Coder(将html、css、javascript应用到wordpress上)

了解认识阶段 安装并运行好WP Coder之后如下图&#xff1a; 设置全局PHP 禁用gutenberg 输入代码 add_filter(gutenberg_can_edit_post, __return_false, 10); add_filter(use_block_editor_for_post, __return_false, 10); 记得点击save并勾选enable PHP code 禁用之后打…

从0开始Vue3数据交互之promise详解

目录 前言 1. 预先须知-普通函数和回调函数 1.1 普通函数: 1.2 回调函数: 2. Promise 简介 2.1 简介 2.2 特点 3. Promise 基本用法 3.1 Promise then 1. 没有传参 3.1.1 没有调用resolve 函数和reject 函数时 3.1.2 调用resolve()函数 3.1.3 调用 reject()函数 2…

【Linux详解】进度条实现 Linux下git 的远程上传

&#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;Linux—登神长阶 ⛺️ 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f49e; &#x1f49e; &#x1f49e; &#x1f680;前言 &#x…

张飞硬件1~9电阻篇笔记

电阻有标定值和实际值&#xff0c;关于误差的问题&#xff1a; 精密的电流、电压采样可能会用到1%的精度。如果只是做限流用途的话&#xff0c;用5%就足够。 电阻功率&#xff1a;标定值、额定值、瞬态值&#xff1a; 标定值由封装所决定&#xff0c;例如5W额定值由电路中平…

结构开发笔记(三):solidworks软件(二):小试牛刀,绘制一个立方体

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/141122350 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

如果忘记了 Apple ID 密码,如何重设

“我忘记了我的 Apple ID 密码&#xff0c;如何恢复我的帐户&#xff1f;”为了方便用户&#xff0c;Apple 允许每个人使用唯一的 Apple ID 和密码激活设备并访问所有 Apple 服务。然而&#xff0c;实际上&#xff0c;手动选择某项并忘记它似乎很容易。例如&#xff0c;许多 Ap…

AI大模型零基础入门学习路线(非常详细)从入门到精通,看这篇就 够了

学习AI大模型从零基础入门到精通是一个循序渐进的过程&#xff0c;涉及到理论知识、编程技能和实践经验。下面是一份详细的指南&#xff0c;帮助你从头开始学习并逐步掌握AI大模型的构建与应用。 第一阶段&#xff08;10天&#xff09;&#xff1a;初阶应用 该阶段让大家对大…

北斗导航系统:助力保护生态环境的利器

近年来&#xff0c;随着科技的迅猛发展和生态危机的加剧&#xff0c;环保问题成了全球热点话题。而北斗导航系统&#xff0c;作为中国自主研发的全球卫星导航系统&#xff0c;不仅在军事和民用领域显示出了巨大潜力&#xff0c;也在应对生态保护挑战中发挥了重要作用。本篇文章…

ue5正确导入资源 content(内容),content只能有一个

把资源content下的东西&#xff0c;全部拷贝&#xff0c;放在项目的content下 content只能有一个

除毛除臭不够彻底?宠物空气净化器帮你解决

之前养猫的时候就想买一个空气净化器吸一吸空气的浮毛&#xff0c;尤其是夏天&#xff0c;因为夏天天气热流汗也会多&#xff0c;每次外出回家之后全身都是汗的时候想坐下来吹一下空调&#xff0c;但是一坐下去就会发现&#xff0c;沙发上全都是猫咪浮毛&#xff0c;而且还没开…

了解Android

Android 系统架构 从图中可以看出&#xff0c;整个Android操作系统分为五层。它们分别是&#xff1a; 内核层 Android系统是基于Linux内核的&#xff0c;这一层为Android设备的各种硬件提供了底层的驱动。硬件抽象层 该层为硬件厂商定义了一套标准的接口。这样可以在不影响上层…

Labelimg安装、使用及不显示标注、覆盖标签等问题

目录 1 安装 2 基本使用方法 3 显示已标记图片的标记 4 覆盖标签的问题 简单记录下Labelimg安装、使用以及在使用过程中遇到的几个问题的解决方法&#xff0c;以免忘记。 1 安装 这里是在Anaconda中搭建机器学习的环境&#xff0c;在Anaconda Prompt中激活虚拟环境后&…

C++ 之动手写 Reactor 服务器模型(二):服务器模型概述以及 Reactor 服务器 V1 版本实现

五种网络 IO 模型 就是下面五种&#xff1a; 要注意同步与异步、阻塞与非阻塞的辨析&#xff0c;常见误解就是认为&#xff1a;同步就是阻塞&#xff0c;异步就是非阻塞。 接下来分别给出例子来说明这五种 IO 模型。 基础知识 操作系统分为用户态和内核态。 一个网络数据输…

STM32低功耗与备用备份区域

STM的备份备用区域其实就是两个区块&#xff1a;BKP和RTC。低功耗则其实是STM32四种模式中的三种耗能很低的模式。 目录 一&#xff1a;备用区域 1.BKP 2.RTC 二&#xff1a;低功耗模式 1.睡眠模式&#xff1a; 2.停机模式&#xff1a; 3.待机模式&#xff1a; 一&…

AI绘画赏析:基于Stable Diffusion扩散模型

**Stable Diffusion**是2022年发布的深度学习文本到图像生成模型。它主要用于根据文本的描述产生详细图像&#xff0c;尽管它也可以应用于其他任务&#xff0c;如内补绘制、外补绘制&#xff0c;以及在提示词指导下产生图生图的翻译。它是一种潜在扩散模型&#xff0c;由慕尼黑…

【网络安全】15种常见网络攻击类型及防御措施_请列举至少三种常见的网络攻击类型,并说明如何通过防火墙、入侵检测系统等工具来

随着攻击者效率和复杂性的提高&#xff0c;网络犯罪每年都在急剧增加。网络攻击的发生有多种不同的原因和多种不同的方式。但是&#xff0c;一个共同点是网络犯罪分子会寻求利用组织的安全策略、实践或技术中的漏洞。 什么是网络攻击&#xff1f; 网络攻击是指攻击者出于盗窃…

防火墙入侵防御实验

一、实验目的及拓扑 实验目的&#xff1a;在防火墙上配置入侵防御&#xff08;跨站脚本攻击&#xff09;策略并在安全策略应用&#xff0c;通过虚拟机访问进行验证 二、基本配置 1、如图所示配置接口地址&#xff08;省略&#xff09; 2、配置区域接口 [FW1]dis zone loca…

文字翻译工具软件哪个好?这5款翻译神器好用到犯规

在日常工作和学习中&#xff0c;遇到需要翻译文字的情况再所难免。无论是查阅外文文献、与国际友人交流&#xff0c;还是理解不同语言的资讯&#xff0c;一款好用的文字翻译工具app都能大大提升我们的效率。 今天&#xff0c;我将给大家安利5款超实用的文字翻译工具app &#…

运维工程师必备技能:nc命令详解

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 ​ &#x1f3c5;2022年CSDN原力计划优质作者 ​ &#x1f3c5;阿里云ACE认证高级工程师 ​ &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流…