分析:
参考了博主日沉云起的做法,可以用示例加以分析
图形字符数量和行数有数学关系,利用等差数列求和不难看出,但是先拿出总行数再来解决问题的方法要学会。
#include<bits/stdc++.h>
using namespace std;
int main(){
int N;
char c;
cin>>N>>c;
int mid=(int)sqrt((N+1)/2*1.0);//获取漏斗上半部分行数mid,总行数row
int row=2*mid-1;
//输出上半部分
int space=0;
for(int i=row;i>=1;i-=2){
for(int j=0;j<space;j++){
printf(" ");
}
space++;
for(int j=0;j<i;j++){
printf("%c",c);
}
printf("\n");
}
space--;
//输出下半部分
for(int i=3;i<=row;i+=2){
space--;
for(int j=0;j<space;j++){
printf(" ");
}
for(int j=0;j<i;j++){
printf("%c",c);
}
printf("\n");
}
//输出剩余字符个数
printf("%d",N-2*mid*mid+1);
return 0;
}