题目描述
用 *
构造一个对角线长 55 个字符,倾斜放置的菱形。
输出格式
如样例所示。用 *
构成的菱形。
* *** ***** *** *
int main()
{
printf(" *\n ***\n*****\n ***\n *");//输出。
return 0;
}
题解给出的是面向结果直接打印,不具有一般性,更抽象的题目可改写为,输入数字N,打印中间星数为N的菱形。而示例B2025可作为本题的特殊情况。那么一般代码如下。
目标是找到空格数和星数的相互关系,本解答分上三角和下三角来分别打印。
上三角:
层数 = 长度 / 2
空格数 = 上三角层数-1,直到n = 1
星数 从1开始+=2,直到n = 上三角层数
下三角:
层数较上三角少1
空格数 从1开始-=2,直到n = 下三角层数
星数 = 2*层数-1 或者 N-=2直至N=1
#include<iostream>
using namespace std;
int main()
{
int num ;
cin>>num;
int i_height = num/2 +1; // height of uppper taiangle
int ini = 1; // initialize variable
int i_low = i-1; // height of low tri
while(i_height > 0) // print uppper triangle
{
int j = i_height-1;
while(j-- > 0)
{
cout<<" ";
}
int in_high = ini;
while(in_high-- > 0)
{
cout<<"*";
}
cout<<endl;
ini+=2;
i_height--;
}
ini = 1;
while(i_low > 0)
{
int j = ini;
while(j-- > 0)
{
cout<<" ";
}
int ini_low = i_low*2-1;
while(ini_low-- > 0)
{
cout<<"*";
}
cout<<endl;
ini++;
i_low--;
}
}