代码复现通过云课,会非常快捷。
https://www.bilibili.com/video/BV1uM41197NG?t=7.7
云课五分钟-02第一个代码复现-终端甜甜圈C++
如何使用g++
使用g++编译和链接C++程序的基本步骤如下:
.cpp
文件。例如,你可以创建一个名为hello.cpp
的文件,其中包含一个简单的Hello World程序。
cd
命令导航到包含源代码文件的目录。例如,如果你的源代码文件在名为my_project
的目录中,你可以使用cd my_project
进入该目录。
g++ [options] filename |
---|
例如,要编译hello.cpp
文件,你可以输入以下命令:
g++ -o hello hello.cpp |
---|
在上面的命令中,-o hello
指定输出文件的名称,即生成的可执行文件将命名为hello
。
5. 运行可执行文件:如果编译成功,g++将生成一个可执行文件。在上面的示例中,它将生成一个名为hello
的可执行文件。你可以通过在终端中输入以下命令来运行它:
./hello |
---|
如果一切顺利,它将运行你的程序并显示输出。
请注意,这只是使用g++的基本方法。g++有很多编译选项和参数可以使用,包括优化级别、警告级别、调试信息等。你可以通过查阅g++的文档或使用man g++
命令在终端中查看更多详细信息。
此外,对于大型项目,通常使用构建系统(如Make或CMake)来自动化编译和构建过程,以确保代码的正确组织和高效编译。
#include <stdio.h>
#include <math.h>
#include <cstring>
#include <unistd.h>
int main() {
float A = 0, B = 0;
float i, j;
int k;
float z[1760];
char b[1760];
printf("\x1b[2J");
for (;;) {
memset(b, 32, 1760);
memset(z, 0, 7040);
for (j = 0; j < 6.28; j += 0.07) {
for (i = 0; i < 6.28; i += 0.02) {
float c = sin(i);
float d = cos(j);
float e = sin(A);
float f = sin(j);
float g = cos(A);
float h = d + 2;
float D = 1 / (c * h * e + f * g + 5);
float l = cos(i);
float m = cos(B);
float n = sin(B);
float t = c * h * g - f * e;
int x = 40 + 30 * D * (l * h * m - t * n);
int y = 12 + 15 * D * (l * h * n + t * m);
int o = x + 80 * y;
int N = 8 * ((f * e - c * d * g) * m - c * d * e - f * g - l * d * n);
if (22 > y && y > 0 && x > 0 && 80 > x && D > z[o]) {
z[o] = D;
b[o] = ".,-~:;=!*#$@"[N > 0 ? N : 0];
}
}
}
printf("\x1b[H");
for (k = 0; k < 1761; k++) {
putchar(k % 80 ? b[k] : 10);
A += 0.00004;
B += 0.00002;
}
usleep(30000);
}
return 0;
}
这段代码是一个基于终端的动画程序,它在终端中生成一个动态变化的图形。该程序使用了一系列数学函数(如正弦、余弦)来计算出图形上每个点的位置,然后将这些点绘制到终端上。下面是对代码的详细分析:
stdio.h
,数学库math.h
,字符串处理库cstring
和Unix标准库unistd.h
。main()
函数中,声明了一些变量,包括浮点数A、B、i、j和整数k。还声明了两个大小为1760的浮点数组z和字符数组b。printf("\x1b[2J");
清空终端屏幕。memset()
函数对字符数组b和浮点数组z进行初始化。printf("\x1b[H");
将光标移动到终端的左上角位置,然后通过循环遍历数组b,将字符逐个输出到终端上。同时,A和B的值也在每次循环中微调,以实现动画效果。usleep(30000);
函数使程序暂停30毫秒,以控制动画的速度。总结起来,这段代码通过数学计算生成图形,并在终端上动态显示该图形。通过调整A和B的值,以及使用延时函数,实现了动画效果。整个程序运行在一个无限循环中,除非手动终止程序,否则它将一直运行下去。