C ++编程帮助!它不会工作?

时间:2011-03-28 16:49:29

标签: c++ visual-c++

第一列包含数字1到5 后续列包含乘以数字的结果 数字0到9的第一列

好吧,我得到了这么远,但它不起作用,我不知道为什么!如果你能指出我的方向非常有帮助:)

#include <iostream>
using namespace std;

int main()
{
    for ( int i=0 ; i < 5; i++)
    { 
        cout << " ";
        // end for

        for ( int j = 0; j>=i; j ++) 
            cout << endl;
    }  // end for

    return 0;
}   //end of main function

3 个答案:

答案 0 :(得分:3)

  

第一列包含数字1到5后续列包含将第一列中的数字乘以数字0到9的结果

嗯......

  • 在你的代码片段中,外部循环从0到4运行。但问题是从1到5。
  • 内部循环应该从0到9运行,这意味着它独立于外部循环的i值。因此,内循环j>=i的条件是错误的。

答案 1 :(得分:1)

虽然您对嵌套循环有正确的想法,但您当前的代码除了输出一些空格和换行符之外什么都不做。让我们逐行检查你的代码:

for ( int i=0 ; i < 5; i++)

此循环中的迭代器将从零开始并以四结束。虽然在许多情况下从零开始是可以接受的,但从1开始,这样做要容易得多。所以,应该改为:

for (int = 1; i <= 5; i++)

现在,下一行。

cout << " ";

所有这一切都是打印空间。你有这个号码,但你没有做任何事情。您应该在空格之前打印i,如下所示:

cout << i << " ";

我们在你的第二个(内部)循环中再次遇到麻烦。

for ( int j = 0; j>=i; j ++) 
    cout << endl;

j初始化为零很好。但是,条件j >= i表示只要j大于或等于i,循环就会继续执行您希望它以只要它小于或等于九。此外,您在循环中所做的只是打印换行符。您应该更改它以打印ij的产品:

for (int j = 0; j <= 9; j++)
    cout << (i * j) << " ";

当你把它们放在一起时,你应该得到类似下面代码的东西。请注意,我添加了一些额外的格式,为了清楚起见,我更改了一些标识符。

#include <iostream>
#include <iomanip> // Needed for std::setw, which makes sure everything lines up.

int main()
{
    for (int firstNumber = 1; firstNumber <= 5; firstNumber++)
    {
        std::cout << std::setw(3) << firstNumber << " | "; // Output the first number of the row.  This makes up the first column.

        for (int secondNumber = 0; secondNumber <= 9; secondNumber++)
        {
            std::cout << std::setw(3) << (firstNumber * secondNumber) << " "; // Output the rest of the numbers in the row.
        }

        std::cout << std::endl; // We're done with the row, so make a linebreak.
    }
}

希望这有帮助!

答案 2 :(得分:0)

如果我理解你想要做什么,你的代码将无法运作。

你想要这样的东西:

for(int i=1; i <=5; i++)
{
   std::cout << i << " ";
   for(int j=0; j <=9; j++)
     std::cout << i*j << " ";

   std::cout << std::endl;
} 

格式化并不完美,但它更接近您的目标。