c语言科赫曲线问题求解

问题遇到的现象和发生背景

有一个边长为 n 的等边三角形,以此三角形为初始状态开始生成科赫曲线。

求第k次执行此过程后的曲线长度
输入两个整数n k,分别代表等边三角形的边长和要执行的次数。(1<=n<=1000, 1<=k<=20)

img

用代码块功能插入代码,请勿粘贴截图
#include<stdio.h>
#include<math.h>
int main()
{
    int n,k;
    scanf ("%d%d",&n,&k);
    double x=(double)n;
    double y=(double)k;
    double sum;
    int m=3;
    if(n>=1&&n<=1000&&k<=20&&k>=1)
    {
        for (long int i=1;i<=k;i++)
        {
            x/=3;
            m=4*m;
            sum=m*x;
        }
    }
    printf ("%.2lf",sum);
    return 0;
}

运行结果及报错内容

当k大于15后就输出负数了

img


img

可能是发生数据溢出了,尝试每次计算完后保留有效小数

x=(int)(100.0*x)/100.0;//保留2位小数