输出 V 在 C++中使用 *

Output V using * in C++

本文关键字:C++ 输出      更新时间:2023-10-16

我必须在循环C++中使用星号*制作V。

例:https://i.stack.imgur.com/48upX.png

有人知道它是如何完成的吗?

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    for(int i = 10; i <= 20; i++){
        cout << setw(i);
        cout << "***" << endl;
    }
    for(int i = 30; i >= 20; i--){
        cout << setw(i);
        cout << "***" << endl;
    }
    return 0;
}

我认为我在这里的主要麻烦是如何制作空间?如何在 for 循环期间动态增加它们?

for (int i=0;i<10;i++) {
    for (int j=0; j<i*2; j++)
        cout << " ";
    cout << "***";
    for (int j=0; j<2+(10-1-i)*4; j++)
        cout << " ";
    cout << "***" << endl;
}

从第一行到最后一行星星之前的空格是:0、2、4、6、....这是行数*2 = i*2 倍。

我们有十行。 星星之间从最后到第一个之间的空间是:2,6,10,14,....即 2 作为常量 + (总行数-1-当前行)*4。2 是空格的起始数。4是范围。-1 因为最后一行是 9 和 10-9=1。取决于循环计数器起点。

我希望这能解释。

不是最好的,但我尝试:

int main()
{
    for (int i = 0, s = 17, w = 4; i < 10; ++i, s -= 2, ++w)
    {
        std::string space;
        if (s >= 0)
            space.assign(s, ' ');
        else
            space = "";
        std::cout << std::right
                  << std::setw(w)
                  << "***" << space << ((i != 9) ?  "***n" : "**");
    }
}