在C+上绘制星体的iscosceles三角形+; 我正在学习C++,我尝试用Atistik画一个等腰三角形。我的代码如下所示: int main(){ for(int i=1;i<11;i++){ for(int j=0;j<i;j++) { cout << "*"; } cout << endl; } return 0; } intmain(){ 对于(int i=1;i

在C+上绘制星体的iscosceles三角形+; 我正在学习C++,我尝试用Atistik画一个等腰三角形。我的代码如下所示: int main(){ for(int i=1;i<11;i++){ for(int j=0;j<i;j++) { cout << "*"; } cout << endl; } return 0; } intmain(){ 对于(int i=1;i,c++,C++,,以下是您可以执行的方法: #include <iostream> using namespace std; int main(){ for(int i=1;i<20;i++){ int k; if (i<=10) { k = i; } else { k = 20-i; } for(int

,以下是您可以执行的方法:

#include <iostream>
using namespace std;

int main(){
    for(int i=1;i<20;i++){
        int k;
        if (i<=10)
        {
            k = i;
        }
        else
        {
            k = 20-i;
        }
        for(int j=0;j<k;j++)
        {
            cout << "*";
        }
        cout << endl;
    }
    return 0;
}

基本思想是将映射从三角形前半部分的最大星号数
i
切换到第10行到三角形后半部分的映射
20-i

替代@space\u voyager此代码支持动态大小,因此您可以根据大小定义大小

这里的算法是

< LI>检查当前索引或迭代是否在中间(在这种情况下,11。编程为10)。
  • 如果为true,则将j从0迭代到I的当前索引
  • 如果为false(这意味着当前索引大于中间值),则按降序从size-I迭代j
  • 尺寸-I的工作原理是什么?
    在第一次迭代中为真(I>10,因此当I=11时)size-I=21-11。得到10,因此输出将打印10次。第二次I=12。您将得到递减的结果


    编辑 正如space_voyager所说,复制粘贴代码不是最佳做法。下面是更新的代码(与他的代码类似,我只添加了动态部分。更改大小的值,您就可以更改所有内容)

    intmain(){
    int size=20;
    
    对于(int i=1;i@Twista如果答案符合你的需要,不要忘记投票并接受它:)需要一点解释,但这很容易用描述性变量名来解决。这是好东西,但一般来说,像打印星号的for循环那样复制粘贴部分代码并不好。是的,意识到了。当我看到这个问题时,我脑海中就有了答案。花了一些时间加载编译器,你回答了。仍然您的代码更加优雅:)
    *
    **
    ***
    ****
    *****
    ******
    *******
    ********
    *********
    **********
    *********
    ********
    *******
    ******
    *****
    ****
    ***
    **
    *
    
    int main(){
        int size = 21;
    
        for(int i=1;i<size;i++){
            if(i <=size/2)
            {
                for(int j=0;j<i;j++)
                {
                    cout << "*";
                }
                cout << endl;
            }
            else if (i > size/2)
            {
                for(int j=size-i; j>0;j--)
                {
                    cout << "*";
                }
                cout << endl;
            }
        }
    
        return 0;
    }
    
    *
    **
    ***
    ****
    *****
    ******
    *******
    ********
    *********
    **********
    **********
    *********
    ********
    *******
    ******
    *****
    ****
    ***
    **
    *
    
    int main(){
        int size = 20;
    
        for(int i=1;i<size;i++){
            int k;
    
            if(i <=size/2)
            {
                k = i;
            }
            else if (i > size/2)
            {
                k = size-i;
            }
    
            for(int j=0; j<k; j++)
            {
                cout << "*";
            }
            cout << endl;
        }
    
        return 0;
    }