我试图用c ++打印一个表,代码不能正常工作

时间:2016-09-01 16:13:33

标签: c++ loops for-loop

我正在尝试打印下表。我只希望它直到5行(根据作业问题)。

5 10 15 20 25
10 15 20 25 30
15 20 25 30 35
20 25 30 35 40
25 30 35 40 45

当我使用下面的代码时,第一行总会有一个额外的条目(25之后有30个,这不应该是)

#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
float i,j, num=0,k=5;
for(j=0; i<5;j++,i+=0.2)
    {num+=5;
    cout<<num<<" ";
    if(j==5)
        {
        cout<<endl;
        j=0;
        k=k+5;
        num=k;}
     }
getch();
}

帮助表示赞赏。

3 个答案:

答案 0 :(得分:1)

#include <iostream>

using namespace std;

int main()
{
  for(size_t i=0; i<5; ++i){
      for(size_t j=0; j<5; ++j)
        cout<< (i+j+1)*5 <<"\t";
      cout<<endl;
  }
}

这样简单的实现怎么样?除非你真正的问题不同。

答案 1 :(得分:0)

如果你想要它(如你所要求的话)在一个循环中:

#include <iostream>

#define SIZE 5
int main(){
    int start = 5;
    int increment = 5;
    for (int i = 0; i < SIZE*SIZE; i++){
        std::cout << start << " ";
        start += 5;
        if (start == increment + SIZE * 5){
            increment += 5;
            start = increment;
            std::cout << '\n';
        }

    }

    system("pause");
    return 0;
}

答案 2 :(得分:0)

你在这里

#include <iostream>
#include <iomanip>

int main() 
{
    const int N = 5;

    for ( int i = 0; i < N; i++ )
    {
        for ( int j = 0; j < N; j++ ) std::cout << std::setw( 2 ) << N * ( i + 1 + j ) << ' ';
        std::cout << std::endl;
    }

    return 0;
}

程序输出

 5 10 15 20 25 
10 15 20 25 30 
15 20 25 30 35 
20 25 30 35 40 
25 30 35 40 45 

至于您的代码,则变量i未初始化。即使j等于5,您也会在同一行中打印当前值num,因为if语句跟在输出语句之后

cout<<num<<" ";
if(j==5)

您的方法可以采用以下方式

#include <iostream>
#include <iomanip>

int main() 
{
    const int N = 5;

    for ( int i = 0, j = 0, num = 0, k = 0; i < N * N; i++ )
    {
        if ( j == N )
        {
            std::cout << std::endl;
            j = 0;
            k += N;
            num = k;
        }

        num += N;
        std::cout << std::setw( 2 ) << num << ' ';
        j++;
    }

    return 0;
}

例如,如果要将常量N初始化为6而不是5,则输出将如下所示

 6 12 18 24 30 36 
12 18 24 30 36 42 
18 24 30 36 42 48 
24 30 36 42 48 54 
30 36 42 48 54 60 
36 42 48 54 60 66 

您也可以结合上面显示的两种方法。这是一个演示程序,在程序中只使用一个循环。

#include <iostream>
#include <iomanip>

int main() 
{
    const int N = 5;
    const int Value = 10;

    for ( int i = 0; i < N * N; i++ )
    {
        std::cout << std::setw( 2 ) << Value * ( i / N + 1 + i % N );
        ( i + 1 ) % N == 0 ? std::cout << std::endl : std::cout << ' ';
    }

    return 0;
}

程序输出

10 20 30 40 50
20 30 40 50 60
30 40 50 60 70
40 50 60 70 80
50 60 70 80 90

您可以为常量NValue设置自己的值。