矩阵列镜像C中的重排

时间:2015-04-25 17:30:56

标签: c matrix

我必须首先插入行数和列数,然后插入元素并显示整个矩阵。之后,以镜像的方式排列列。例如: 如果矩阵有一行和五列,它应该如下所示:

Matrix 1 2 3 4 5应该变为5 4 3 2 1

同样的事情不止一行。

这是我到目前为止所做的:

#include <stdio.h>

void main()
{
    int m, n, i, j, matrix[10][10];
    printf("Insert the number of rows and columns:\n");
    scanf("%d%d", &m, &n);
    printf("Insert the desired elements:\n");
    for (i = 0; i < m; i++)
        for (j = 0; j < n; j++)
            scanf("%d", &matrix[i][j]);
    printf("Your matrix has the following elements:\n");
    for (i = 0; i < m; i++)
    {
        for (j = 0 ; j < n; j++)
        {
            printf("%d\t", matrix[i][j]);
        }
        printf("\n");
    }
}

如果有更好的方法,或者我做错了什么,请告诉我。

解决 添加了以下内容:

printf("Your new matrix has the following elements:\n");
for (i = m-1; i >= 0; i--)
    {
        for (j = n-1 ; j >= 0; j--)
    {
        printf("%d\t", matrix[i][j]);
    }
    printf("\n");
    }

感谢Jonathan Leffler的想法。

1 个答案:

答案 0 :(得分:1)

转移评论以回答。

你有一个适度的良好开端;现在你需要显示你的代码以相反的顺序打印数据 - 可能是通过向下计数而不是向上计数,至少在内循环中,可能在两个循环中。

您的数据输入代码应检查scanf()每次都是否成功,您应该检查mn是否大于10(或小于1,但是更少)危险;你只是在相关的循环中不做任何事情。)

错误:您正在计算1..m和1..n,但在C中,数组索引为0..m-1和0..n-1。