【问题标题】:for loop to while conversionfor循环到while转换
【发布时间】:2018-09-08 14:30:59
【问题描述】:

这里我有一个带有 for 循环的 C++ 代码。

for(int A=1;A<=3;A++)
    {
     cout<<A*2;
     for(int B=1;B<=A;B++)
     cout<<"*";
     cout<<endl;
    }

它给了我这个输出。

2* 4** 6***

我需要使用 while 循环来做同样的事情。所以我把上面的代码转换成这个。

while(A<=3)
    {
    cout<<A*2;
        while(A>=B)
        {cout<<"*";
            B++;}

    cout<<endl;
    A++;
    }

但是这段代码给了我输出 2* 4* 6*

有人能告诉我我在 while 循环中做错了什么吗?

【问题讨论】:

  • 你错过了 A 和 B 的初始化
  • 第二次之后你应该重置 B

标签: c++ loops for-loop while-loop


【解决方案1】:
int A = 1;
int B;

while (A <= 3)
{
    cout << A * 2;
    B = 1;
    while (B <= A)
    {
        cout.put('*');
        ++B;
    }

    cout.put('\n');
    ++A;
}

ioccc 样式:

#include <iostream>

int main()
{
    int A{1};while(!(A>>2)&&std::cout.put((A<<1)|0x30)){
        int B{A++};while(std::cout.put((!B)["*\n"]),B--);}
}

【讨论】:

    【解决方案2】:

    你没有给 A 或 B 初始值。

    void func()
    {
        int A = 1;
        while (A<=3)
        {
            std::cout << A*2;
            int B = 1;
            while(A>=B)
            {
                std::cout << "*";
                B++;
            }
    
            std::cout<<endl;
            A++;
        }
    }
    

    【讨论】:

    • 抱歉,我只复制了 while 循环。我像@sombrero所说的那样在外部while循环之外声明了A和B。但是我弄错了。当我像你们建议的那样在外部循环中声明 B 时,它工作正常。谢谢你们在那里帮助我的每一个人。但是为什么当我在外部 while 循环之外声明 B 时它不起作用?
    • @KLM 当然,您可以在任何循环之外声明 B,但您必须在进入内部循环之前将其重置为 1
    • @Swordfish 谢谢你的信息。我仍然是 C++ 的初学者。这确实帮助我修复了代码并很好地理解了代码。
    • @KLM 这不是 C++ 问题,这是关于学习如何编程的问题。在任何编程语言中你都会遇到同样的问题。
    • @RobertAndrzejuk 实际上我也是编程的初学者。感谢您的指导。
    【解决方案3】:

    您的第二个 sn-p 未显示您声明 AB 的位置。我假设它在外部 while 循环之外,这是行不通的。您必须在第一个 while 中声明 B 或在每个循环中重新初始化它。

    int A = 1;
    while(A <= 3)
    {
      cout << A * 2;
      int B = 1;
      while(A >= B)
      {
        cout << "*";
        ++B;
      }
      ++A;
      cout << endl;
    }
    

    Result.

    【讨论】:

    • @Swordfish 打败你。
    • 秒问题。不过,您仍然缺少换行符;-P
    • @Swordfish 还行:)
    【解决方案4】:

    您应该使用 B 作为局部变量,还可以将 while 比较更改为小于等于。

    int A = 1;
    
    while(A<=3) {
        cout<<A*2;
        int B = 1; // B as local variable
        while(B<=A) {
            cout<<"*";
            B++;
        }
        cout<<endl;
        A++;
    }
    

    输出:

    2*
    4**
    6***

    【讨论】:

      【解决方案5】:
      int A = 1;
      while(A <= 3)
      {
          cout<<A*2;
          int B = 1;
          while(A >= B){
              cout<<"*";
              B++;
          }
          cout<<"/n";
          A++;
      }
      

      输出:
      2*
      4**
      6***

      【讨论】:

        猜你喜欢
        • 2018-02-22
        • 2014-12-18
        • 2017-04-26
        • 2018-08-19
        • 1970-01-01
        • 1970-01-01
        • 2022-12-04
        相关资源
        最近更新 更多