C ++:如何使用嵌套循环打印乘法表?

时间:2015-12-23 05:13:08

标签: c++ nested-loops multiplication

我正在用c ++运行一个程序,它打印乘法表从1到40,但它从13 * 10 = 130到40开始,那么这背后的原因是什么?

1 个答案:

答案 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开始打印。原因是什么?

值得注意的是,当循环开始时,我们可以看到两个循环(ij)的变量都被初始化为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; 
} 
相关问题