热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

程序员式浪漫:圣诞树成为最新流行趋势

文章目录前言正文一、圣诞树实现的基本流程二、整个程序由多文件实现1、test.h文件2、test.cpp源文件3、shengdanshu.cpp源文件结语前言MerryChrist

《听说最近圣诞树很流行啊,程序员式浪漫来咯~》

文章目录

    • 前言
    • 正文
  • 一、圣诞树实现的基本流程
  • 二、整个程序由多文件实现
    • 1、test.h 文件
    • 2、test.cpp源文件
    • 3、shengdanshu.cpp源文件
    • 结语

前言

Merry Christmas,everyone! 圣诞节到了,大家都在开心的谈论到圣诞树和圣诞老人等有趣的话题。然后作为代码人,仍然也离不开生活,当然生活也离不开代码哈!
在生活中有很多浪漫,提到代码人或程序员,大家都只能想到他们只会埋头敲键盘,除了敲代码还是敲代码!这样的认知是片面的,程序员也有自己的趣事,也也拥有程序员式浪漫!这里我们就来看一个简单的程序员式浪漫吧!今天,forever 将给大家带来一棵圣诞树哦~快去将此树送给你们最亲最爱的人吧!

正文

一、圣诞树实现的基本流程

1、创建工程,首先考虑自己的整个工程需要由多少头文件和源文件组成,forever 的详细工程创建如下面分析;
2、考虑好对应给每个文件分配什么内容(头文件和源文件),即它们的作用;
3、接下来放主函数,以主函数为主干,对其进行分支;
4、祝福语函数的实现;
5、菜单函数的实现;
6、圣诞树由四层组成,首先打印圣诞树树顶;
7、打印圣诞树第二层;
8、打印圣诞树第三层;
9、打印圣诞树底部;
10、完整的圣诞树。

二、整个程序由多文件实现

1、test.h 文件

test.h 文件是程序整体的头文件,它包含库函数头文件的引用、宏定义以及函数的声明。

头文件代码如下:


#include
#include
#include
#define HIGH1 8
#define HIGH2 16
#define WIDE 6
#define C 8
void manu();
void Blessingwords();//祝福语函数
void firsttree(char ch[C], int c, int n);//打印第一层树顶函数
void secoundtree(char ch[C], int c, int n);//打印圣诞树第二层函数
void threetree(char ch[C], int c, int n);//打印圣诞树第三层函数
void underthetree(char ch[C], int c, int n);//打印圣诞树底层函数
void loverheart();//打印爱心函数

2、test.cpp源文件

这个源文件里放的是主函数,是整个程序的主体。


#include "test.h"
int main()
{
srand((unsigned int)time(NULL));//生成随机值的前缀
Blessingwords();//调用祝福语函数
printf("\n");
unsigned int m = 0;
do
{
unsigned int n = 0;
char ch[C] = "!@#$%&*";
manu();//调用菜单函数
printf("宝儿,请选择以上数字后按enter:");
scanf("%d", &m);
printf("\n");
switch (m)
{
case 0:printf("宝儿,请收好你的专属圣诞树,虽然圣诞节是西方节日,但仍然在这里祝你圣诞节快乐,祝你每天都开开心心的!\n");
break;
case 1:printf("宝儿,请输入你心中圣诞树的大小(50-100整数)后按enter:");
scanf("%d", &n);
firsttree(ch,C,n);//调用打印树顶函数
secoundtree(ch, C, n);//调用打印圣诞树第二层函数
threetree(ch, C, n);//调用打印圣诞树第三层函数
underthetree(ch, C, n);//调用打印圣诞树根部函数
printf("宝儿,请收好你的专属圣诞树,虽然圣诞节是西方节日,但仍然在这里祝你圣诞节快乐,祝你每天都开开心心!\n");
loverheart();
break;
default:printf("你有点皮哦!请重新输入正确数字!\n");
}
} while (m);
return 0;
}

3、shengdanshu.cpp源文件

这个源文件是主函数的分支,实现主函数里面调用的自定义函数,也是整个程序具体逻辑的实现。


#include "test.h"
void Blessingwords()//实现祝福语函数
{
printf("Christmas is coming.\n");
printf("I give you a Christmas tree.\n");
printf("I wish you a smooth exam in advance.\n");
printf("Wish you have a happy Christmas with your boyfriend (girlfriend) ha!\n");
printf("\n");
}
void manu()//菜单函数
{
printf("——————————————————\n");
printf("——— 1.请接收您的专属圣诞树 ———\n");
printf("——— 0.已经收下圣诞树并感谢 ———\n");
printf("——————————————————\n");
printf("\n");
}
void firsttree(char ch[C],int c,int n)//实现打印树顶函数
{
for (int i = 0; i < n / 3; i += 4)
{
for (int j = 0; j < n / 2 - i / 2; j++)
{
printf(" ");
}
for (int j = 0; j <= i; j++)
{
int s = rand() % 7;
printf("%c",ch[s]);
}
printf("\n");
}
}
void secoundtree(char ch[C], int c, int n)//实现打印圣诞树第二层函数
{
for (int i = 0; i < (n / 3)+HIGH1; i += 4)
{
for (int j = 0; j < n / 2 - i / 2; j++)
{
printf(" ");
}
for (int j = 0; j <= i; j++)
{
int s = rand() % 7;
printf("%c", ch[s]);
}
printf("\n");
}
}
void threetree(char ch[C], int c, int n)//实现打印圣诞树第三层函数
{
for (int i = 0; i < (n / 3) + HIGH2; i += 4)
{
for (int j = 0; j < n / 2 - i / 2; j++)
{
printf(" ");
}
for (int j = 0; j <= i; j++)
{
int s = rand() % 7;
printf("%c", ch[s]);
}
printf("\n");
}
}
void underthetree(char ch[C], int c, int n)//实现打印圣诞树根部函数
{
int s = rand() % 7;
for (int i = 0; i < n / 3; i += 4)
{
for (int j = 0; j <n/2-3; j++)
{
printf(" ");
}
for (int j = 0; j <= WIDE; j++)
{
int s = rand() % 7;
printf("%c", ch[s]);
}
printf("\n");
}
}
void loverheart()//实现爱心打印函数
{
printf("收到圣诞树了,再附带一颗爱心\n");
printf("\n");
char c = '*';
//心冠
for (int i = 1; i < 4; i++)
{
for (int j = 1; j < 27 - i * 2; j++)
{
printf(" ");
}
for (int k = 1; k <= i * 4 + 1; k++)
{
printf("%c", c);
}
for (int m = 1; m <= 9 - 4 * (i - 1); m++)
{
printf(" ");
}
for (int n = 1; n <= i * 4 + 1; n++)
{
printf("%c", c);
}
printf("\n");
}
//心的中间部分
for (int i = 1; i < 4; i++)
{
for (int j = 1; j < 20; j++)
{
printf(" ");
}
for (int k = 1; k <= 29; k++)
{
printf("%c", c);
}
printf("\n");
}
//心的底部倒三角
for (int i = 1; i < 8; i++)
{
for (int j = 1; j < 20 + 2 * i; j++)
{
printf(" ");
}
for (int k = 1; k <= 29 - 4 * i; k++)
{
printf("%c", c);
}
printf("\n");
}
}

整体程序运行结果:
《听说最近圣诞树很流行啊,程序员式浪漫来咯~》
《听说最近圣诞树很流行啊,程序员式浪漫来咯~》

结语

圣诞节降至,今天 forever 给大家呈现的就是这颗圣诞树以及树后附赠的真心哈!让大家也感受感受理科生甚至是程序员式浪漫,也希望给大家带来很多乐趣和提高对代码的兴趣,消除枯燥乏味!
快拿起树去送给你最亲最爱的人吧!
生活中不缺少美,只是缺少发现的眼;当然,生活中也不缺少乐趣,只是缺少发现而已。虽然圣诞节是洋节,我们不过于看重,但是一句“祝大家圣诞节快乐!”还是可以说的哈!
谢谢观看!
再见!
以上代码均可运行,所用编译环境为 vs2019 ,运行时注意加上编译头文件#define _CRT_SECURE_NO_WARNINGS 1


推荐阅读
  • 使用C++编写程序实现增加或删除桌面的右键列表项
    本文介绍了使用C++编写程序实现增加或删除桌面的右键列表项的方法。首先通过操作注册表来实现增加或删除右键列表项的目的,然后使用管理注册表的函数来编写程序。文章详细介绍了使用的五种函数:RegCreateKey、RegSetValueEx、RegOpenKeyEx、RegDeleteKey和RegCloseKey,并给出了增加一项的函数写法。通过本文的方法,可以方便地自定义桌面的右键列表项。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • c语言\n不换行,c语言printf不换行
    本文目录一览:1、C语言不换行输入2、c语言的 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
  • 本文介绍了brain的意思、读音、翻译、用法、发音、词组、同反义词等内容,以及脑新东方在线英语词典的相关信息。还包括了brain的词汇搭配、形容词和名词的用法,以及与brain相关的短语和词组。此外,还介绍了与brain相关的医学术语和智囊团等相关内容。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
author-avatar
玄天战猫
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有