c基础(打印出菱形图案)

方法一:(自个写的用数学方法寻找每行的规律,一次打印一行)有点麻烦code

#include<stdio.h>
int main()
{
	int i,j,n,k=0;
	/********输入一个数用来控制打印出菱形的宽度*********/
	scanf("%d",&n);
	char a[2*n-1][2*n-1];
	/*********分两部分打印每次打印出一行**************/
	for(i=0;i<n;i++)
	{
		for(j=0;j<2*n-1;j++)
		{
			if(j>=((2*n-1)/2-i)&&j<=((2*n-1)/2+i)) /**寻找每行的规律***/
				putchar('*');
			else
				putchar('.');
		}
		putchar(10);
	}
	for(i=n;i<2*n-1;i++)
	{
		k++;//此变量只是用于找规律而加的一个参数
		for(j=0;j<2*n-1;j++)
		{
			if(j>=((2*n-1)/2-i+2*k)&&j<=((2*n-1)/2+i-2*k))
				putchar('*');
			else
				putchar('.');
		}
		putchar(10);
	}	
	return 0;
}

方法二:(分六部分打印)get

 

#include <stdio.h>

int main()
{
	int i,j;
	int nu;
	puts("input your number:");//控制菱形的行数,不是总行数而是到中间的行数
	while(1 != scanf("%d",&nu))
		getchar();
         //分两大部分,每部分再分为三部分	
	for(i = 0; i < nu; i ++)
	{
		for(j = nu - i; j > 0; j --)
			putchar('.');
		for(j = 0; j < 2 * i + 1; j ++)
			putchar('*');
		for(j = nu - i; j > 0; j --)
			putchar('.');
		putchar(10);
	}
	for(i = 0; i < nu -1; i ++ )
	{
		for(j = 0;j < i + 2; j ++ )
			putchar('.');
		for(j = 2 * (nu - i) - 3; j > 0; j -- )
			putchar('*');
		for(j = 0;j < i + 2; j ++ )
			putchar('.');
		putchar(10);
	}
	return 0;
}
相关文章
相关标签/搜索