更新:谢谢所有试图提供帮助的人。我很感激你的时间。正如你在评论中所看到的那样,我将其标记为答案和我对它的回应,看来我们的讲座已经落后了几个星期......或者我可能过早地通过以前的实验室而过早地开始这个课程。无论哪种方式,我都得到了一个解决方案,我理解为什么它有效,我发现它比复制和粘贴更有价值,只是为了完成任务。
更新2 :我的教授给了我一个提示解决方案,只使用循环而没有数组。这是我用他的提示想出的新内容:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
for (int i = 0; i < 13; i++)
{
for (int j = 0; j < min(i, 12 - i); j++)
{
for (int k = 0; k < pow(2.0, j); k++)
{
cout << "*";
}
}
cout << endl;
}
}
输出:
*
***
*******
***************
*******************************
***************************************************************
*******************************
***************
*******
***
*
原帖:
我有第一部分,现在我只需要反向打印这些星号,这样就形成了一个横向三角形。我已经在这几天了,我无法理解。我们只能在程序中使用星号一次。这是我到目前为止所做的:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
for (int i = 0; i < 7; i++)
{
for (int j = 0; j < pow(2.0, i); j++)
{
cout << "*";
}
cout << endl;
}
}
输出:
*
**
****
********
****************
********************************
****************************************************************
我最接近解决这个问题的是在它下面显示另一排星星,但它们的长度都相同。有时候我会创建一个无限循环的星号墙,有时候我会在几十行中显示一个看似随机的星号。这让我疯了。
答案 0 :(得分:1)
将它们存储为字符串(char *),将这些字符串压入堆栈并通过逐个弹出来打印堆栈。瞧!
答案 1 :(得分:1)
由于这是作业,我只给你一半答案。希望你能弄清楚其余部分。
for (int i = -6; i < 7; i++)
答案 2 :(得分:0)
这个怎么样?
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int a[] = {0, 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1, 0};
for (int i = 0; i < 13; i++)
{
for (int j = 0; j < pow(2.0, a[i]); j++)
{
cout << "*";
}
cout << endl;
}
}
还是这个?
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
for (int i = -6; i < 7; i++)
{
for (int j = 0; j < pow(2.0, 6 - (i < 0 ? -i : i)); j++)
{
cout << "*";
}
cout << endl;
}
}
答案 3 :(得分:0)
我从for (int i = 0; i < 13; i++)
然后使用映射
的函数f(x)
0->0
1->1
...
5->5
6->6
7->5
8->4
...
12->0
以便您使用嵌套循环:
for (int j = 0; j < f(i); j++)