用C语言解决分形宇宙问题。要求多组输入,每组输入一个正整数 n,n 不大于 5。要求对应于每组数,输出相应的分形图,并用一个 “-” 分隔
时间: 2024-02-13 21:07:06 浏览: 59
用C 语言实现分形图形
5星 · 资源好评率100%
下面是一个用C语言实现科赫曲线的完整代码,可以根据需要进行修改和扩展。
```c
#include <stdio.h>
// 递归绘制科赫曲线
void koch(int n, double x1, double y1, double x2, double y2)
{
if (n == 0) {
// 递归终止条件
printf("%.2f %.2f - ", x1, y1);
} else {
// 计算三个点的坐标
double x3 = (2 * x1 + x2) / 3;
double y3 = (2 * y1 + y2) / 3;
double x4 = (x1 + 2 * x2) / 3;
double y4 = (y1 + 2 * y2) / 3;
double x5 = (x3 + x4 + sqrt(3) * (y4 - y3)) / 2;
double y5 = (y3 + y4 + sqrt(3) * (x3 - x4)) / 2;
// 递归绘制子线段
koch(n - 1, x1, y1, x3, y3);
koch(n - 1, x3, y3, x5, y5);
koch(n - 1, x5, y5, x4, y4);
koch(n - 1, x4, y4, x2, y2);
}
}
int main()
{
int n;
while (scanf("%d", &n) != EOF) {
// 计算起点和终点坐标
double x1 = 0, y1 = 0;
double x2 = 1, y2 = 0;
// 绘制科赫曲线
koch(n, x1, y1, x2, y2);
// 输出分隔符
printf("-\n");
}
return 0;
}
```
这个程序中,`koch`函数用于递归绘制科赫曲线,它接受曲线级别n和起点(x1,y1)和终点(x2,y2)的坐标作为参数。在绘制过程中,它将曲线分为四段,并递归绘制这四段曲线的子曲线。当递归到最底层时,它将终点坐标输出到屏幕上。
在主函数中,我们可以通过循环读入多组数据,计算起点和终点坐标,并调用`koch`函数绘制科赫曲线。每组数据绘制完成后,输出分隔符`-`。
阅读全文