この質問では、ループの習熟度と少し数学的な考え方を検討します。
前半と後半は別々に出力する必要があります。
#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#include <stdlib.h>
#include <sstream>
#include <map>
#include <set>
typedef long long ll;
using namespace std;
int main()
{
int n;
cin>>n;
for(int i = 1; i<=n; i++)//循环输出n行的*,相当于输出了一个正序金字塔
{
for(int j = 0; j < n-i; j++ )
{
cout<<" ";
}
int h = 2*i-1;
while(h--)
{
cout<<"*";
}
cout<<'\n';
}
for(int i = 1; i<=n-1; i++)//再循环输出倒序的金字塔,因为一共是2*n-1行,所以倒金字塔就得注意一些数的问题
{
for(int j = 1; j<=i; j++)
{
cout<<" ";
}
int a = 2*n-2*i-1;//很重要,主要是通过2*m-1实现,而m为(n-i),笔算一下就行
while(a--)
{
cout<<"*";
}
cout<<'\n';//记得换行,不然会堆在一起
}
return 0;
}
(醜いという言葉は少し醜いですが、人々は必ずしもそうではありません、面白い@@)