题目链接:
1027 打印沙漏
额,血坑…左边要打印空格右边不用…
代码如下:
#include<iostream>
using namespace std;
void print(int num,char c)
{
for(int i=0;i<num;i++)
cout<<c;
}
void print_space(int num)
{
for(int i=0;i<num;i++)
cout<<" ";
}
int main()
{
int n;
char c;
cin>>n>>c;
int sum=1;
int total = 0;
int i=3;
while(sum <= n)
{
sum += 2 * i;
i += 2;
}
i=i-4;
for(int j=i;j>=1;j-=2)
{
if(j<i)
{
print_space((i-j)/2);
print(j,c);
// print_space((i-j)/2);
}
else
print(j,c);
cout<<endl;
total += j;
}
for(int j=3;j<=i;j+=2)
{
if(j<i)
{
print_space((i-j)/2);
print(j,c);
// print_space((i-j)/2);
}
else
print(j,c);
cout<<endl;
total += j;
}
cout<<n-total;
return 0;
}