标准输入未读取最后一行

stdin not reading last line of input

本文关键字:一行 读取 最后 标准输入      更新时间:2023-10-16

所以我有一个这样的程序:

#include <iostream>
using namespace std;
int factorial(int x) {
    int result = 1;
    for(x; x > 1; --x) {
         result*=x;
    }
    return result;
}

int main() {
    // your code goes here
    int n;
    std::cin >> n;
    for(int i = 0; i < n; ++i) {
        std::cout<< "n";
        std::cout << "entering for loop ";
        int x;
        std::cin >> x;
        std::cout << "entering fac ";
        std::cout << factorial(x);
        std::cout << "leaving fac ";
        std::cout << "leaving for loop ";
        std::cout << "n";
    }
    return 0;
}

当我运行程序而不是一次给出一个输入时,我一次将所有输入到终端中。在给它输入时,如下所示:

1

阿拉伯数字

5

3

程序输出:

进入 for 循环 进入 FAC

1离开 FAC 离开 for 循环

进入 for 循环 进入 FAC 2离开 FAC 离开 for 循环

进入 for 循环 进入 FAC

120离开 FAC 离开 for 循环

进入 for 循环

如您所见,它没有从标准输入接收最后一个值。为什么会这样,有人可以解释一下吗?

您可能忘记了最后一个新行。

如果您没有在最后按回车键,则代码仍在此行等待:

std::cin >> x;