下面的程序能实现把a数组的行列互换,并赋值给b数组。输出a数组,以及b数组。
创新互联公司-专业网站定制、快速模板网站建设、高性价比桂东网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式桂东网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖桂东地区。费用合理售后完善,十余年实体公司更值得信赖。
#includestdio.h
#includestdlib.h
int main()
{
int a[2][3]={{15,20,30},{45,50,60}};
int b[3][2];
int i;
int j;
printf("array a is:\n");
for(i=0;i2;i++)
{
for(j=0;j3;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
for(i=0;i2;i++)
{
for(j=0;j3;j++)
{
b[j][i]=a[i][j];
}
}
printf("array b is:\n");
for(i=0;i3;i++)
{
for(j=0;j2;j++)
{
printf("%d ",b[i][j]);
}
printf("\n");
}
return 0;
}
可以自己运行一下,就看到结果了,a数组的行列互换。
#include iostream
#include algorithm
void crswap(int* beg, int x)
{
for(int i = 0; i x-1; ++i)
{
int* p = beg + i*(x+1);
for(int j = 1; j x-i; ++j)
{
std::swap(*(p+j), *(p+j*(x-i-1)+(i+1)*j));
}
}
}
void print(int* beg, int x)
{
int* p = beg, i = 1;
while(p != beg + x*x)
{
std::cout *p++ ' ';
if(p == beg + i*x)
{
++i;
std::cout '\n';
}
}
std::cout std::endl;
}
int main()
{
const int X = 5;
int a[X][X] =
{
1,2,3,4,5,
5,4,3,2,1,
1,3,5,7,9,
0,2,4,6,8,
1,5,7,9,3
};
int* beg = reinterpret_castint*(a);
print(beg, X);
crswap(beg, X);
print(beg, X);
}
test:
1 2 3 4 5
5 4 3 2 1
1 3 5 7 9
0 2 4 6 8
1 5 7 9 3
1 5 1 0 1
2 4 3 2 5
3 3 5 4 7
4 2 7 6 9
5 1 9 8 3
若原来的数组是a(i,j)
则定义一个新数组b(l,m)
for l=0 to j
for m=0 to i
b(l,m)=a(m,l)
next
next
Dim i, x, arr()
arr = Array(70, 56, 80, 88, 99, 100, 67, 82, 93, 77)
MsgBox "互换前:" Join(arr, ", ")
For i = 0 To 4
x = arr(i)
arr(i) = arr(i + 5)
arr(i + 5) = x
Next
MsgBox "互换后:" Join(arr, ", ")
以上代码是进行平移互换的(1跟6换……5跟10换),如果是对称互换的(1跟10换……5跟6换),则只需把两个 i + 5 改为 9 - i 即可。