1

我正在尝试从文件中读取数据in.txt,经过一些计算,我将输出写入out.txt

为什么末尾有一个额外的7 out.txt

课堂内容Solution

class Solution
{
public:
    int findComplement(int num)
    {
        int powerof2 = 2, temp = num;

        /*
        get number of bits corresponding to the number, and
        find the smallest power of 2 greater than the number.
        */
        while (temp >> 1)
        {
            temp >>= 1;
            powerof2 <<= 1;
        }

        // subtract the number from powerof2 -1
        return powerof2 - 1 - num;
    }
};

功能的内容main

假设所有标题都包括在内。findComplement翻转数字的位。例如,整数 5 在二进制中是“101”,其补码是“010”,即整数 2。

int main() {

#ifndef ONLINE_JUDGE
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
#endif

    // helper variables
    Solution answer;
    int testcase;

    // read input file, compute answer, and write to output file
    while (std::cin) {
        std::cin >> testcase;
        std::cout << answer.findComplement(testcase) << "\n";
    }
    return 0;
}

的内容in.txt

5
1
1000
120

的内容out.txt

2
0
23
7
7

4

1 回答 1

2

有一个额外的 7 的原因是您的循环执行了太多次。您需要在尝试读取输入std::cin 后进行检查。

照原样,您只需重复最后一个测试用例。

于 2021-12-28T05:14:59.257 回答