如何创建这个矩阵? C

时间:2014-04-13 05:30:00

标签: c matrix

我想制作矩阵:

0 0 0 0 0 1
0 0 0 0 0 1
0 0 0 0 0 1
0 0 0 0 0 1
1 1 1 1 1 0

但它显示:

0 0 0 0 0 1
0 0 0 0 0 1
0 0 0 0 0 1
0 0 0 0 0 1
0 0 0 0 0 0

我到目前为止的代码是:

#include <stdio.h>
#include <stdlib.h>

void graphS()
{
    int i,j,k,n,x[10][10];
    printf("S");scanf("%d",&k);
    n=k+1;

    for(i=1;i<n;i++)
    {
        for(j=1;j<n;j++)
        {
            x[i][j]=0;
            x[i][n-1]=1;
            if(i==j) 
                x[i][j]=0;
            printf("%d\t",x[i][j]);
        }
        printf("\n");
    }
}

int main()
{
    graphS();
    return 0;
}

5 个答案:

答案 0 :(得分:1)

你只需要这样做:(如果不是其他条件)

for(i=1;i<n;i++)
{
    for(j=1;j<n;j++)
    {
        x[i][j]=0;
        x[i][n-1]=1;
        x[n-1][j]=1;//This is the line you need
        if(i==j)
            x[i][j]=0;
        printf("%d\t",x[i][j]);
    }
    printf("\n");
}

答案 1 :(得分:0)

在以下行之后 -

for(j=1;j<n;j++){

添加 -

if (j==n-1)
x[i][j] = 1

答案 2 :(得分:0)

添加:

if (i == n-1) x[i][j] = (j == n-1) ? 0 : 1;

所以:

#include <stdio.h>
    #include <stdlib.h>

    void graphS(){
        int i,j,k,n,x[10][10];
        printf("S");scanf("%d",&k);
        n=k+1;
        for(i=1;i<n;i++){
            for(j=1;j<n;j++){
                x[i][j]=0;
                x[i][n-1]=1;
                if(i==j) x[i][j]=0;
                if (i == n-1) x[i][j] = (j == n-1) ? 0 : 1; //Added
                printf("%d\t",x[i][j]);
            }
            printf("\n");
        }
    }
    int main()
    {
        graphS();
        return 0;
    }

答案 3 :(得分:0)

我修改了一下

#include <stdio.h>
#include <stdlib.h>

void graphS(){
    int i,j,k,n,x[10][10];
    printf("S");
    scanf("%d",&k);
    //n=k+1;
    for(i=1;i<=k;i++)
    {
        for(j=1;j<=k;j++)
        {
            x[i][j]=0;
            x[i][k]=1;
            if(i==k)
            {
                x[i][j]=1;
                x[i][k]=0;
            }
            printf("%d\t",x[i][j]);
        }
        printf("\n");
    }
}
int main()
{
    graphS();
    return 0;
}

答案 4 :(得分:0)

请用这些循环替换。

for(i=1;i<n;i++){
        for(j=1;j<n;j++){
            if( (i==n-1 && i!=j) || (j==n-1 && i!=j) ) x[i][j] = 1;
            else x[i][j] = 0;
            printf("%d\t",x[i][j]);
        }
        printf("\n");
    }

在你的代码中你只分配1到x [i] [n-1]而不是x [j] [n-1]

所以这会导致输出出错。您可以使用我的修改或使用您的代码,但添加代码段x [j] [n-1] = 1。