【打印菱形】

题目:打印一个空心菱形
//以菱形的中心点为坐标原点(0,0),当|x|+|y|==n/2时说明当前坐标是菱形边缘位置
//因为以菱形中心为原点,所以循环次数得折半 
//当输入n=7时,n/2=3需要打印的坐标点为(3,0),(-3,0),(1,2),(2,1)  等等
 

代码实现:

#include<stdio.h>
#include<math.h>

int main()
{
    int n,x,y;
    //输入菱形的行数 
    scanf("%d",&n);
    putchar('\n');
    printf("打印%d行的空心菱形如下:\n",n);
    n = n/2;
    //循环范围 
    //-(n/2)+n/2 = n; 
    for(x = -n;x<=n;x++)
    {
        for(y = -n;y<=n;y++)
        {
            //打印菱形的条件  

            //abs(x) 代表的是x的绝对值,包含的头文件是<math.h>
            if(abs(x)+abs(y)==n)
            {
                printf("*");
            }
            else
            //不满足条件打印空格 
            printf(" ");
        }
        //每打印完一行就换行 
        putchar('\n');
    }
    
    return 0;
 } 

程序运行结果:

题目:打印实心菱形
//以菱形中心为坐标原点,所以循环的范围是-n/2到n/2
//属于菱形范围的是(x>=-n/2&&x<=n/2)和(y>=-n/2&&y<=n/2)

代码实现:

#include<stdio.h>
#include<math.h>

int main()

{
    int x,y,n;
    //输入行数 
    scanf("%d",&n);
    putchar('\n');
    
    printf("打印%d行的实心菱形如下:\n",n);
    //以坐标原点为菱形的中心,所以n = n/2 
    n=n/2;
    //因为要打印整个菱形,所以循环的范围需要是 -n 到 n  
    for(x = -n;x<=n;x++)
    {
        for(y = -n;y<=n;y++)
        {
            //|x|+|y|<= n 是菱形内部的坐标范围 
            if((abs(x)+abs(y))<=n)
            {
                printf("*");
            }
            else
            {
                printf(" ");
            }
        }
        putchar('\n');
    }
    return 0;
 } 
 

程序运行结果:


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值