c语言打印三角形、圆形和

一、三角形

例题:若底边长为 n,层高为 n / 2 + 1,n必定为奇数
输入:三角形底边长
输出:三角形

这个题目很简单,只要循环几次,每次先打印空格,在打印符号,空格每次少一个,符号每次多一个就可以了
代码如下:

int main()
{
    while(scanf("%d",&n)!=EOF)
    {
        for(int i = 0;i <= n / 2;i++)
        {
            for(int j = n / 2 + 1 - i;j >= 1;j--)
            {printf(" ");}
            for(int k = n / 2 + 2 - i;k <= n / 2 + 2 + i;k++)
            {printf("*");}
            printf("\n");
        }
    }
    return 0;
}

二、圆形

例题: 画个圆形(不考虑行高和行间距带来的影响了)
输入:圆形半径
输出:圆形

公式:(x-r)^ + (y-r)^ = r^
这个题目原理和上面一样,就不停循环,判断点在不在圆上,如果在的话,输出符号,不然输出空格
难点在于调距离
我建议是调成r^ - r <=(x-r)^ + (y-r)^ <= r^ + r

代码如下:

for(int i = 0;i < 2 * r + 2;i++)
        {
            for(int j = 0;j < 2 * r + 2;j++)
            {
                if(((i - r - 1) * (i - r - 1) + (j - r - 1) * (j - r - 1) <= r * r + r )&& ((i - r - 1) * (i - r - 1) + (j - r - 1) * (j - r - 1) >= r * r - r))
                {printf(" *");}
                else
                {printf("  ");}
            }
            printf("\n");
        }

三、心形

例题:
输入:无
输出:爱心

心型线方程为x^ + y^ + ay = a√(x^ +y^)
此题比第二题复杂一点,因为x和y小于2大于等于-1
所以要把点微化,原来一个点代表0.1
再调一下距离,就可以了
还要注意循环的方向和循环结构,不然图形可能方向不朝上了

代码如下:

for(int i = 18;i >= -12;i--)
    {
        double y = i * 0.1;
        for(int j = 36;j >= -24;j--)
        {
            double x = j * 0.05;
            double pl = pow(x * x,1.0 / 3);
            if(x * x + (y - pl) * (y - pl) <= 1.5&&x * x + (y - pl) * (y - pl) >= 0)
            {printf("*");}
            else
            {printf(" ");}
        }
        printf("\n");
    }

四、总结

c语言打印图形问题,一般是先找出图形方程,再绘图,再调距离。当然你也可以直接把图形的样子输入到代码中,直接打印出来,不过要注意换行符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值