C ++ Primer 5th Edition练习1.25输出错误

时间:2018-08-03 07:43:56

标签: c++

书店程序代码为:

<!Doctype html>
<html>

<body>
  <p id="a"></p>
  <script>
    //switch
    var sb;
    document.write("<br><input type='text' id='a'> <button onclick='casss()'>Show Value</button>");
    sb = document.getElementById('a').value;

    function casss() {
      switch (sb) {
        case 1:
          sb = "php";
          break;
        case 2:
          sb = "html";
          break;
        case 3:
          sb = "css";
          break;
        case 4:
          sb = "javascript";
          break;
      }
      document.write("<br>" + sb);
    }
  </script>
</body>

</html>

当输入中包含三个或更多不同的ISBN时,在我输入#include <iostream> #include "Sales_item.h" int main() { Sales_item total; if (std::cin >> total) { Sales_item trans; //read and process remaining transactions while (std::cin >> trans) { if (total.isbn() == trans.isbn()) { total += trans; } else { std::cout << std::endl; std::cout << total << std::endl; total = trans; } } std::cout << total << std::endl; } else { std::cerr << "No data?!" << std::endl; return -1; } return 0; } 之前,不能显示else {}中的输出,这应该是最后一个输出的要求。如:

EOF

这非常令人困惑,我希望有人能够回答这个问题。谢谢。

1 个答案:

答案 0 :(得分:0)

由于在输入末尾没有换行符,所以仅当到达EOF时才处理输入的最后一行(在您的情况下为^D)。

在您的代码中,总计会显示在所有占总行的之后的第一行。因此,在处理最后一行时,将打印倒数第二个总数。

将这两个放在一起,仅当收到EOF时处理倒数第二个总数。这正是您所观察到的。