我正在尝试打印以下图案:
*
* *
* * *
* *
*
..但我不知道。
这是我遵循的逻辑。
我能够使用上述逻辑创建一个递增的三角形图案,但无法弄清楚如何开始减小该图案以形成金字塔。
这是我的代码:
#include <iostream>
using namespace std;
int main()
{
int i;
int j;
for (i = 1; i <= 4; i++)
{
for (j = 1; j < i; j++)
{
cout << "*";
}
cout << endl;
for (i; i <= 6; i++)
{
for (j; j <= 0; j--)
{
cout << "*";
}
cout << endl;
}
}
return 0;
}
我真的很感谢一些指导。
答案 0 :(得分:0)
for (i; i <= 6; i++)
如果没有声明或赋值,在for循环的i
中提及变量(init-statement
)无效。
#include <iostream>
int main()
{
int width = 8;
// raising flank:
for (int i = 0; i < width; ++i) {
for (int k = 0; k <= i; ++k) {
std::cout << "* ";
}
std::cout.put('\n');
}
// falling flank:
for (int i = width - 1; i; --i) {
for (int k = 0; k < i; ++k) {
std::cout << "* ";
}
std::cout.put('\n');
}
}
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * * *
* * * * * * *
* * * * * *
* * * * *
* * * *
* * *
* *
*
答案 1 :(得分:-1)
仅当SIZE为奇数时,此代码才有效,您需要做一些改动以使其也适用于偶数。
#include <iostream>
using namespace std;
int main(){
int SIZE = 5;
for (int i = 0; i < SIZE; i++){
if (i > ((SIZE/2))){
for (int j = SIZE; j>i; j--)
cout << "*";
}
else
for (int j = 0; j<=i; j++)
cout << "*";
cout << endl;
}
}