L1-002 打印沙漏
作者:
lvjj
,
2024-04-02 22:37:20
,
所有人可见
,
阅读 5
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
char ch;
cin>>ch;
int i=1;
while(n>(2*i*i)-1){
i++;
}
i--;
for(int j=i,hang=0;j>=1;j--){
for(int b=0;b<hang;b++){
cout<<' ';
}
hang++;
for(int a=1;a<=2*j-1;a++){
cout<<ch;
}
cout<<endl;
}
int k;
int c=0,d=0;//多输出了一次” *“,需要去掉
for(int j=i,hang=1;j>=1;j--){
k=j-1;
while(k--&&c!=0){//跳过第一次输出的结果
cout<<' ';
}
c++;
for(int a=1;a<=(2*hang)-1;a++){
if(d!=0)cout<<ch;//d=0不输出,后面d++。即跳过第一次输出的结果
}
if(d!=0) cout<<endl;
hang++;
d++;
}
if(n==1){//特判一下
cout<<ch;
cout<<endl;
i=1;
}
cout<<n-((2*i*i)-1);
return 0;
}