c – 嵌套For循环到Do while循环

嗨,我阅读了有关家庭作业问题的指导原则,并明确表示这是家庭作业.这是家庭作业,我花了最后45分钟一遍又一遍地尝试.我撞墙了,需要帮助.

我的任务是获取来自双For循环的代码并将其转换为嵌套到for循环中的while循环.我已经成功完成了.但是,第三部分是采用该代码并将外部for循环变为do while循环.
如果输入为“4”,输出需要增加“#”每行

#
##
###
####

下面是我写的代码,我需要将外部for循环变为do while循环:

int main()
{
    int side;

    cout << "Enter a number: ";
    cin >> side;

    for (int i = 0; i < side; i++)
    {
        int j = i;
        while(j >= 0)
        {
            cout << "#";
            j--;
        }
        cout << "\n";
    }
}

这是我到目前为止的尝试:

int main()
{
    int side;
    int i;

    cout << "Enter a number: ";
    cin >> side;
    int j=side;
    do
    {
        while(j >= 0)
        {
            cout << "#";
            j--;
        }
        cout << "\n";
        i++;
    }
    while(j >= side);
}

我的老师说,只要代码被解释,我理解它是如何工作的,这没关系.任何帮助将非常感激.
谢谢.

最佳答案 你犯的第一个错误就是:

int i; //not initialized!
/*...*/
i++;

而且你甚至没有在你的do-while条件下使用它.

所以虽然(j> = side); >而(i> = side);

实际上,这也不是真的.由于side是输入,你希望我检查它是否小于输入.所以它是时候(我< side); 另一件事是int j = side;,当你递减j时它永远不会重置,所以你必须将它设置为你的do-while循环并用i初始化它而不是侧面…. 无论如何,这是完整的代码:

#include <iostream>
using namespace std;

int main()
{
    int side;
    int i = 0;

    cout << "Enter a number: ";
    cin >> side;
    do
    {
        int j = i;
        while (j >= 0)
        {
            cout << "#";
            j--;
        }
        cout << "\n";
        i++;
    } while (i < side);

    return 0;
}

示例输出:

Enter a number: 10
#
##
###
####
#####
######
#######
########
#########
##########
点赞