# include
int main(void)
{
int i, j, m, n, a[100][100];
printf("please input the two-dimensional of rows and columns: ");
scanf("%d %d", &m, &n);
printf("please input the two-dimensional of array elements: ");
for (i = 0; i < m; ++i)
{
for (j = 0; j < n; ++j)
{
scanf("%d", &a[i][j]);
}
}
printf("\n");
int *p;
p = a[0];
for (; p < a[0] + m*100; ++p) //注意指针范围
{
if((p-a[0])%100printf("%4d", *p);
if((p-a[0])%100==n)
printf("\n");
}
printf("\n");
return 0;
}
注释部分有改动,测试结果:
出现这个问题的主要原因是因为你申请的数组是100*100的,这些是按行存储的;而你输入的m*n数组是在大数组的左上角,不是连续的空间,所以你按照连续空间访问肯定是有问题的。得用上面的取余方式访问。
问题出在输出部分:p=a[0];,p是指向整型数据的,而a[0]是指向100个单元的整型数值的(a数值的第0行),建议输出部分这样写:
for ( i=0;i