求大牛相助!!!
#include<stdio.h>
int main()
{
int a[1000][1000],n,i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
a[j][i]=a[i][j];
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d",a[j][i]);
}
printf("\n");
}
}
矩阵转置,怎么编译没错,执行就有问题???
[解决办法]
int a[1000][1000]分配的数组太大了
int a[100][100]
int a[1000][1000]
#include<stdio.h>
int main()
{
int tmp; //添加一个中间变量
int a[1000][1000],n,i,j;
scanf("%d",&n); //矩阵的行数和列数
//初始化矩阵
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
//对矩阵进行转置操作
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{ //通过中间变量实现位置的转换
tmp = a[j][i];
a[j][i] = a[i][j];
a[i][j] = tmp;
}
}
//显示转置后的矩阵
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d",a[j][i]);
}
printf("\n");
}
return 0;
}
{
a[j][i]=a[i][j];
}也写错了//在堆中开辟一个4×5的二维int数组
#include <stdio.h>
#include <malloc.h>
int **p;
int i,j;
void main() {
p=(int **)malloc(4*sizeof(int *));
if (NULL==p) return;
for (i=0;i<4;i++) {
p[i]=(int *)malloc(5*sizeof(int));
if (NULL==p[i]) return;
}
for (i=0;i<4;i++) {
for (j=0;j<5;j++) {
p[i][j]=i*5+j;
}
}
for (i=0;i<4;i++) {
for (j=0;j<5;j++) {
printf(" %2d",p[i][j]);
}
printf("\n");
}
for (i=0;i<4;i++) {
free(p[i]);
}
free(p);
}
// 0 1 2 3 4
// 5 6 7 8 9
// 10 11 12 13 14
// 15 16 17 18 19