【发布时间】:2016-07-05 13:00:02
【问题描述】:
我正在尝试从下面的代码中制作这个形状。我很困惑如何让它打印第二行,倒数第二个星,而不是在打印星之前跳过和打印额外的空间。一旦弄清楚了下半部分,当星星向外扩展时,代码会与上半部分相似吗?我尝试了 c 和 r 之间的几种代码组合,但我一直坚持我目前的做法。
---------------------- //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;
}
【问题讨论】:
-
如果你必须手动做,你会使用什么逻辑?
-
尝试为上半部分和下半部分创建两个不同的循环(一个 for loop(for rows) 中的两个循环)。这种方式很容易理解和实现。
-
正方形的左边怎么没有
|? -
我会试试@RajeevSingh,谢谢!
-
为什么拒绝39?这是一个小于 40 的正奇数。
标签: c++ if-statement for-loop