我正在使用Andrew Koenig的 Accelerated C ++ ,其中一个练习要求编写一个程序来输出两列,一个整数到一些 maxInt 和他们的另一个正方形。这是我的代码:
#include <iostream>
#include <iomanip>
#include <string>
using std::cout;
using std::endl;
using std::setw;
using std::to_string;
using std::string;
int square(const int n)
{
return n*n;
}
int main()
{
// loop until maxInt
const int maxInt = 1000;
// use the length of maxInt and its square to comptue width later on
const int maxIntSize = to_string(maxInt).length();
const int maxIntSquareSize = to_string(square(maxInt)).length();
for (int i = 1; i != maxInt + 1; ++i) {
const int j = square(i);
// we need iSize to compute the width
const int iSize = to_string(i).length();
const int width = maxIntSize + maxIntSquareSize + 1 - iSize;
cout << i << setw(width) << j << endl;
}
return 0;
}
我的问题是程序不一致。有时它会像我期望的那样工作,有时它会过早地停止打印。此外,当它没有按照我的预期行事时,行为是相当不可预测的。谁能让我知道我做错了什么?
(另外,我是C ++的新手,所以对任何一般建议表示赞赏。)