【问题标题】:C++: How to print a multiplication table using nested loop?C++:如何使用嵌套循环打印乘法表?
【发布时间】:2015-12-23 05:13:07
【问题描述】:

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

【问题讨论】:

  • 我们能看到实际代码吗?
  • 我刚刚在VS2013上写了一个类似的程序,并尝试打印出来。你猜怎么着,它还显示了我从 13*10=130 开始的表格:D 但这并不意味着它没有打印以前的数据。它已经写好了,但是 DOS Shell 不能打印这么多行。尝试将其写入文件。干杯
  • @Laserbreath 实际代码是 #include using namespace std; int main() { for (int i = 1; i
  • @AdilIslamButt 谢谢!这让事情变得容易多了!

标签: c++ nested-loops multiplication


【解决方案1】:

以下是您发布的代码的格式化版本:

#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 语句替换为常规空格来节省打印空间,例如:

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; 
} 

【讨论】:

  • 如果 Console 没有足够大的缓冲区来存储和显示 440 行输出,那么它应该从 1*1=1 开始,依此类推,直到达到最大长度,这是什么原因从 13*10 打印?
  • 如果缓冲区不够大,它将删除最早的输出以创建打印空间。 1 * 1 = 1 是 最早的输出,所以它首先被擦除,然后是 1 * 2 = 2,直到最后显示 13 * 10 = 130。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-30
  • 2018-05-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多