int t,i,j,r[3][3]={{1,2,3},{7,8,9}};
for(i=0;i<2;i++)
{
for(j=i;j<3;j++)
{
t=r[i][j];
r[i][j]=r[j][i];
r[j][i]=t;
}
}
for(i=0;i<3;i++)
{ for(j=0;j<2;j++)
printf("%d ",r[i][j]);
printf("\n");
}
问题:明明是两行三列,为什么定义时候确实[3][3]
还有for循环遍历的时候不是i<=行数-1,j<=列数-1么?
二维数组 矩阵互换..着急中...
答案:2 悬赏:70 手机版
解决时间 2021-03-16 12:11
- 提问者网友:了了无期
- 2021-03-15 22:48
最佳答案
- 五星知识达人网友:鱼芗
- 2021-03-15 22:59
因为[2][3]转换后是[3][2]..定义[3][3]才能满足要求..
用[2][3]的放转换后会内存出错..
i<=行数-1,j<=列数-1 也是对的..不过用的<=..
而上面的代码用是<所以是i<行数..j<列数...
用[2][3]的放转换后会内存出错..
i<=行数-1,j<=列数-1 也是对的..不过用的<=..
而上面的代码用是<所以是i<行数..j<列数...
全部回答
- 1楼网友:西风乍起
- 2021-03-15 23:08
#include<stdio.h>
#include <time.h>
#define n 3
#define m 4
int main()
{
int i,j,max,s,t,a[n][m];
srand(time(0));
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
a[i][j]=10+rand()%89;
}
}
max = a[0][0];
s = t = 0;
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
if(max < a[i][j])
{
max = a[i][j];
s = i;
t = j;
}
printf("%d ",a[i][j]);
}
printf("\n");
}
printf("最大值是:%d ,所在位置是第%d行第%d列\n",max,s+1,t+1);
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯