我正在用c ++运行一个程序,它打印乘法表从1到40,但它从13 * 10 = 130到40开始,那么这背后的原因是什么?
答案 0 :(得分:0)
以下是您发布的代码的格式化版本:
#include<iostream>
using namespace std;
int main() {
for (int i = 1; i <= 40; i++) {
for (int j = 1; j <= 10; j++) {
cout << i << " * " << j << " = " << i*j << endl;
}
cout << endl;
}
return 0;
}
以13 * 10开始打印。原因是什么?
值得注意的是,当循环开始时,我们可以看到两个循环(i
和j
)的变量都被初始化为1
。因此,您希望第一次循环打印1 * 1 = 1
是正确的。
这表明,正如PRIME指出的那样,您要打印到的环境(例如Windows控制台)可能没有足够大的缓冲区来存储和显示程序将尝试打印的440行输出。
我该如何解决这个问题?
您可以尝试重新调整打印环境的内部缓冲区(如果允许),以允许440行打印。例如,在MS-DOS
中,您可以通过右键单击标题栏,进入Properties
,然后点击Layout
标签,并将屏幕缓冲区宽度和高度更改为适合的价值观。
或者,您可以通过使用常规空格替换endl
语句来节省打印空间,la:
for (int i = 1; i <= 40; i++) {
for (int j = 1; j <= 10; j++)
cout << i << " * " << j << " = " << i*j << ' ';
}
您还可以选择输出到文件而不是当前的打印环境:
#include <fstream>
using namespace std;
int main() {
ofstream Output("Output.txt"); //Creates a file "Output.txt"
if (Output.is_open()) { //If the file is open, proceeed
for (int i = 1; i <= 40; i++) {
for (int j = 1; j <= 10; j++)
Output << i << " * " << j << " = " << i*j << '\n';
Output << '\n'; //^^^Write multiplication table to the file
}
}
return 0;
}