打印沙漏

(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循环打印.

第四步:打印字符.

运行结果截图:

原文地址:https://www.cnblogs.com/2293002826PYozo/p/10403983.html