二维数组矩阵的转置
1,先用超定来确定数组的内容
#define N 10
int a[N][N],n;
for("请输入矩阵的大小\n");
int i,j;
//下面就是输入数组的内容
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
但是超定方法的空间利用率不高
2,把数据进行交换
就类似于把
123
456
789
变成
147
258
369
所以用到双重循环
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
{
a[i][j]^=a[j][i];
a[j][j]^=a[i][j];
a[i][j]^=a[j][i];
}
}
蛇形矩阵
输入行数n和列数m(m,n<10)生成蛇形矩阵
因为通项公式难找,所以用填数字的方式来生成蛇形矩阵
#define N 10
#define M 10
int a[N][M];
int n,m;
int t=1;//这个就是要填进去的数字
printf("请输入蛇形矩阵的行和列\n");
scanf("%d%d",&n,&m);
//外面一层循环来控制行数//
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
a[i][j]=t++;
}
//填完一行之后,因为是蛇形矩阵,所以下一行不是从左向右//
//还要判断一下数据没有有溢出//
if(i>=m) break;
i++;
for(j=m-1;i>=0;j--)
{
a[i][j]=t++;
}
}