【问题标题】:How do I escape while loop when I have N amount of inputs?当我有 N 数量的输入时,如何退出 while 循环?
【发布时间】:2021-03-01 20:47:11
【问题描述】:

using namespace std;

int main() {
    int input;
    
    int i=0;
    while (1){
        scanf("%d", &input);
        printf("%d input:%d\n", i, input);
        i++;
    }
}

标准输入: 10 65 100 30 95 . . .

有没有办法在点击最后一个输入后停止代码并退出 while 循环? Inputs的数量可以是N。

edition) 有没有办法计算标准输入的数量?这是我的主要问题。

【问题讨论】:

  • 也许考虑使用for 循环?或者,如果失败,请使用 break 语句。
  • 如何识别“最后输入”?有几种方法可以“逃脱”它。你有循环条件,或者你有break关键字
  • 我确实想使用中断,但是有 N 个输入。我不知道是否有办法知道我有多少输入
  • 您已经有了i 计数器,所以您的问题不清楚。
  • 我的计数器只是为了查看我在代码上的输出计数

标签: c input while-loop stdin


【解决方案1】:
using namespace std;

int main() {
    int input;
    
    int i=0;
    while (1){
        scanf("%d", &input);
        printf("%d input:%d\n", i, input);
        i++;
        if (i >= 5) break; //change 5 to your desired amount of inputs
    }
}

【讨论】:

  • 不是手动输入 i 的范围,有没有办法获取标准输入的数量并将其放在范围内;这样范围会根据输入量自动更改
  • 很遗憾,没有。如果你愿意,你可以实现一个库。这会使一切变得过于复杂,但如果你必须这样做,那就去做吧。我不会试图让一切都变得完美。如果它有效,那就去做吧。
【解决方案2】:

也许您正在读取具有 EOF(文件结尾)的输入? 在这种情况下,您应该在收到 EOF 时停止

#include <stdio.h>
#include <ctype.h>

int main(void)
{
  int input;
  int i = 0;
  while (scanf("%d", &input) != EOF){
    printf("%d input:%d\n", i, input);
    i++;
  }
  printf("End\n");
  return 0;
}

否则你可以做一个先读取N,然后迭代N次的程序

int main(void)
{
  int input;
  int i = 0;
  int n = 0;
  scanf("%d", &n);
  for (i = 0; i < n; i++) {
    scanf("%d", &input);
    printf("%d input:%d\n", i, input);
  }
  return 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多