#include<stdio.h> #include<windows.h> #include<math.h> #include<time.h> #include<stdlib.h> void ProBar() { char bar[101] = { 0 }; char ch[] = { "|/-\\" }; int i = 0; int y = 0; while (i <= 100) { y = rand() % 8 + 40; int x = rand() % 8 + 30; //利用格式化字符让printf输出不同的颜色 printf("[\033[1;%d;%dm%-100s\033[0m][\033[1;%d;%dm%2d\033[0m%%][%c]\r", x, 40, bar, y - 10, 40, i, ch[i % 4]); fflush(stdout); Sleep(100);//这里控制进度条的每一次进度条的刷新时间(注意是以毫秒为单位!) if (i < 100) { bar[i] = '='; } i++; if (i < 100) bar[i] = '>'; } printf("\n"); } double func(float x, float y) { float a = (x * x + y * y - 1) * (x * x + y * y - 1) * (x * x + y * y - 1); return a - x * x * y * y * y; } void Love() { float x = 0.0f; float y = 0.0f; char key = '*'; for (y = 1.5f; y >= -1.0f; y -= 0.1f) { key = '*'; for (x = -1.5f; x < 1.5f; x += 0.05f) { if (func(x, y) <= 0.0) { int x = rand() % 8 + 30; printf("\033[1;%d;40m%c\033[0m", x, key); } else { printf(" "); } } fflush(stdout); Sleep(1000);//这里控制每一行爱心出现的时间间隔 printf("\n"); } //这里可以留言,'\t'字符相当于Tab,将我们的字顶到爱心的中间位置,可以根据实际情况适当添加或减少 printf("\t\t\t Hello World!\n"); } int main() { srand((unsigned int)time(NULL)); ProBar(); Love(); return 0; }
时间: 2024-04-14 11:31:29 浏览: 193
这段代码是一个在控制台中打印进度条和爱心的程序。它使用了C语言的一些库函数和一些控制台输出格式化技巧。
在代码的开头,包含了一些头文件,如stdio.h、windows.h、math.h、time.h和stdlib.h,分别是标准输入输出、Windows系统API、数学函数、时间函数和标准库函数的头文件。
接下来定义了一个函数ProBar(),用于打印进度条。该函数内部使用了一个字符数组bar来表示进度条的状态,然后使用printf函数输出带有颜色的进度条。进度条的颜色是通过控制台输出格式化字符来实现的,其中\033[1;%d;%dm表示设置输出的颜色,\033[0m表示恢复默认颜色。进度条的刷新时间是通过Sleep函数控制的。
然后定义了一个函数func(),用于计算一个数学函数的值。这个函数被用于判断爱心图案中每个点的位置。
最后定义了一个函数Love(),用于打印爱心图案。该函数使用两个循环嵌套来遍历爱心图案的每个点,并根据该点的位置调用func()函数判断是否需要打印字符。打印字符时使用了相同的格式化字符来设置输出的颜色。
在main函数中,调用了srand()函数来初始化随机数生成器。然后分别调用ProBar()函数和Love()函数来打印进度条和爱心图案。
最后返回0,表示程序正常结束。
相关问题
//头文件 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #include<time.h> #include<windows.h>
这些头文件在C/C++编程中扮演着关键角色,它们包含了各种库函数的声明,使得程序能够使用相应的功能。让我们逐一解释:
1. `stdio.h`:标准输入输出库,提供了基本的输入输出操作,如printf(格式化打印)和scanf(格式化输入)。
2. `stdlib.h`:标准库,包含了许多实用程序函数,如malloc(动态内存分配)、free(释放内存)、rand(随机数生成)等。
3. `string.h`:字符串处理库,提供了字符串操作函数,如strcpy(复制字符串)、strlen(计算字符串长度)等。
4. `math.h`:数学运算库,用于执行基本和高级数学运算,比如sin、cos、sqrt(平方根)等。
5. `time.h`:时间处理库,提供获取当前时间和日期、定时器等功能。
6. `windows.h`:Windows API的一部分,如果是在Windows环境中编译,这个头文件包含了Windows特有的系统定义和函数,比如创建窗口、消息循环等。
在使用这些头文件之前,记得包含它们,这样编译器就能找到相关函数的实现。如果你在其他操作系统或跨平台项目中,某些头文件可能不适用。在编写代码时,要根据实际需求和环境选择合适的库。
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #include<time.h> #include<windows.h>这几个代码分别是什么意思
这些头文件在C语言中引入了不同的库和功能:
1. `#include<stdio.h>`: 这个头文件包含了标准输入输出函数(如printf, scanf, getchar等),用于处理用户交互和基本的文本流操作。
2. `#include<stdlib.h>`: 此头文件提供了系统级的内存管理函数,如malloc()、calloc()、realloc()和free(),用于动态内存分配和释放。
3. `#include<string.h>`: 提供了字符串处理函数,比如strlen()计算字符串长度,strcpy()和strcat()复制和连接字符串等。
4. `#include<math.h>`: 包含数学运算相关的函数,例如sin(), cos(), sqrt()等,用于执行基本的数学计算。
5. `#include<time.h>`: 此头文件包含时间和日期处理函数,如time()获取当前时间戳,以及用于格式化时间的函数。
6. `#include<windows.h>`: 这是Windows API的一部分,仅对Windows环境有意义。它包含了一些特定于Windows的操作,比如窗口创建和消息处理,与图形用户界面(GUI)相关。
阅读全文