重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
首先画一个菱形,看一下规律在哪里,先看下图:
成都创新互联公司专注于安康网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供安康营销型网站建设,安康网站制作、安康网页设计、安康网站官网定制、小程序制作服务,打造安康网络公司原创品牌,更为您提供安康网站排名全网营销落地服务。
见上图菱形,定义尺寸为size=3,
定义X坐标为i:
A区域X坐标为i,Y坐标为size-i;
B区域X坐标为i,Y坐标为size+i;
C区域X坐标为i,Y坐标为i-size;
D区域X坐标为i,Y坐标为size*3-i
满足1,2,3,4的情况下就输出*,其它则输入空格,这样我们就得到一个菱形,代码如下和输出效果如下:
size = 3 # 定义菱形尺寸
count = size*2+1 # 定义X,Y坐标循环范围
# i为横坐标
for i in range(count):
# j为纵坐标
for j in range(count):
# 当X,Y满足条件1和2时
if i = size and (j == size-i or j == size+i):
print('*', end='')
# 当X,Y满足条件3和4时
elif i size and (j == i-size or j == size*3-i):
print('*', end='')
# 其它情况输入空格
else:
print(' ', end='')
# 每打印一行就换行
print()
#includestdio.h
int main()
{int n,i,j;
scanf("%d",n);
for(i=0;in;i++) //打印菱形的上半部,共n行
{for(j=0;jn-i;j++) //打印每行开头的空格
printf(" ");
for(j=0;j2*i+1;j++) //打印一行上的*号
printf("*");
printf("\n"); //一行排印结束后换行
}
for(i=n-2;i=0;i--)
{
for(j=0;jn-i;j++)
printf(" ");
for(j=0;j2*i+1;j++)
printf("*");
printf("\n");
}
return 0;
}
我的是C#编的,语言不重要,关键是掌握方法,我晚自习想了两节课后自己想到了原创的算法(虽然回家调试没得到菱形,但很快就修改成功了)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 字符图案输出
{
class Program
{
static void Main(string[] args)
{
bool b = true;
while (b == true)
{
try//判断数据是否合法↓
{
Console.Write("请输入一个奇数: ");
int n = Convert.ToInt32(Console.ReadLine());
if (n % 2 == 0)
{
continue;
}
for (int i = 1; i = (2 * n) -1; i++)
{
for (int j = 1; j = Math.Abs(n - i); j++)//绝对值实现对称, 如:3210123,想想,◆是不是先输出空格,并逐行减少, 后逐行增多
{
Console.Write(' ');
}
for (int k = 1; k = Math.Abs(n - Math.Abs(n - i)); k++)//同理,◆第一行输出1个*,后逐行增多,然后又逐行减少
{
Console.Write("* ");//如果*后没有空格,则是半个菱形
}
Console.WriteLine();
}
}
catch
{
b = true;
}
}
}
}
}