打印菱形图案的做法(多种)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tonglin12138/article/details/85452087

话不多说,直接上代码

//简单版本
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main()
{   
    
    int j=0;
    int i=0;
    char a[20]={"       *       "};
    char b[20]={"***************"};
    char c[20]={"       *       "};
    printf("%s\n",a);
     for(i=1 ;i<=7 ;i++)
       {
         a[7+i]=b[7+i];
         a[7-i]=b[7-i];        
         printf("%s\n",a);
         }
    
     for(i=7 ;i>0 ;i--)
     {
         a[7-i]=c[7-i];
         a[7+i]=c[7+i];
            printf("%s\n",a);
    
     }


    system("pause");

    return 0;
//
//复杂版本
#include<stdio.h>                           /*打印菱形图案*/
int main (void)
{
	int n,j,i;                              /*i为行数,j为每行中的项数*/
	printf("(n为奇数)输入图案高度n:\n");
	scanf("%d",&n);
	if (n<=0||n%2==0)                        /*判断n输入正误*/
		printf("输入错误!");
	else
	{
		for(i=1;i<=n/2+1;i++)               /*打印上三角,(包括中间行)*/
		{
			for(j=1;j<=n/2+i;j++)       
			{
				if(j>=n/2-i+2)
					printf(" *");
				else
					printf("  ");
			}
			printf("\n");
		}
		for(i=n/2;i>=1;i--)               /*打印下三角,(不包括中间行)*/
		{                             /*将i改为倒序,这样就不必再次考虑每行中项的打印,下个for循环可以直接复制上三角部分*/
			for(j=1;j<=n/2+i;j++)         /*这个for循环与上三角一致 */
				if(j>=n/2-i+2)
					printf(" *");
				else
					printf("  ");
			printf("\n");
		}
	}
	return 0;
}

结果如下:
在这里插入图片描述
希望对你有所帮助(**)

猜你喜欢

转载自blog.csdn.net/tonglin12138/article/details/85452087