我想知道C语言中二维数组怎么交换。
我想知道C语言中二维数组怎么交换。悬赏分:200-解决时间:2010-4-1103:18举个例子a[2][2]={1,2,3,4}我如果想把它变成a[2][2]={3,4...
我想知道C语言中二维数组怎么交换。
悬赏分:200 - 解决时间:2010-4-11 03:18
举个例子
a[2][2]={1,2,3,4}
我如果想把它变成a[2][2]={3,4,1,2}
需要这么做?
可不可以通过指针实现?
主要是可不可以用指针实现? 展开
悬赏分:200 - 解决时间:2010-4-11 03:18
举个例子
a[2][2]={1,2,3,4}
我如果想把它变成a[2][2]={3,4,1,2}
需要这么做?
可不可以通过指针实现?
主要是可不可以用指针实现? 展开
6个回答
展开全部
以下程序使用指针实现,而且不只针对a[2][2]这样的数组,可以针对a[3][2],或者a[4][2]...a[n][2]或者a[n][m]这样任意数组的交换。
void main()
{
int a[2][2]={1,2,3,4};
int (*p)[2]=a;
int b;
int n=2; //行数
int m=2; //列数
for(int j=n-1,k=0;j>0;j--,k++)
for(int i=0;i<m;i++)
{b=*(p[j]+i);
*(p[j]+i)=*(p[k]+i);
*(p[k]+i)=b;
}
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cout<<p[i][j]<<endl;
system("pause");
}
void main()
{
int a[2][2]={1,2,3,4};
int (*p)[2]=a;
int b;
int n=2; //行数
int m=2; //列数
for(int j=n-1,k=0;j>0;j--,k++)
for(int i=0;i<m;i++)
{b=*(p[j]+i);
*(p[j]+i)=*(p[k]+i);
*(p[k]+i)=b;
}
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cout<<p[i][j]<<endl;
system("pause");
}
展开全部
需要一个变量放置临时中转数据。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
void main()
{
int i,j,temp;
int a[2][2]={1,2,3,4};
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
for(i=0;i<1;i++)
{
for(j=0;j<2;j++)
{
temp=a[i][j];
a[i][j]=a[i+1][j];
a[i+1][j]=temp;
}
}
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
}
这个主要是按照你要求的来转换,也就是把第二行的数据跟第一行的交换,所以采取的是这种算法,其实基本思路都差不多,只要摸清楚了要实现功能的规律就好,一般用于数据交换通常要用一个中间变量来搭桥。也就是这三行
temp=a[i][j];
a[i][j]=a[i+1][j];
a[i+1][j]=temp;
void main()
{
int i,j,temp;
int a[2][2]={1,2,3,4};
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
for(i=0;i<1;i++)
{
for(j=0;j<2;j++)
{
temp=a[i][j];
a[i][j]=a[i+1][j];
a[i+1][j]=temp;
}
}
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
}
这个主要是按照你要求的来转换,也就是把第二行的数据跟第一行的交换,所以采取的是这种算法,其实基本思路都差不多,只要摸清楚了要实现功能的规律就好,一般用于数据交换通常要用一个中间变量来搭桥。也就是这三行
temp=a[i][j];
a[i][j]=a[i+1][j];
a[i+1][j]=temp;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以用指针实现,代码如下:
#include<stdio.h>
int main()
{
int t,a[2][2]={{1,2},{3,4}},(*p)[2],i,j;
p=a;
t=*(*(p)+0);*(*(p)+0)=*(*(p+1)+0);*(*(p+1)+0)=t;
p=a;
t=*(*(p)+1);*(*(p)+1)=*(*(p+1)+1);*(*(p+1)+1)=t;
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
}
刚刚有点问题,稍微改了下。。。
#include<stdio.h>
int main()
{
int t,a[2][2]={{1,2},{3,4}},(*p)[2],i,j;
p=a;
t=*(*(p)+0);*(*(p)+0)=*(*(p+1)+0);*(*(p+1)+0)=t;
p=a;
t=*(*(p)+1);*(*(p)+1)=*(*(p+1)+1);*(*(p+1)+1)=t;
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
}
刚刚有点问题,稍微改了下。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当然可以用指针实现,指针是操作数组的最基本的方法
#include <iostream>
void swap(int *x, int *y)
{
int tmp;
tmp = *x;
*x = *y;
*y = tmp;
}
int main()
{
using namespace std;
int a[2][2] = {1, 2, 3, 4};
cout << a[0][0] << a[0][1] << a[1][0] << a[1][1] << endl;
int (*p)[2] = 0;
p = a;
swap(*p, *(p + 1));
swap(*p + 1, *(p + 1) + 1);
cout << a[0][0] << a[0][1] << a[1][0] << a[1][1] << endl;
return 0;
};
VS2008 编译通过
#include <iostream>
void swap(int *x, int *y)
{
int tmp;
tmp = *x;
*x = *y;
*y = tmp;
}
int main()
{
using namespace std;
int a[2][2] = {1, 2, 3, 4};
cout << a[0][0] << a[0][1] << a[1][0] << a[1][1] << endl;
int (*p)[2] = 0;
p = a;
swap(*p, *(p + 1));
swap(*p + 1, *(p + 1) + 1);
cout << a[0][0] << a[0][1] << a[1][0] << a[1][1] << endl;
return 0;
};
VS2008 编译通过
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这么多朋友帮助你,你快点吧,等啥呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询