刚学完几个循环语句,在做这个练习时折磨近一个小时有了结果(人比较笨,逻辑思维跟不上):
#include<stdio.h>
int main(void)
{
int n;
printf("请输入你要打印的金字塔层数:");
scanf("%d",&n);
for(int a=1;a<=n;a++)
{
for(int b=1;b<=n-a;b++)
{
printf(" ");
}
for(int b=1;b<=2*a-1;b++)
{
printf("*");
}
printf("\n");
}
return 0;
}
运行结果:
当我得意洋洋发到群里时,给我出了几个难题:以这个为基础优化打印出实心棱心和空心棱形……
愣了半响继续被折磨……终于在又一个小时后给整出来了
实心棱形:
#include<stdio.h>
int main(void)
{
int n,c=3;
printf("请输入你要打印的金字塔层数:");
scanf("%d",&n);
for(int a=1;a<=n;a++)
{
for(int b=1;b<=n-a;b++)
{
printf(" ");
}
for(int b=1;b<=2*a-1;b++)
{
printf("*");
}
printf("\n");
}
for(int a=1;a<=n;a++,c+=2)
{
for(int b=1;b<=a;b++)
{
printf(" ");
}
for(int b=1;b<=2*n-c;b++)
{
printf("*");
}
printf("\n");
}
return 0;
}
运行结果。
空心棱形:
#include<stdio.h>
int main(void)
{
int n,c=3;
printf("请输入你要打印的金字塔层数:");
scanf("%d",&n);
for(int a=1;a<=n;a++)
{
for(int b=1;b<=n-a;b++)
{
printf(" ");
}
for(int b=1;b<=2*a-1;b++)
{
if(b>1&&b<=2*a-2)
{
printf(" ");
continue;
}
printf("*");
}
printf("\n");
}
for(int a=1;a<=n;a++,c+=2)
{
for(int b=1;b<=a;b++)
{
printf(" ");
}
for(int b=1;b<=2*n-c;b++)
{
if(b>1&&b<=2*n-c-1)
{
printf(" ");
continue;
}
printf("*");
}
printf("\n");
}
return 0;
}
最后,如果您恰好看到了这个,请问还有没更加简单的写法?这两个for循环能不能给整进一个循环里去,还请各位大牛指点下,谢谢了!