用c ++编写一个程序,输出如下矩阵

时间:2015-03-02 19:57:44

标签: c++

这是它看起来的样子,但是我的另一面已经开启了

00001
00021
00321
04321
54321

如果可以,请向我解释。

它说我必须添加更多细节,所以我写这个不知道是为了什么。

#include<iostream>
#include<time.h>
#include<stdlib.h>
using namespace std;

int main()
{
    int t=0,n,tab[100][100]={0},k,j,a;
    cin>>n;

    for(int i=0;i<n;i++)
    {
        k=i;
        for(int j=0;j<n;j++)
        {
            if(j<=i)
                tab[i][j]=k+1;

            k--;
        }
    }

    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
            cout<<tab[i][j]<<"   ";

        cout<<endl;
    }

    return 0;
}

1 个答案:

答案 0 :(得分:0)

以下是两种方法:一种使用标准算法和函数

#include <iostream>
#include <numeric>
#include <iterator>


int main() 
{
    const size_t N = 5;
    int a[N][N] = {};

    for ( size_t i = 0; i < N; i++ )
    {
        std::iota( std::reverse_iterator<int *>( a[i] + N ), 
                   std::next( std::reverse_iterator<int *>( a[i] + N ), i + 1 ), 
                   1 );
    }

    for ( const auto &row : a )
    {
        for ( int x : row ) std::cout << x << ' ';
        std::cout << std::endl;
    }

    return 0;
}

和其他只使用循环的

#include <iostream>


int main() 
{
    const size_t N = 5;
    int a[N][N] = {};

    for ( size_t i = 0; i < N; i++ )
    {
        for ( size_t j = 1; j <= i + 1; ++j ) a[i][N - j] = j;
    }

    for ( const auto &row : a )
    {
        for ( int x : row ) std::cout << x << ' ';
        std::cout << std::endl;
    }

    return 0;
}

两个节目输出都是

0 0 0 0 1 
0 0 0 2 1 
0 0 3 2 1 
0 4 3 2 1 
5 4 3 2 1