来试试,看你的答案是什么?
#include<stdio.h>
void main(){
int x[4][4]={{1,2,3,4},{3,4,5,6},{5,6,7,8},{7,8,9,10}};
int i,j;
for(i=0;i<4;i++){
for(j=0;j<4;j++){
*(*(x+i)+j)/=*(*(x+i)+i);
}
}
for(i=0;i<4;i++){
for(j=0;j<4;j++){
printf("%3d",*(*(x+i)+j));
}
printf("\n");
}
}
做了这题有一天了,今天又做到一个一模一样的题,谁知道是第一次的答案错了,一直把我往深渊里带。我一直得出的结果的
1 2 3 4
0 1 1 1
0 0 1 1
0 0 0 1
你知道我怎么错了吗?
实际上输出的结果是:
我想了很久都没想出来是哪里的问题,于是我就采用测试的方法:
#include<stdio.h>
void main(){
int x[4][4]={{1,2,3,4},{3,4,5,6},{5,6,7,8},{7,8,9,10}};
int i,j;
for(i=0;i<4;i++){
for(j=0;j<4;j++){
printf("%d",*(*(x+i)+j));
putchar('\n');
*(*(x+i)+j)/=*(*(x+i)+i);
printf("%d,%d",*(*(x+i)+j),*(*(x+i)+i));
putchar('\n');
}
}
for(i=0;i<4;i++){
for(j=0;j<4;j++){
printf("%3d",*(*(x+i)+j));
}
printf("\n");
}
}
不难看出,在计算的过程中,二维数组的值已经发生改变了!!!所以在做题的时候一定要小心。