ACM-ICPC 2010复赛
Description
从屏幕输入1个整数n,输出以下图形(如输入5)。
*
***
*****
*******
*********
*******
*****
***
*
Input
一个整数n(1 <= n <= 50)。
Output
如上边长为n的三角形。
Sample Input
5
Sample Output
*
***
*****
*******
*********
*******
*****
***
*
根据示例分析,当输入为n时,假设i为行号,i<n+1行中,输出的第i行,*号之前有n-i个空白输出,此行*号共i*2-1个;i>n行中,输出的第i行,*号之前有i-n个空白,,此行*号共(2*n)-2-(i-n)*2+1个。
源码:
#include <iomanip>
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
for (int i = 1; i != n * 2; ++i)
{
if (i < n + 1)// 前n行
{
cout << setw(n - i + 1) << setiosflags(ios::right) << '*';// 输出空白及第一个*号
for (int j = 0; j != i * 2 - 2; ++j)// 输出i行中剩余*号
{
cout << '*';
}
cout << endl;
}
if (i > n)// 大于n行
{
cout << setw(i - n + 1) << setiosflags(ios::right) << '*';// 输出空白及第一个*号
for (int j = 0; j != (2 * n) - 2 - (i - n) * 2; ++j)// 输出i行中剩余*号
{
cout << '*';
}
cout << endl;
}
}
system("pause");
return 0;
}