lishidatang158 2013-07-10 03:03 采纳率: 0%
浏览 1898

以下两个C程序嵌套for循环中j=i是怎么遍历二维数组的?

#include
int main()
{
void change(int * p);
int a[5][5], * p, i, j;
printf("input matrix:\n");
for(i=0; i for(j=0; j scanf("%d",&a[i][j]);
p = &a[0][0];
change(p);
printf("Now,matrix:\n");
for(i=0; i {
for(j=0; j printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}
void change(int * p)
{
int i, j, temp;
int * pmax, * pmin;
pmax = p;
pmin = p;
for(i=0; i for(j=i; j {
if(* pmax pmax = p + 5 * i + j;
if((* pmin> *(p+5*i+j)))
pmin = p + 5 * i + j;
}

temp = * (p+12);
*(p+12) = * pmax;

  • pmax = temp; temp = * p;
  • p = * pmin;
  • pmin = temp; pmin = p + 1; for(i=0; i * (p+5*i+j))) pmin = p + 5 * i + j; temp = * pmin;
  • pmin = * (p+4);
  • (p+4) = temp; pmin = p + 1; for(i=0; i * (p+5*i+j))) pmin = p + 5 * i + j; temp = * pmin;
  • pmin = * (p+20);
  • (p+20) = temp; pmin = p +1; for(i=0; i * (p+5*i+j))) pmin = p + 5 * i + j; temp = * pmin;
  • pmin = * (p+24);
  • (p+24) = temp; } 在change函数一开始的两个嵌套for循环中,为什么设j=i?是怎么遍历这个二维数组的?我自己设j=0,也能得到正确答案!

#include
int main()
{
void move(int * pointer);
int a[3][3], * p, i;
printf("input matrix:\n");
for(i=0; i<3; i++)
scanf("%d %d %d",&a[i][0],&a[i][1],&a[i][2]);
p = &a[0][0];
move(p);
printf("Now,matrix:\n");
for(i=0; i<3; i++)
printf("%d %d %d\n",a[i][0],a[i][1],a[i][2]);
return 0;
}
void move(int * pointer)
{
int i, j, t;
for(i=0; i<3; i++)
for(j=i; j<3; j++)
{
t = * (pointer+3*i+j);

  • (pointer+3*i+j) = * (pointer+3*j+i);
  • (pointer+3*j+i) = t; } } 在这个程序的move函数中,如果把嵌套的for循环中的j=i改为j=0,就得不到正确的答案了!
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 自动转发微信群信息到另外一个微信群
    • ¥15 outlook无法配置成功
    • ¥30 这是哪个作者做的宝宝起名网站
    • ¥60 版本过低apk如何修改可以兼容新的安卓系统
    • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
    • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
    • ¥50 有数据,怎么用matlab求全要素生产率
    • ¥15 TI的insta-spin例程
    • ¥15 完成下列问题完成下列问题
    • ¥15 C#算法问题, 不知道怎么处理这个数据的转换