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;
}
相關文章
相關標籤/搜索