首页 文章

输入为0(零)之前的数字序列

提问于
浏览
-1

我不知道如何做到以下几点 . 我想输入一个数字序列,当我输入0时,停止cin(就像我点击Enter)并自动cout那些(数字%2 == 0)在另一行上的数字 . 是否可以完成功能?我希望你理解我:)

例如我输入123456785435430(我输入了'0',所以cin停止了,并且cout me cout me 2 4 6 8 4 4 3)

2 回答

  • 1

    你需要的东西是这样的:

    char x;
    std::vector<int> evens;
    do {
        std::cin.get(x);
        int v = x - '0'; // int value
        if (v % 2 == 0 and v != 0)
            evens.push_back(v);
    } while (x != '0');
    
    for (std::vector<int>::iterator it = evens.begin(); it != evens.end(); ++it)
        std::cout << (*it) << " ";
    

    这是你练习的版本:

    #include <vector>
    #include <iostream>
    
    void brc() {
        int x;
        std::cin >> x;
        if (x == 0) return;
        if (x % 2 == 0)
            std::cout << x << " ";
        brc();
    }
    
    int main() {
        brc();
        return 0;
    }
    
  • 0

    这是一个适用于给定分隔符的简单版本,

    #include <iostream>
    using namespace std;
    
    string input_until_delimiter (char delimiter)
    {
    
        string buffer = new string ();
    
        char c = delimiter;
    
        while ((c = get()) != delimiter) buffer += c;
    
        return buffer;
    
    }
    

相关问题