我必须首先插入行数和列数,然后插入元素并显示整个矩阵。之后,以镜像的方式排列列。例如: 如果矩阵有一行和五列,它应该如下所示:
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的想法。
答案 0 :(得分:1)
转移评论以回答。
你有一个适度的良好开端;现在你需要显示你的代码以相反的顺序打印数据 - 可能是通过向下计数而不是向上计数,至少在内循环中,可能在两个循环中。
您的数据输入代码应检查scanf()
每次都是否成功,您应该检查m
和n
是否大于10(或小于1,但是更少)危险;你只是在相关的循环中不做任何事情。)
错误:您正在计算1..m和1..n,但在C中,数组索引为0..m-1和0..n-1。