PAT图形输出---1027 打印沙漏 (20分)

1027 打印沙漏 (20分)

  • 注意输出的字符是自己输入的,不是固定的'*'
  • 先求出多少层,然后到一定条件反转一下就行了
#include<iostream>

using namespace std;


int main(){
	int n,m;
	string s;
	cin>>n>>s;
	int level;
	int sum=1,i;
	for(i=3;sum<=n;i+=2){
		sum=sum+i*2;
	}
	level=i-4;
	int flag=1;
	int ans=level;
	for(i=1;i<=level;i++){
		for(int k=1;k<=(level-ans)/2;k++){
			cout<<" ";
		}
		for(int j=1;j<=ans;j++){
			cout<<s;
		}
		if(ans==1){
			flag=0;
		}
		if(flag){
			ans-=2;
		}else{
			ans+=2;
		}
		cout<<"
";
	}
	cout<<n-sum+(level+2)*2;
	return 0;
}
原文地址:https://www.cnblogs.com/bingers/p/13064451.html