读书人

动态分配的二维数组以矩阵方式输出

发布时间: 2014-06-07 16:22:11 作者: rapoo

动态分配的二维数组以矩阵形式输出
麻烦帮我看下为什么这样不能以矩阵形式输出啊

/*#include <stdio.h>
#include <stdlib.h>
void main()
{
int n,i=0,j=0;
int **p;
printf("?????????:");
scanf("%d", &n);
p = (int**)calloc(n, sizeof(int*));


for (i = 0; i < n; i++)
{
p[i] = (int*)calloc(n + 1, sizeof(int));


for (j = 0; j < n; j++)
{
scanf("%d", &p[i][j]);

p[i][n] += p[i][j];
}
}

for (i = 0; i < n; i++)
{
for (j = 0; j < n+1 ; j++)
{
printf("%d ", p[i][j]);
}
}
}
C
[解决办法]

for (i = 0; i < n; i++)
{
for (j = 0; j < n+1 ; j++)
{
printf("%d ", p[i][j]);
}
printf("\n"); //这里必须要个的换行符呢!
} // 还有每次输入数据的时候,后面加个getchar()函数,吃掉每次输入的回车符!

[解决办法]

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{
int n,i=0,j=0;
int **p;
printf("?????????:");
scanf("%d", &n);
p = (int**)calloc(n, sizeof(int*));


for (i = 0; i < n; i++)
{
p[i] = (int*)calloc(n + 1, sizeof(int));


for (j = 0; j < n; j++)
{
scanf("%d", &p[i][j]);

p[i][n] += p[i][j];
}
}

for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
printf("%d ", p[i][j]);
}
printf("\n");
}

return 0;
}



引用:
麻烦帮我看下为什么这样不能以矩阵形式输出啊
/*#include <stdio.h>
#include <stdlib.h>
void main()
{
int n,i=0,j=0;
int **p;
printf("?????????:");
scanf("%d", &n);
p = (int**)calloc(n, sizeof(int*));


for (i = 0; i < n; i++)
{
p[i] = (int*)calloc(n + 1, sizeof(int));


for (j = 0; j < n; j++)
{
scanf("%d", &p[i][j]);

p[i][n] += p[i][j];
}
}

for (i = 0; i < n; i++)
{
for (j = 0; j < n+1 ; j++)
{
printf("%d ", p[i][j]);
}
}
}

[解决办法]
看到上边的人已经恢复得很完全了,要形成矩阵形式,至少要有相应的换行操作,还有,for (j = 0; j < n+1 ; j++),j的范围超了,竟然不发生越界错误。。。挺神奇的
[解决办法]


引用:
看到上边的人已经恢复得很完全了,要形成矩阵形式,至少要有相应的换行操作,还有,for (j = 0; j < n+1 ; j++),j的范围超了,竟然不发生越界错误。。。挺神奇的

他第二次分配内存空间的时候也有+1操作,所以不会

读书人网 >C++

热点推荐