gpt4 book ai didi

在 C 中创建带有星号的金字塔的边界

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:47:21 26 4
gpt4 key购买 nike

好的。所以我只是想用 C 中的简单算法和星号做一些练习。这不是作业问题。在我的书中有一个项目要求你创建一个程序,用星号制作“这些形状”。其中之一是金字塔。虽然我可以在网上找到许多关于如何制作金字塔的示例,但我找不到一个可以帮助我找出一个边界的算法的例子。我也没有在这里看到过。

现在这是我已有的代码。

#include <stdio.h>
int main(void)
{
int i,j,k,x,h=0;
printf("\n\n");

for( i = 1; i <= 5; i++)
{
for( k = 1; k <=5-i; k++)
{
printf(" ");
}
for( j = 1; j <= 2*i-1; j++)
{
printf("*");
}
printf("\n");
}
for ( i = 6; i < 10; i++)
{
for( k = 1; k <= i-5; k++)
{
printf(" ");
}
for( j = 1; j <= i+1-3*h; j++)
{
printf("*");
}
printf("\n");
h++;
}
printf("\n\n");

return 0;
}

当你运行这个程序时,它应该是这样的,因为我已经运行了很多次都没有错误,所以给你这个形状:

....*
...***
..*****
.*******
*********
.*******
..*****
...***
....*

我一直在想,带有星号的循环可能需要更多的循环来确定星号之间的间距位置。但我真的无法开始思考如何做到这一点。我想要结束的是:

....*
...*.*
..*...*
.*.....*
*.......*
.*.....*
..*...*
...*.*
....*

如有任何帮助,我们将不胜感激。我是初学者程序员。在我的第一个大学水平的编程课上。我们这节课只学C。我们学习了多维数组,周四开始学习函数。

最佳答案

这是一个提示。你想要“第一个和最后一个 *” - 所以看看循环

for( j = 1; j <= 2*i-1; j++)
{
printf("*");
}

并将其更改为:

printf("*");  // first *
for( j = 2; j<= 2*i-2; j++) printf(" "); // spaces until...
printf("*"); // last *

看看您是如何处理的……这不是您需要进行此更改的唯一地方。

编辑 响应@KalaJ 的请求,我提供了完整的代码 - 一次有第一颗星和最后一颗星,一次没有。您可以通过更改 #if 0 预处理器指令中的条件来选择要使用的一个。如果将其设置为 #if 1,您将获得原始模式。

#include <stdio.h>
#if 0
int main(void)
{
int i,j,k,x,h=0;
printf("\n\n");

for( i = 1; i <= 5; i++)
{
for( k = 1; k <=5-i; k++)
{
printf(" ");
}
printf("*");
for( j = 2; j <= 2*i-2; j++)
{
printf(" ");
}
if(i>1) printf("*");
printf("\n");
}
for ( i = 6; i < 10; i++)
{
for( k = 1; k <= i-5; k++)
{
printf(" ");
}
printf("*");
for( j = 1; j <= i-3*h-1; j++)
{
printf(" ");
}
if(i<9) printf("*");
printf("\n");
h++;
}
printf("\n\n");

return 0;
}
#else
int main(void)
{
int i,j,k,x,h=0;
printf("\n\n");

for( i = 2; i <= 5; i++)
{
for( k = 1; k <=5-i; k++)
{
printf(" ");
}
printf("*");
for( j = 2; j <= 2*i-2; j++)
{
printf(" ");
}
if(i>1) printf("*");
printf("\n");
}
for ( i = 6; i < 9; i++)
{
for( k = 1; k <= i-5; k++)
{
printf(" ");
}
printf("*");
for( j = 1; j <= i-3*h-1; j++)
{
printf(" ");
}
if(i<9) printf("*");
printf("\n");
h++;
}
printf("\n\n");

return 0;
}
#endif

这会产生任何一个

   * *
* *
* *
* *
* *
* *
* *

    *
* *
* *
* *
* *
* *
* *
* *
*

关于在 C 中创建带有星号的金字塔的边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20014514/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com