c语言 二维数组a [ 5 ] [ 5 ] 如何通过指针交换第二行和第三行??

 我来答
huangxinzbz
推荐于2018-04-05 · TA获得超过589个赞
知道小有建树答主
回答量:266
采纳率:100%
帮助的人:337万
展开全部
void main(void)
{
int a[5][5] = {{0,1,2,3,4}, \
{5,6,7,8,9}, \
{10,11,12,13,14},\
{15,16,17,18,19},\
{20,21,22,23,24}};

int (*p)[5] = a;/*数组指针p*/
int i, j;

/*交换第二行和第三行*/
for(i=0;i<5;i++)
{
j=*(p[1]+i);
*(p[1]+i)=*(p[2]+i);
*(p[2]+i)=j;
}

/*输出*/
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}

/*getch();*/
}
w3180121
2015-12-15 · 知道合伙人数码行家
w3180121
知道合伙人数码行家
采纳数:793 获赞数:2403
单片机 C语言 电脑 液晶 没有 证书 我们只是一个团队

向TA提问 私信TA
展开全部
#include<stdio.h>
#include<string.h>
int s[1000][1000];
int n,m,i,j,k,temp;
int a,b;
int main()
{
printf("输入行列:");
scanf("%d %d",&n,&m); //二维数组的行数n,列数m

for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",s[i]+j); //得到二维数组
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%d",s[i][j]); //输出交换后的数组
printf("\n");
}

printf("输入需要交换的行:");
scanf("%d %d",&a,&b); //二维数组的行数n,列数m

for(j=0;j<m;j++)
{ //交换第三行和第五行的数
temp=s[a][j];
s[a][j]=s[b][j];
s[b][j]=temp;
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%d",s[i][j]); //输出交换后的数组
printf("\n");
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
种烧饼的怪叔叔
2015-12-15 · TA获得超过2214个赞
知道小有建树答主
回答量:824
采纳率:65%
帮助的人:450万
展开全部
如果是char类型 的用strcpy函数交换,如果是非char类型的只能一个个交换了
追问
就是数字类型的      具体怎么写呢?
追答
#define L 10                      共10列
#define H 10 每行10个
那么数组就是array [L][H]
创建两个指针分别指向第二行第一个元素和第三行第一个元素
int *p1=array[1];
int*p2=array[2];
第二行和第三行交换就是
for (i=0;i<H;i++)
{array [1] [i]和array [2][i]进行交换}
/*把第二行第i(i=0,1,2,3)个元素和第三行第i个元素交换,如果要用指针的话可以 写成*(p1+i);等同于array [1] [i],而*(p2+i);等同于array [2][i],两者的值进行交换*/
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式