C-如何将数字移动到矩阵中的其他位置

时间:2018-12-21 15:26:30

标签: c arrays function matrix

这就是我写的

int n=0,i=0,j=0,k=0,s=0,a=0,b=0;
int blk[n][n];

printf("how many blocks?\n");
scanf ("%d", &n);
printf("\n");

for(i=0;i<n;i++){
    blk[i][j]=k;
    printf("%d: %d\t  ",k, blk[i][j]);
    k++;
    printf("\n");
}

应该看起来像这样

0:0

1:1

2:2

...

8:8

9:9

用户然后拥有一组命令,这些命令可以通过函数以不同方式移动数字 我的问题是我不知道如何移动数字,例如这样

0:0

1:1 9

2:2

...

8:8

9:

第一个命令将“ a”放在b之上(所以9在1之上)

第一个数字是位置(#:),前面的数字是矩阵的起始位置

2 个答案:

答案 0 :(得分:3)

像这样阅读n之后,应该已经声明了blocks变量。

您还忘记了第二个for循环。

int n=0,i=0,j=0,k=0,s=0,a=0,b=0;

printf("Enter the numember of blocks desired\n");
scanf ("%d", &n);
printf("\n");

int blocks[n][n];

for(i = 0; i < n; i++){
    for (j = 0; j < n; j++){
        blocks[i][j]=k;
        printf("%d: %d\t  ",k, blocks[i][j]);
        k++;
        printf("\n");
    }
}

答案 1 :(得分:1)

您似乎正在描述一个NxN矩阵。对于N == 10,并初始化为零,它在概念上可能看起来像这样:

enter image description here

然后,您描述要移动一个数字。例如,将值放置到特定位置,例如将55放置到matrix[3][3]中。牢记从零开始的索引系统,矩阵现在看起来像:

enter image description here

可以执行以下操作的步骤:

步骤:
0)使用命令行值调用程序以求矩阵顺序。
1)使用在命令行上输入的值创建nxn表。
2)提示用户输入位置以及要放置或退出的值。
3)清除以前的内容。
4)放置新值。
5)转到第2步。

实施示例:

int main(int argc, char *argv[])
{
    int x = 0, y = 0;
    int value = 0;
    if(argc != 2) 
    {
        printf("Usage: %s <integer value for order>\n Exiting", argv[0]);
        getchar();
        return 0;
    }
    int order = atoi(argv[1]);

    int matrix[order][order];

    int exit = 'x';

    while(exit != 'q')
    {
        printf("Enter 3 space delimited digits with values from 0 to %d.\n\n", order-1);
        scanf(" %d %d %d", &x, &y, &value);
        memset(matrix, 0, x*y*sizeof(int));
        matrix[x][y] = value;
        for(int i=0;i<order;i++)
        {
            for(int j=0;j<order;j++)
            {
                if((i==x) && (j==y)) 
                {
                    printf("%3d", value);
                    if(j == order-1)printf("\n");
                }
                else
                {
                    printf("%3d", 0);
                    if(j == order-1)printf("\n");
                }
            }
        }
        printf("\nHit 'q' to quit, any other key to continue");
        exit = getchar();
    }


    return 0;
}

对于order == 10矩阵,已针对以下xyvalue命令行条目进行了测试:

0 0 990 9 999 0 999 9 99

enter image description here