开始编写程序前,我们需要先找到菱形的规律。
1.菱形的行数k为奇数,除中间一行外上下对称,我们可以将中间行归到上半部分,上半部分行数为k=k/2+1,下半部分为k=k/2。
2.菱形每一行的*数量递增或递减两个。
3.空格数每一行递减(递增)一个,到中间行为0,可知空格数为 k-(+)当前行数
得出结论后即可开始编写代码
首先声明变量并让用户输入菱形的行数


int i,j,z,n,k;
printf("请输入菱形的行数:\n"); 
scanf("%d",&k); 
k = k / 2 +1; 

上半部分的菱形


for(i=1,n=1; i<= k; i++)
{
	n = 2*i-1;
	for(j=k-i; j>0; j--)
	{
		printf(" ");
	}
	for(z=0; z< n; z++)
	{
		printf("*");
	}
	printf("\n");
}

当上半部分编写完成后,我们需要将星号的数量n减少2,因为我们将中间行也归到了上半部分中。
n-=2;


for(i=0; i<k-1; i++)
{
	for(j=0; j<i+1; j++)
	{
		printf(" ");
	}
	for(z=n-2*i; z>0; z--)
	{
		printf("*");
	}
	printf("\n");
}

下半部分菱形


运行结果
完整代码:

#include<stdio.h>
int main()
{	
	int i,j,z,n,k;
	printf("请输入菱形的行数:\n"); 
	scanf("%d",&k); 
	k = k / 2 +1; 
	for(i=1,n=1; i<= k; i++)
	{
		n = 2*i-1;
		for(j=k-i; j>0; j--)
		{
			printf(" ");
		}
		for(z=0; z< n; z++)
		{
			printf("*");
		}
		printf("\n");
	}
	n-=2;
	for(i=0; i<k-1; i++)
	{
		for(j=0; j<i+1; j++)
		{
			printf(" ");
		}
		for(z=n-2*i; z>0; z--)
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
} 

更多推荐

C语言程序设计 | 打印一个n行的菱形