【问题标题】:Nested loops C++嵌套循环 C++
【发布时间】:2017-10-26 03:20:57
【问题描述】:

所以我正在制作一个程序,该程序将根据用户所需的大小创建一个正方形。到目前为止,我的代码读取了该值,打印出正方形的顶部,但由于我创建了一个嵌套循环,我正忙于如何设置边。这里的问题是我需要循环在每次存在时重置它的值。

到目前为止,这是我的代码:

#include <iostream>

using namespace std;

int main(int,char**) {
  int x;
  int z=1;
  int l=0;
  int n=0;
  int q=1;
  int m=0;
  int o=0;
  do{
    cout << "Enter length between 0 and 64 (-1 to exit): ";
    cin >> x;
    if (x>-1&&x<64){
      cout << "+";
      for (;x-2!=n;++n){
        cout << "-";
      }
      cout << "+" << endl;
    }
    else{
      cout << "Length must be between 0 and 64 inclusive, or enter -1 to exit.";
    }
    do {
      cout << "|";
      do {
        //cout << " ";
        //++m;
        //}while (x-2!=m);
        cout << "|" << endl;
        ++o;
      }
      while (x-2!=o);
      ++z;
    }
    while (z!=5);
  }

注释掉的部分是程序被赶上的地方,似乎当我递增 m 直到它退出 do while 循环时,它会保留它被递增到的值。我知道 continue 语句从循环中中断并开始循环的新迭代,但即使我创建了一个 if 语句,例如

if (x-2==m){
continue;
}

任何帮助将不胜感激

【问题讨论】:

  • while (z=1); 肯定是错的。
  • 这部分:(x&gt;-1||x&lt;64) 已损坏,因为“||”表示 OR,因此我可以选择大于 -1 (2000) 或小于 64 (-2000) 的数字。您必须输入“&&”才能使其成为 AND。您可以在此处阅读有关 C 和 C++ 中运算符的更多信息:en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B
  • @PaulRooney 我需要程序运行 5 次,所以我修复了循环功能。感谢您的捕获,否则它将永远循环运行。
  • @RandomProgrammer 感谢您的提醒,我错误地将 or 替换为 and
  • 这些行被注释掉了,你的大括号就不平衡了。发布您遇到问题的代码,而不是修改后的版本。

标签: c++ loops if-statement nested-loops do-while


【解决方案1】:

只需将m = 0; 放在循环之前。

m = 0;
do {
    cout << ' ';
    ++m;
} while (x-2 != m);

或者使用for 循环代替;

for (int m = 0; m != x-2; m++) {
    cout << ' ';
}

这是重复某件事一定次数的更常见的习惯用法,因为您可以在一个地方查看与循环相关的所有条件。

【讨论】:

  • 为什么 int 定义的位置很重要?在这种情况下, int m 直到嵌套的 do while 循环才被触及。它现在有效,但我不明白为什么放置会影响循环。我将开始使用它作为一种规范,在它们的连接循环之前将定义的整数组合在一起,这肯定有助于查看它们。任何指导将不胜感激,谢谢
  • 用于索引for 循环的变量在循环外不需要,所以你在本地声明它。
猜你喜欢
  • 2017-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-23
  • 2014-09-14
  • 2017-07-08
  • 2015-05-29
相关资源
最近更新 更多