*****
****
***
**
*
使用多个内部循环很容易打印此内容。我正在尝试仅使用一个内部循环来实现它。
有什么建议吗?
谢谢。如果n是动态的怎么办?如果n为10或5或100,该怎么办?
如果n为3,
***
**
*
如果n为5
*****
****
***
**
*
条件: 必填:仅一个内部语句,一个外部循环,仅cout语句。没有内置功能。</ p>
如果需要更多说明,请告诉我。
代码:
#include <iostream>
using namespace std;
int main() {
int rows = 10;
for(int i = rows; i >= 1; --i) {
for(int k = 1; k <= (rows - i); k++) {
cout << " ";
}
for(int j = 1; j <= i; ++j)
{
cout << " " << "*";
}
cout << endl;
}
}
我如何只有一个内部循环来实现这一目标?
答案 0 :(得分:-3)
内循环?你为什么需要这样的东西?您可以使用std::string::string
void print_stuff(unsigned width){
for(auto i = 0u ; i < width ; i+=1){
auto starAmount = width - i;
auto spaceAmount = i;
std::cout << std::string{spaceAmount, ' '} << std::string{starAmount, '*'} << '\n';
}
}
如果您确实需要一个内部循环,则只需将std::string
的构造函数替换为循环即可:
void print_stuff(unsigned width){
for(auto i = 0u ; i < width ; i+=1){
//auto starAmount = width - i;
auto spaceAmount = i;
for(auto j = 0u ; j < width ; j+=1)
std::cout << (j < spaceAmount ? ' ' : '*');
std::cout << '\n';
}
}