得分18分,估计是边界问题或者是特殊情况未考虑,先留代码
#include <cstdio>
#include <math.h>
int main()
{
int num;
char c;
scanf("%d %c",&num,&c);
int rows = sqrt(2 * num +2)/2 - 1;
if(num!=0)
{
for(int i = rows; i > 0; i --)
{
for(int j = 0;j < rows - i;j++)
{
printf(" ");
}
for(int j = 0;j < 2 * i + 1;j++)
{
printf("%c",c);
}
printf("\n");
}
for(int i = 0; i < rows + 1;i++)
{
if(i != rows) printf(" ");
else printf("%c",c);
}
printf("\n");
for(int i = 1; i <= rows; i ++)
{
for(int j = 0;j < rows - i;j++)
{
printf(" ");
}
for(int j = 0;j < 2 * i + 1;j++)
{
printf("%c",c);
}
printf("\n");
}
if(num - 2 * rows * (rows + 2) - 1 != 0) printf("%d",num - 2 * rows * (rows + 2) - 1);
}
else printf("%d",0);
}