论C语言习题,PTA天梯赛的“打印沙漏”?
程序员文章站
2022-06-07 20:48:35
...
附源码:
#include <stdio.h>
int main()
{
int n;
char c;
scanf("%d %c", &n, &c);
//沙漏需要的字符个数
int sum = 1;
//层数
int i = 1;
int num = 0;
while ( sum <= n )
{
//打印完整沙漏需要的个数
sum += 2 * ( 2 * ( i + 1 ) - 1 );
if( sum <= n )
{
i++;
}
}
//打印上半部分
int j, k;
for ( j = 0; j < i ; j++ )
{
for ( k = 0 ; k < j ; k++ )
{
printf(" ");
}
for ( k = 0 ; k < 2 * ( i - j ) - 1 ; k++ )
{
printf("%c", c);
num++;
}
printf("\n");
}
//小于7个*,不会有下半部分
for ( j = 2; j <= i ; j++ )
{
for ( k = 0; k < i - j ; k++)
{
printf(" ");
}
for ( k = 0 ; k < 2 * j - 1; k++ )
{
printf("%c", c);
num++;
}
printf("\n");
}
printf("%d", ( n - num ));
return 0;
}
注意哈,打印沙漏,不是就打印5排!!!
上一篇: PHP中SESSION使用中的一点总结_PHP教程
下一篇: PHP《个人管理系统》之完善登录模块