注册 登录
编程论坛 C++教室

新手刚学 C++ 求指教,这哪错了?

lumia610 发布于 2014-05-07 20:13, 532 次点击
#include<iostream>
using namespace std;
int main()
{
    int i,j,k,n;
    k=1;
    int a[100][100];
    for(i=1;i<=10;i=i+1)
    {
        for(j=1;j<10-i+1;j=j+1)
        {
            a[i+j-1][j]=k;
            k=k+1;
        }
    }
    for(i=1;i<=10;i++)
    {
        cout<<"\n";
        for(j=1;j<=i;j++)
            cout<<a[i][j];
    }   
    return 0;
}//目的是为了这样输出数,数一直不对啊。。我刚学也看不出来..
1
5 2
8 6 3
10 9 7 4
6 回复
#2
funyh2502014-05-07 22:30
int a[100][100]={0};  初始化为0

for(i=1;i<=10;i++)
    {
        cout<<"\n";
        for(j=1;j<=i;j++)
           {
               if(a[i][j]!=0)        我也不知道为什么会输出那么多,所以做了个判断
            cout<<a[i][j]<<" ";
               else break;
        }

    }


我也是初学者    互学
#3
rjsp2014-05-08 09:17
程序代码:
#include <cstdio>

int main()
{
    int a[100][100];

    const int n = 4;

    // 填充
    int k = 0;
    for( int i=0; i!=n; ++i )
        for( int j=0; i+j!=n; ++j )
            a[i+j][j] = ++k;

    // 输出
    for( int i=0; i!=n; ++i )
    {
        for( int j=0; j!=i; ++j )
            printf( "%d ", a[i][j] );
        printf( "%d\n", a[i][i] );
    }

    return 0;
}
#4
wp2319572014-05-08 10:14
回复 3 楼 rjsp
本来想把我的代码贴出来的

但是看了你的代码  我的太臃肿了
#5
wp2319572014-05-08 10:22
回复 3 楼 rjsp
我使用的是一维数组
相关代码
程序代码:

    printf("请输入待填充的行列数:\n");
    scanf("%d",&n);
    ptable=(int*)malloc(sizeof(int)*n*n);  //申请空间
    for(i=0;i<n*n;i++) *(ptable+i)=0;  //初始化
#6
rjsp2014-05-08 12:19
以下是引用wp231957在2014-5-8 10:14:40的发言:

本来想把我的代码贴出来的
 
但是看了你的代码  我的太臃肿了
我只是顺着楼主的思路写代码的,
若非如此,还可以更简单些,没必要分配内存,直接就是个等差数列求和公式

程序代码:
#include <cstdio>

int main()
{
    const int n = 4;

    // 输出
    for( int i=0; i!=n; ++i )
        for( int j=0; j<=i; ++j )
            printf( "%d%c", n*(1+n)/2-(n-i+j)*(1+n-i+j)/2+j+1, " \n"[j==i] );

    return 0;
}

#7
wp2319572014-05-08 12:28
以下是引用rjsp在2014-5-8 12:19:36的发言:

我只是顺着楼主的思路写代码的,
若非如此,还可以更简单些,没必要分配内存,直接就是个等差数列求和公式

#include <cstdio>

int main()
{
    const int n = 4;

    // 输出
    for( int i=0; i!=n; ++i )
        for( int j=0; j<=i; ++j )
            printf( "%d%c", n*(1+n)/2-(n-i+j)*(1+n-i+j)/2+j+1, " \n"[j==i] );

    return 0;
}


厉害  有空研究研究
这类题目我都是先填冲数组  比较麻烦
1