浅谈输出实心菱形和空心菱形

/*  *
   ***
  *****
 *******
  *****
   ***
    *
首先根据要输入的符号递增递减情况把图形分为上下两个三角形
对于上述图形可以分为4行正三角形和3行倒三角,反之亦可
可以发现每行都是先输出空格再输出*,可以循环进行
细心可以发现对于空格来说由上到下依次减1,对于*是依次递增2
倒三角反之,
假设用 i 表示行数
       j 表示输出符号数(包括空格和*)
两者之间存在线性关系  j=a*i+b
下来是要确定a和b的值
a为正数  随着行数递增符号数递增(递增几个a就是那个数)
a为负数  随着行数递增符号数递减  (同上)
对于 b 值得确定要用代入具体值来求得
对于此图 上4行正三角
空格 i=1,j=3  由j=-i+b  求出 j=4-i
*    i=1,j=1  由j=2*i+b 求出 j=2*i-1
         下3行倒三角
空格 i=1,j=1  由j=i+b   求出 j=i 
*    i=1,j=5  由j=-2i+b 求出 j=-2*i+7


代码如下*/

/**********************************************************************  
 * Copyright (c)2015,WK Studios
 * Filename:    
 * Compiler: GCC,VS,VC6.0  win32  
 * Author:WK  
 * Time: 2015 1 23
 ************************************************************************/ 

#include <stdio.h>
# define N 4 
void main()
{
	int i=0,j=0;
	for(i=1;i<=N;i++)
	{
		for(j=0;j<=N-i;j++)
			
		{
			printf(" ");
		}
		for(j=0;j<2*i-1;j++)
		{
			printf("*");
		}
		printf("\n");
	}
	for(i=1;i<=N-1;i++)
	{
		for(j=0;j<=i;j++)
			
		{
			printf(" ");
		}
			for(j=1;j<=-2*i+7;j++)
			{
				printf("*");
			}
		printf("\n");
	}
}


下面给出一个实现打印空心菱形的代码:

#include <iostream>
#include <string>
using namespace std;

void PriTriangle(int n)
{
for(int i=1;i<=n;++i) 
{
 for(int j=1;j<=n-i;++j)
 {
	 cout<<" ";
 }
 for(int k=1;k<=2*i-1;++k)
 {
	 if(i==1 || i==n)
		 cout<<"*";
	 else
	 {
	 if(k==1 || k==2*i-1)
	 cout<<"*";
	 else
		 cout<<" ";
	 }
 }
 cout<<"\n";
}
}

void main()
{
	cout<<"please input a number: ";
	int n;
	cin>>n;
	PriTriangle(n);

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值