标签:image output for tput scan cout space flag ima
这道题其实难度不算大,关键是有点坑。。。
下面讲讲我做此题的一些心得:
#include <iostream>
#include<stdio.h>
using namespace std;
void output(int a,string b,int c) //c为总长度,a为每行的字符长度
{ for(int t=0;t<(c-a)/2;++t)
{
cout<<" ";
}
for(int j=(c-a)/2;j<(c-a)/2+a;++j)
{
cout<<b;
}
//for(int k=(c-a)/2+a;k<c;++k) ***右边空格无需打印**** 如果添加的话测试点0和3过不去
//{ // cout<<" "; //}
cout<<endl;
} //输入数字和字符即可输出
void output(int a ,string b) { for(int t=0;t<a;++t) { cout<<b; } }
void show(int a,string b)
{
int temp = 3;
if(a<7)
{
cout<<b;
//if(a-1 !=0) cout<<endl<<a-1; 即使正好可以组成一个沙漏,也要输出0,否则测试点1过不去
cout<<endl<<a-1;
}
else{
a = a-1;
while(a >= temp*2)
{
a = a-2*temp;
temp += 2;
}
temp = temp-2;
int flag = temp;
while(temp>0)
{
output(temp,b,flag);
temp = temp -2;
}
temp = 3;
while(temp<=flag)
{
if(temp==flag) output(temp,b);
else output(temp,b,flag);
temp =temp + 2;
}
//if(a!=0) cout<<endl<<a; 即使正好组成一个沙漏,也要输出0,否则测试点1过不去
cout<<endl<<a;
}
}
int main()
{
int input;
string x;
scanf("%d",&input);
cin>>x;
show(input,x);
return 0;
}
标签:image output for tput scan cout space flag ima
原文地址:https://www.cnblogs.com/kayden-su/p/13382973.html