C打印出钻石形状
最近开始看C语言课程设计的书,看到上面又一道题目是让学生实现一个用*打印出Diamand形状,我先自己设计了一个算法,然后再看了书上的算法,下面我将会放出我自己的算法和书上给出的两种算法:
效果如下:
下面是我设计的算法:
#include<stdio.h>
void Diamand(int);
int main()
{
int number;
printf(".请输入您要输出的Diamand的大小:");
scanf("%d",&number);
Diamand(number);
return 0;
}
void Diamand(int number)
{
int maxStar=2*number-1;
int i,j,k,space,star;
for(i=1;i<number+1;i++)
{
if(i<=(number/2)+1)
{
space=maxStar-i;
for(j=0;j<space;j++)
{
printf(" ");
}
//打印*
star=2*i-1;
for(k=1;k<star+1;k++)
{
printf("*");
}
printf("\n");
}
else
{
int l=(number/2+1)*2-i;
space=maxStar-l;
star=2*l-1;
for(j=0;j<space;j++)
{
printf(" ");
}
for(k=1;k<star+1;k++)
{
printf("*");
}
printf("\n");
}
}
}
下面是书上给出设计的算法:
void Dimand()
{
int i,j,k;
printf("打印菱形图案\n");
for(i=1;i<=4;i++)
{
for(j=1;j<=16-i;j++)
{
printf(" ");
}
for(k=1;k<=(2*i-1);k++)
{
printf("*");
}
printf("\n");
}
for(i=1;i<=3;i++)
{
for(j=1;j<=i+12;j++)
{
printf(" ");
}
for(k=1;k<=(7-2*i);k++)
{
printf("*");
}
printf("\n");
}
}