一维数组的倒序输出 我能做出来
有2种方法
第一种是用循环把数组的下标控制从下标大的开始输出(比较简单)
第二种是把数组元素换位。
在一维的基础上我用第二种方法把二维数组也倒着输出 却只能对几个数组起作用可以达到要求
我知道毛病出在哪 但是不知道怎么控制
程序在下面
我定义的是3*3的数组 如果把M和N的值换成其他的 则有的可以有的不行
#include<stdio.h>
#define N 3
#define M 3
void main()
{
int a[N][M],i,j,t;
printf("请输入数据:\n");
for(i=0;i<N;i++)
for(j=0;j<M;j++)
scanf("%d",&a[i][j]); //数组录入
printf("原数组:\n");
for(i=0;i<N;i++)
{
printf("\n");
for(j=0;j<M;j++)
printf("%3d",a[i][j]);
}
printf("\n"); //数组原样输出
for(i=0;i<=N-2;i++) /*问题在这里 i应该怎么样用 N和M控制 ?i<=N-2 和j<M-i不适应所有长度的数组
可不可以改一下 当M和N取不同值时候 都可以进行倒序互换?*/
for(j=0;j<M-i;j++)
{
t=a[i][j];
a[i][j]=a[N-i-1][M-j-1];
a[N-i-1][M-j-1]=t;
}
printf("逆序数组:\n"); //输出逆序数组
for(i=0;i<N;i++)
{
printf("\n");
for(j=0;j<M;j++)
printf("%3d",a[i][j]);
}
printf("\n");
}