(1)实验代码:
#include<stdio.h>
main()
{
int n,b,N,i=1,a=1;
char s;
scanf("%d",&N);
getchar();
scanf("%c",&s);
int d=1;
while(a<=N)
{
if(a<=N&&i>1)
{
d++;
}
a+=2*(2*(d+1)-1);
i+=2;
}
i-=2;
n=i;
int c=0;
int e;
for(e=1;e<=d;e++)
{
for(c=1;c<=i;c++)
{
printf("%c",s);
}
printf("
");
if(i==1)
break;
for(b=n;b>=i;b-=2)
{
printf(" ");
}
i-=2;
}
i+=2;
for(e=1;e<=d-1;e++)
{
for(b=n;b>i;b-=2)
{
printf(" ");
}
for(c=1;c<=i;c++)
{
printf("%c",s);
}
printf("
");
i+=2;
}
printf("%d",N-(a-2*(2*(d+1)-1)));
}
(2)设计思路:
第一步:定义变量.
第二步:运用while来计算应该得到的值和每行应该打印的字符与层数.
第三步:运用数学公式判断,完成后面的for循环打印.
第四步:打印字符.
运行结果截图: