引用 | 编辑
GNUGCC
2007-06-17 13:55 |
3楼
▲ ▼ |
指标在处理阵列时要非常的小心, 在复杂度上也有一些挑战性...
下面是一个范例 : for ( int i = 0; i < 3; i++ ) { for ( int j = 0; j < 5; j++ ) cout << *(*(array + i) + j); cout << endl; } x0 |
引用 | 编辑
karen7710
2007-06-17 21:22 |
4楼
▲ ▼ |
以下是在网路上找到的程式,要如何改成.c档可以用的程式?
复制程式 #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { int array[3][5]={{2,3,4,5,6},{7,8,9,10,11},{12,13,14,15}}; int *ptr=array[0]; for(int i=0;i<3;i++) for(int j=0;j<5;j++) cout<<"array["<<i<<"]["<<j<<"]= "<<*(ptr+i*5+j)<<endl; system("PAUSE"); return EXIT_SUCCESS; } x0 |
引用 | 编辑
gamewalk
2007-06-17 22:58 |
5楼
▲ ▼ |
.c档的话...不要用using namspace 还有include都要改掉 若要列印的话改成用printf , 还有把for里面的int i , int j 放在外面宣告试试....
x0 |
引用 | 编辑
karen7710
2007-06-18 08:37 |
6楼
▲ ▼ |
以下的程式都无法跑东西出来!
复制程式 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { int array[3][5]={{2,3,4,5,6},{7,8,9,10,11},{12,13,14,15}}; int *ptr=array[0]; int i,j; for(i=0;i<3;i++) for(j=0;j<5;j++) printf("%s",array[i][j]); system("pause"); return 0; } x0 |
引用 | 编辑
gamewalk
2007-06-18 08:55 |
7楼
▲ ▼ |
你要列印的应该是数字吧...为什么你用%s , 还有既然是说了要用指位器array[ i ][ j ] 这边应该改成GNUGCC大大的方法 *(*(array + i) + j) 或者你自己找的 *(ptr+i*5+j) 这样比较符合题目吧....
x0 |
引用 | 编辑
karen7710
2007-06-18 10:34 |
8楼
▲ ▼ |
可以执行出来了,可是最后会多印一个0,要怎么解决呢?
复制程式 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { int array[3][5]={{2,3,4,5,6},{7,8,9,10,11},{12,13,14,15}}; int *ptr=array[0]; int i,j; for(i=0;i<3;i++) for(j=0;j<5;j++) printf(" %d", *(*(array + i) + j)); system("pause"); return 0; } x0 |
引用 | 编辑
GNUGCC
2007-06-18 13:20 |
9楼
▲ ▼ |
int array[3][5]={{2,3,4,5,6},{7,8,9,10,11},{12,13,14,15}};
在第 3 个只有放 4 个变数所以最后一个会被设为 0... 你只要在那里加一个数字就可以了...^^ x0 |
引用 | 编辑
karen7710
2007-06-18 16:03 |
11楼
▲ ▼ |
我多用一个数字,最后在用\b把它删掉,这样可以吧?
复制程式 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { int array[3][5]={{2,3,4,5,6},{7,8,9,10,11},{12,13,14,15,1}}; int *ptr=array[0]; int i,j; for(i=0;i<3;i++) for(j=0;j<5;j++) printf(" %d", *(*(array + i) + j)); printf("\b"); system("pause"); return 0; } x0 |
引用 | 编辑
GNUGCC
2007-06-18 16:16 |
12楼
▲ ▼ |
即然题目这样的话那就用另外一种方法...
你可以判断是否 > 0 再做输出 : if ( *(*(array + i) + j ) > 0 ) cout << *(*(array + i) + j); 不过照常理来看的话宣告一个二维阵列通常里面会放入刚好的数值在里面... 假如不够的话系统会自动设为 0 所以会印出 0... x1 |