/* *
***
*****
*******
*****
***
*
首先根据要输入的符号递增递减情况把图形分为上下两个三角形
对于上述图形可以分为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
***
*****
*******
*****
***
*
首先根据要输入的符号递增递减情况把图形分为上下两个三角形
对于上述图形可以分为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);
}