我想从下面的代码做出这个形状。我很困惑如何使它打印第二行,倒数第二颗星,而不打印明星之前跳过并打印额外的空间。一旦明确了下半部分,当星星展开时,代码是否与上半部分相似?我已经尝试了c和r之间的几个代码组合,但我一直坚持我目前的。C++:如何从此代码制作此形状?
---------------------- //row 0
* *| //row 1
* * * *| //row 2
* * * * * *|
* * * * * * * *|
* * * * * * * * * *|
* * * * * * * * * * *|
* * * * * * * * * *|
* * * * * * * *|
* * * * * *|
* * * *|
* *|
----------------------
#include <iostream>
using std::cout; using std::cin; using std::endl;
int main() {
cout << "Enter a positive odd number less than 40: ";
int num = 0;
int z = 1;
for (int a = 0; a < 3; ++a)
{
cin >> num;
if (num < 38 && num > 0 && num % 2 == 1)
{
cout << "Thank you!" << endl << endl;
for (int r = 0; r < num; ++r) //outer loop/rows
{
for (int c = 0; c < num; ++c) //inner loop/columns
{
if (r == 0) cout << "--"; //top of square
else if (c >= r + r - c && c < num - 1)
cout << " ";
//else if (c == num - 1) cout << "*|";
else if (r == num - 1) cout << "--"; //bottom of square
else if (c == num - 1) cout << "*|"; //right side of square
else if (r > c) cout << "* ";
}
cout << endl;
}
break;
}
else cout << "Please enter a positve odd number that is less than 40!" << endl;
}
cout << endl;
}
如果你不得不做手工,你会用什么逻辑? –
尝试通过为上半部分和下半部分创建两个不同的环(一个用于循环(用于行))中的两个环)。这将很容易理解并且以这种方式实现。 –
广场左侧怎么没有'|'? – NathanOliver