1.题目:

2.解题关键:
找到空格数和行数的关系,用循环控制,特殊行单独考虑。
每一行从左往右依次打印:空格 * 空格 * 空格 \n,注意第一行和最后一行只有1个 * ,打印:空格 * 空格 \n
3.代码:
#include<iostream>
using namespace std;
int main()
{
int i,j,n; //i控制行,j控制空格
cin>>n; //n:打印的行数,奇数行
for(i=0;i<n;i++)
{
if(i<=(n-1)/2) //先打印上半部分
{
for(j=0;j<(n-1)/2-i;j++) //打印左边的空格
cout<<" ";
if(i==0) //打印第一个 * ,分情况讨论:第一行和最后一行只有1个 * ;其他行有2个 *
cout<<"*";
else{
cout<<"*";
for(j=0;j<(i-1)*2+1;j++)//打印中间的空格
cout<<" ";;
cout<<"*"; //打印第二个 *
}
for(j=0;j<(n-1)/2-i;j++) //打印右边的空格
cout<<" ";
cout<<endl; //记得换行
}
else //再打印下半部分,同理
{
for(j=0;j<(i-(n-1)/2);j++)
cout<<" ";
if(i==(n-1))
cout<<"*";
else{
cout<<"*";
for(j=0;j<(n-1-i)*2-1;j++)
cout<<" ";;
cout<<"*";
}
for(j=0;j<(i-(n-1)/2);j++)
cout<<" ";
cout<<endl;
}
}
}
4.运行结果:


472

被折叠的 条评论
为什么被折叠?



