【打印菱形】
题目:打印一个空心菱形
//以菱形的中心点为坐标原点(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;
}
程序运行结果: